Содержание
Как iOS 15 сломала авторизацию на два месяца. Хронология и лечение от СберМаркета / Хабр
После выхода новой iOS 15.0 пользователей СберМаркета выкидывало из приложения после блокировки телефона. Бэкенд возвращал ошибку 403 — «пользователь не авторизован». На поиск причины ушло два месяца.
Евгений Рядовой и Дмитрий Шлюгаев из команды разработки рассказали, как искали ошибку и почему это было так трудно.
В сентябре 2021 года клиенты СберМаркет стали жаловаться на неожиданные разлогины. Например, человек собирал корзину товаров в приложении и на 15 минут оставлял телефон. После разблокировки корзина пропадала и приложение требовало авторизацию. Нужно было понять, когда и почему появляется этот баг.
До первых сообщений о разлогинах произошло два события: Apple выпустила iOS 15.0 и наши разработчики обновили модуль старта приложения. Сначала мы решили, что проблема появилась как раз из-за нарушения API-контракта с бэкендом, потому что ошибки были и на Android, и на iOS.
Через логи мы нашли проблему в методах API, которые использовали для запроса к серверу. Их исправили, и к концу сентября баги с авторизацией на Android сократились до уровня статистической погрешности.
В 20-х числах сентября проблема появилась снова, но уже на iOS. Ребята из команды стали искать решение на официальном форуме разработчиков Apple. Там было несколько постов с похожей проблемой, но технические специалисты Apple на них не отвечали. Максимум — отсылали в документацию по новой версии iOS. Стало понятно, что искать решение надо самим.
Одна из веток с описанием похожей проблемы на форуме Apple
Проблемы с API решили ещё в сентябре, поэтому тестировщики СберМаркета повторяли сценарий пользователей. Собирали корзину, оставляли смартфон на полчаса-час и затем снова запускали приложение. Баг возникал абсолютно непредсказуемо и не каждый раз.
Примерно через неделю тестов тестировщики заметили закономерность в логах:
- сначала шла пачка запросов к серверу в период, когда приложение использовали;
- затем несколько отдельных запросов в то время, когда устройство было заблокировано;
- и снова пачка запросов, когда приложение запустили повторно.
В логах видно, что приложение отправило запрос к серверу и получило в ответ ошибку
Было непонятно, почему запросы уходят с заблокированного устройства, ведь приложение не поддерживает бэкграунд-режим.
В приложении СберМаркета пользователи логинятся с помощью приватного токена. Он хранится в Keychain, доступ к которому ограничен политиками безопасности. Они максимально строгие: токены доступны только на разблокированном устройстве и только когда приложение активно.
По какой-то причине приложение отправляло запрос к серверу на заблокированном устройстве и пыталось получить токены из Keychain. Из-за настроек Keychain сервер не отдавал токен и затирал его как непригодный. Когда пользователь включал приложение, сервер получал пустой токен и возвращал ошибку авторизации 403.
Мы быстро выпустили хотфикс: временно ослабили настройки безопасности, чтобы токен не затирался после первого запроса в бэкграунде. Это помогло быстро избавить пользователей от бага. Но остался главный вопрос: почему приложение отправляло запросы при блокированном телефоне?
Через два месяца после релиза iOS 15.0 на форумах и в документации появилось сообщение о новой фиче — прогреве приложения в бэкграунде.
Из описания в документации непонятно, как работает фича. Чтобы приложение быстрее запускалось, ОС стартует его в бэкграунде. Но при каких условиях это происходит, не описано
Если коротко, iOS отслеживает, как часто пользователь запускает то или иное приложение. Она может предварительно выполнить код приложения до вызова UIApplicationMain(), чтобы сократить время старта. Это происходит независимо от того, заблокирован экран устройства или нет. Как именно работает прогрев, описал Филипп Красновид на Medium.
Мы поняли, почему пользователи вылетали из приложения СберМаркета. Запрос токена находился в самом начале кода, до вызова UIApplicationMain(). iOS запускала прогрев, и приложение пыталось получить токен.
Чтобы решить проблему, пришлось переработать схему запуска приложения. В новой версии при прогреве не отправляются никакие запросы, потому что проверка токена происходит после вызова UIApplicationMain().
Также мы подключили флаг UIApplication.shared.state == .background, который указывает, что приложение запущено в бэкграунд-режиме. При установленном флаге, в том числе в режиме прогрева, приложение не может отправлять запросы к серверу.
Разработка под iOS — это всегда немного лотерея. Apple не раскрывает, как именно работают фичи ОС. Даже та документация, которая есть на сайте Apple сейчас, появилась не сразу.
Если бы проблема возникла только у СберМаркета, можно было бы подумать, что команда не следила за обновлениями ОС. Но проблема разлогинов возникала у многих. Например, о похожих багах после релиза iOS 15.0 говорили пользователи AliExpress. А разработчик приложения Cookpad описал похожий кейс на Source Diving.
Чтобы быстрее отлавливать баги и находить их причины, у нас есть несколько советов. Они достаточно просты, но с загадочной iOS только так.
Тестировать приложения на бета-версии ОС. За несколько месяцев до релиза новой iOS выходит бета для разработчиков и тестировщиков. Она может отличаться от итоговой версии, но самые важные фичи в ней всё равно будут.
С прогревом она не спасла — эта функция не была указана как ключевая фича, а документация обновилась не сразу после релиза.
Штормить с командой тестировщиков неожиданные тест-кейсы. Разработчики были уверены, что приложение физически не может отправлять запросы на сервер при заблокированном экране. Чтобы избежать подобной ситуации, можно придумать расширенные тест-кейсы, продумать все возможные и невозможные сценарии.
Следить за форумами разработчиков. После релиза iOS на официальном форуме Apple, 4PDA и Stack Overflow довольно быстро появляются новые ветки с вопросами и описанием багов. Иногда там можно заметить ошибку, на которую ещё не напоролись пользователи и тестировщики вашего приложения.
Смотреть и слушать экспертов. Например, в подкасте Dub Dub DC от TechByTwo Бен Глостер и Джастин Уильямс разбирают новые фичи и особенности каждого релиза. В выпусках подкаста можно найти зацепку для нового тест-кейса или решения проблемы, с которой вы уже столкнулись.
Мы завели соцсети с новостями и анонсами Tech-команды. Если хотите узнать, что под капотом высоконагруженного e-commerce, следите за нами там, где вам удобнее всего: Telegram, VK.
Как скрыть приложения на iPhone?
У современных людей в айфоне содержится огромное количество информации — деловой и личной. Разработчики смартфона сделали всё для того, чтобы оптимизировать и организовать рабочее пространство устройства. Меню и наличие нескольких рабочих столов позволяют быстро открыть необходимое приложение. В некоторых случаях обилие ярлыков мешает пользователю. Или его нужно скрыть от посторонних. Не все приложения предназначены для глаз детей. Важная информация должна быть скрыта от мошенников. С этим согласятся многие.
Айфон разработан так, что просто взять и удалить софт не получится. Есть удобные способы, позволяющие скрыть иконки. Изучим несколько из них.
Как узнать версию устройства
Определить версию программного обеспечения iPad или iPhone поможет раздел «Настройки». Из него перейдите в «Основные». После этого в заголовок «Об этом устройстве».
iOS 12 и высшие версии: прячем стандартные приложения в настройках
Это тот случай, когда экран пестрит встроенными софтами. Они не всегда используются и мешают быстро отыскать информацию.
Алгоритм действий таков:
- идём в «Настройки»
- отыскиваем «Экранное время»
- ищем подраздел «Контент и конфиденциальность»
- смахиваем в правую сторону
- выбираем «Разрешённые приложения»
Осталось передвинуть ползунки тех программ, которые хотите спрятать.
iOS 11 и предыдущие версии: ставим пароль
Весь перечень приложений может быть защищён паролем. Выполните следующий порядок шагов:
настройки → основные → ограничения → включить. Затем придумайте произвольную комбинацию цифр (iphone 2 раза запросит её ввести). Когда функция подключена, выберите нужные софты и активируйте бегунки напротив них. После такого алгоритма действий приложения исчезнут в поисковике и с рабочего стола смартфона apple.
Скрываем приложения с домашнего экрана
Библиотека приложений уникальна. Множество виджетов удаётся сократить до минимума. На домашних экранах остаются самые используемые.
Если вы хотите быстро зайти в библиотеку софтов, пролистайте домашние экраны в левую сторону. На последнем и будет библиотека. Все папки внутри неё упорядочены, там же есть удобная поисковая панель. Здесь указаны все приложения вашего смартфона apple.
Блокируем уведомления
Эти технические премудрости будут сведены к нулю, если неожиданно на глаза нежелательному человеку попадутся оповещения из приложений. Избежать этого поможет подменю «Уведомления». Оно расположено в настройках айфон. Открываем раздел и проваливаемся в карточку нужного приложения. Вверху экрана вы сможете тапнуть по бегунку напротив строки «Допуск уведомлений».
После этих действий утилита не выдаст себя ненужным напоминанием. Это особенно важно при получении сообщений через мессенджеры, когда в уведомлении может «вывалиться» весь текст сообщения.
Маскируем утилиту от виртуального помощника
Скрытые программы могут выдать своё существование посредством Siri. Как это происходит? Виртуальный помощник следит за действиями в айфон. Он пытается предугадать, какие из приложений вам понадобятся. Не всем пользователям нужна помощь такого рода. Некоторые выбирают конфиденциальность. Избежать этого легко, выполнив действия:
- Разворачиваем раздел настроек
- Входим в подменю «Siri и поиск»
- Прокручиваем перечень до нужной программы.
Деактивируем следующие маркеры:
- Анализ приложения
- Показ в поиске
- Показ приложений.
С помощью этих действий вам удастся скрыть существование скачанных софтов и отключить вмешательство Siri в использование приложений.
Маскируем приобретённые в App Store программы
Периодически возникает необходимость потребность замаскировать покупки из «яблочного» магазина. Многие желают скрыть виртуальные приобретения. Но не знают, как.
При засекречивании покупки в App Store она больше не фигурирует в перечне покупок. В случае пользования семейным доступом утилита не отобразится в перечне покупок всех семейных пользователей. Доступ повторной загрузки членами группы также будет ограничен. А вот ваша история приобретений всё равно расскажет о купленном приложении.
В этом случае поступите так:
- Выберите App Store вашего смартфона
- Перейдите в профиль
- Тапните «купленные» и далее – «мои покупки».
Выберите раздел «все»: так откроется список всех купленных программ. Затем нажмите графу «не на этом айфон». Это действие раскроет список всех софтов, недоступных именно на вашем устройстве.
Пролистайте до приложения, которое должно стать секретным, смахните в левую сторону и задайте команду «скрыть». Теперь программа исключена из списка покупок и скрыта от остальных пользователей.
Чтобы вернуть всё на исходные настройки, нужно в App Store выбрать свой профиль, тапнуть своё имя или индивидуальный номер, нажать «скрытые покупки». Загруженные ранее приложения снова станут видимыми для всех. Обновите значок загрузки нажатием.
Заключение
Многофункциональность iphone помогает сделать жизнь пользователя проще и удобнее. Деловая и личная жизнь каждого отображена в приложениях, которыми мы пользуемся. Из соображений безопасности, правильного воспитания детей или конфиденциальности рад приложений хочется скрыть. Удалить их навсегда не позволит система, но использовать удобные методы можно всегда.
Воспользуйтесь советами этой статьи, используйте ваш смартфон наиболее эффективно!
Обновите приложение в App Store Connect
Перед началом работы
1. Убедитесь, что ваша учетная запись разработчика Apple все еще действительна. Его необходимо продлевать каждый год.
2. Перейдите в App Store Connect > Соглашение, налоги и банковское дело и примите все ожидающие рассмотрения соглашения.
3. Убедитесь, что вы выполнили все рекомендуемые проверки , чтобы убедиться, что ваше приложение соответствует Руководству по проверке App Store.
4. Обратите внимание, что для завершения процесса отправки вашего приложения для iOS потребуется компьютер Mac, поскольку вам потребуется загрузить приложение Transporter из Mac App Store, чтобы загрузить двоичный файл в App Store Connect.
Примечание об обновлениях:
Мы рекомендуем регулярно (несколько раз в год) обновлять приложение в магазине, чтобы включать в себя новейшие исправления и улучшения, предоставленные вам GoodBarber.
Вы можете обратиться к этой онлайн-справке, чтобы узнать, какие изменения требуют отправки новой версии вашего приложения в Apple, а какие изменения можно опубликовать непосредственно из меню Обновление в вашем бэк-офисе.
В зависимости от изменений, которые вы внесли в приложение, и если версия, опубликованная в магазине, является достаточно новой, может не потребоваться отправлять новую версию в Apple для отображения ваших обновлений.
Получите новый файл .ipa от GoodBarber
1. В своем бэк-офисе выберите Каналы продаж > Приложение iOS > Опубликовать и создайте приложение iOS .
2. Когда сборка будет готова, загрузите файл .ipa .
3. Нажмите Далее .
Создайте новую версию своего приложения в App Store Connect
1. В App Store Connect > Мои приложения выберите свое приложение.
2. Слева, , щелкните знак + рядом с «Приложение iOS»
3. Во всплывающем окне зарегистрируйте новый номер версии для вашего приложения.
Этот номер версии должен совпадать с номером, отображаемым в меню «Канал продаж» > «Приложение iOS» > «Опубликовать» в вашем бэк-офисе, и всегда должен быть выше текущего номера версии в App Store.
Теперь новая версия должна отображаться с желтым значком и статусом «Подготовка к отправке» над текущей версией вашего приложения.
Загрузите новый ipa с помощью Transporter
1. Откройте Transporter на своем Mac и войдите в систему, используя свои учетные данные Apple Developer.
2. Нажмите кнопку « Добавить приложение ».
3. S выберите новый файл .ipa , который вы ранее загрузили из своего бэк-офиса .
4. Нажмите « Доставить ». Вскоре статус должен измениться на «Проверка приложения», а затем на «Загрузка приложения».
5. Подождите, пока значок не станет зеленым, а статус не покажет » Доставлено «.
Apple обработает сборку в течение нескольких минут, прежде чем она станет доступна в App Store Connect.
Тем временем продолжите остальные настройки.
Примечание. Если при загрузке возникает ошибка, Вы можете обратиться к этой интерактивной справке за списком распространенных ошибок и рекомендуемыми способами их исправления. поле « Что нового в этой версии» (под описанием) и укажите, что нового в этой версии вашего приложения, например, новые функции, улучшения и исправления ошибок.
Вы должны быть конкретными при описании того, что нового в этой версии приложения .
Например, если вы отправляете свое приложение после исправления ошибки, вы должны указать, в чем заключалась ошибка.
— Плохо: исправление ошибки
— Хорошо: исправлена ошибка, из-за которой изображения не отображались в меню ресторана
Это очень важно, так как Apple может отклонить вашу заявку и запросить дополнительную информацию, если посчитает, что вы не предоставили достаточно сведений в поле «Что нового».
Вы должны всегда следить за тем, чтобы информация, отображаемая в App Store, соответствовала текущему содержанию, дизайну и разрешениям вашего приложения.
Обновление информации в App Store не является обязательным, особенно если вы не вносили существенных изменений в свое приложение.
Однако некоторые элементы можно редактировать только при отправке новой версии, поэтому сейчас самое подходящее время, если вам нужно что-то изменить.
— В меню Приложение iOS > Новая версия приложения , вы можете редактировать скриншоты, рекламный текст, описание, ключевые слова, URL поддержки и маркетинговый URL.
При желании можно добавить и другие элементы, но обязательными являются только эти.
— Все еще в меню Приложение iOS > Новая версия приложения , прокрутите вниз, чтобы изменить Информация о проверке приложения .
Контактная информация всегда является обязательной.
Информация для входа должна быть заполнена, если требуется войти в ваше приложение, чтобы получить доступ к нему или некоторым его разделам. Убедитесь, что информация актуальна, иначе Apple может отклонить ваше приложение, ожидая, что вы предоставите им действительный логин и пароль.
Примечания и приложения являются необязательными.
— В меню Общие > Информация о приложении вы можете отредактировать имя , подзаголовок , категорию вашего приложения, а также обновить Информация о правах на контент (чтобы указать, содержит ли приложение, показывает ли он или имеет доступ к контенту третьих лиц) и Возрастной рейтинг .
. В меню Общие > Цены и доступность, вы можете изменить цену вашего приложения и стран , где оно доступно. Обратите внимание, что вы можете изменить эти конкретные настройки в любое время, не отправляя новую версию приложения в Apple.
— В меню Общие > Конфиденциальность приложения , убедитесь, что зарегистрированная политика конфиденциальности и ответы на форму конфиденциальности данных соответствуют текущему содержимому вашего приложения.
Сохраните ваши изменения в верхней части каждой страницы, когда вы закончите редактирование.
Зарегистрируйте новую сборку в App Store Connect
1. В меню Приложение для iOS > Новая версия приложения прокрутите вниз до раздела Сборка .
2. Теперь вы должны увидеть знак +, указывающий, что сборка была обработана Apple (если нет, подождите еще немного и вернитесь позже).
После того, как сборка будет обработана и станет доступна в App Store Connect, вы сможете протестировать свое приложение с помощью Testflight.
Когда вы будете готовы опубликовать свое приложение, вернитесь в меню App Store > выберите версию приложения > прокрутите вниз до раздела сборки и выполните следующие действия, чтобы завершить отправку:
3. Нажмите знак + или кнопку, выберите свою сборку из списка и нажмите « Готово «.
4. Сохраните ваши изменения в верхней части страницы.
Теперь статус вашего приложения должен быть « Готово к рассмотрению «.
Версия Выпуск
Прокрутите вниз до и выберите предпочтительную систему выпуска после завершения проверки приложения для этой новой версии:
– Выпустить эту версию вручную:
Новая версия не будет опубликована автоматически после проверки Apple. Вам придется вернуться к эту страницу и опубликуйте ее вручную.
— Автоматически выпустить эту версию:
Новая версия будет опубликована автоматически, сразу после проверки Apple. Обратите внимание, что может пройти 24 часа, прежде чем новая версия появится в магазине после того, как группа проверки Apple объявит, что она была одобрена.
– Автоматически выпустить эту версию после проверки приложения, не ранее указанной даты:
Новая версия будет опубликована автоматически после проверки Apple, но только в установленные вами время и дату. Это время и дата должны быть установлены в вашей местной дате и времени.
Сохраните ваши изменения в верхней части страницы.
Добавить на проверку
1. Нажмите кнопку « Добавить на проверку » в правом верхнем углу.
Вы должны быть автоматически перенаправлены в меню Общие > Проверка приложения.
2. Нажмите кнопку « Отправить на проверку приложения ».
Обратите внимание, что вам может потребоваться выбрать текущий элемент для отправки на проверку, прежде чем кнопка станет видимой.
Ожидание проверки приложения
Статус новой версии вашего приложения теперь должен быть « Ожидание проверки «.
Он изменится на « На рассмотрении » после того, как команда по проверке приложения фактически начнет проверку новой версии.
На каждом этапе проверки приложения вы будете получать обновления по электронной почте на адрес, связанный с вашей учетной записью разработчика Apple.
Следите за своими электронными письмами , так как группе проверки Apple может потребоваться дополнительная информация, чтобы завершить проверку до публикации новой версии в App Store.
Проверка приложения Apple может занять от нескольких дней до недели.
Как проверить сведения о конфиденциальности приложения iOS для iPhone и iPad
Майкл Потак
– 17 декабря 2020 г., 13:39 по тихоокеанскому времени.
@michaelpotuck
Компания Apple выпустила новые метки конфиденциальности для приложений iOS (эквивалент метки питания для приложений) как для собственных, так и для сторонних приложений. Прочтите, как проверить сведения о конфиденциальности приложений iOS для приложений в App Store, а также для тех, которые предварительно загружены на iPhone и iPad, чтобы полностью понять, как используется ваша информация.
Apple впервые представила свою новую инициативу по обеспечению конфиденциальности приложений iOS во время WWDC в июне 2020 года. Теперь они официально доступны в App Store для приложений Apple и стороннего программного обеспечения, а также на веб-сайте Apple для приложений, которых нет на App Store (предустановленные приложения).
Apple описывает информацию о конфиденциальности своего приложения для iOS как схожую с этикетками пищевых продуктов. Цель Apple в этой инициативе — лучше информировать пользователей о методах конфиденциальности отдельных приложений. Ярлыки конфиденциальности приложений iOS разделены на три части:
- Данные, используемые для отслеживания вас
- Данные связаны с вами
- Данные не связаны с вами
Если вы читаете это, это, вероятно, не станет сюрпризом, но подробности конфиденциальности приложений iOS, которые вы узнаете, наверняка заставят вас изменить используемые вами приложения или, по крайней мере, какую информацию вы с ними делите. Давайте углубимся…
Как проверить сведения о конфиденциальности приложений iOS для iPhone и iPad
Для приложений Apple и сторонних приложений в App Store
- На своем iPhone или iPad откройте приложение App Store
- Найдите или откройте приложение, для которого вы хотите просмотреть сведения о конфиденциальности
- Проведите пальцем вниз под описанием и оценками приложения, пока не увидите Конфиденциальность приложения
- Нажмите См. Подробности , чтобы просмотреть полную информацию о конфиденциальности приложения iOS
- Вы также можете найти информацию о конфиденциальности в Интернете для приложений, просто выполните поиск в Интернете по запросу «магазин приложений «имя приложения»», и вы увидите метку конфиденциальности под отзывами (нажмите «Подробнее», чтобы просмотреть полное изложение)
.
Для приложений Apple, которых нет в App Store
- Обзор сведений о конфиденциальности всех приложений Apple, которых нет в App Store, можно найти здесь
- Вы можете найти страницы с подробной информацией о конфиденциальности для приложений Apple здесь
- Ознакомьтесь с новой целевой страницей конфиденциальности Apple
Вот как этот процесс выглядит в App Store:
Сведения о конфиденциальности приложений для iOS могут быть довольно длинными для таких приложений, как Facebook — пугающе длинными (почти 14 экранов iPhone 12):
FTC: мы используем автоматические партнерские ссылки, приносящие доход. Подробнее.
Посетите 9to5Mac на YouTube, чтобы узнать больше новостей Apple:
Вы читаете 9to5Mac — экспертов, которые день за днем сообщают новости об Apple и окружающей ее экосистеме. Обязательно заходите на нашу домашнюю страницу, чтобы быть в курсе всех последних новостей, и следите за новостями 9to5Mac в Twitter, Facebook и LinkedIn, чтобы оставаться в курсе событий. Не знаете, с чего начать? Ознакомьтесь с нашими эксклюзивными историями, обзорами, практическими рекомендациями и подпишитесь на наш канал YouTube
Об авторе
Майкл Потак
@michaelpotuck
Майкл — редактор 9to5Mac. С момента прихода в компанию в 2016 году он написал более 3000 статей, включая последние новости, обзоры, подробные сравнения и учебные пособия.