14 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Приложения из App Store не скачиваются и не обновляются

Приложения из App Store не скачиваются и не обновляются. Что делать

Десять последовательных вариантов решения проблемы.

«При Джобсе такого не было», – первая фраза, которая приходит в голову, когда битый час пытаешься привести в чувства застывшую серую иконку загружаемого приложения из магазина App Store.

По поводу проблем с обновлением софта и ошибкой при загрузке приложений Apple комментариев не дает. Решение приходится искать, поочередно проходя все этапы: от простого сложного.

Примечание: Для борьбы с проблемой «серых иконок ожидания» и ошибками при загрузке приложений из App Store рекомендуется выполнять все этапы поочередно. В любой момент загрузка может пойти дальше и необходимость в осуществлении последующих шагов, описанных в данной инструкции, отпадет.

Приложение в «ожидании»? Поможет перезагрузка!

Начнем с самых простых вариантов и постепенно перейдем к более сложным. И самой легкой и доступной манипуляцией будет обычная перезагрузка устройства. Да-да, это наиболее популярное решение которое помогло многим. Просто перезагружаете свой девайс и с большой долей вероятности после этого надпись «ожидание» со значка приложения пропадет и загрузка возобновиться.

Почему и в каких случаях это срабатывает? Скорее всего, Вы пытаетесь обновить или загрузить приложение большого объема через сотовую сеть, а Apple просто не разрешает этого сделать и приложения «висят». Так вот, перезагрузка и является одним из пунктов решения данной проблемы. Более подробно об этом в этой статье.

Программная часть

Приступим к практической части. Что нужно для того, чтобы сделать полноценный менеджер покупок? Должно быть реализовано как минимум следующее:

Проверка статуса подписки

Восстановление транзакций (не путать с обновлением чека!)

Оформление покупок

Весь процесс оформления покупки можно разделить на 2 этапа: получение продуктов (класс SKProduct ) и инициализация процесса покупки (класс SKPayment ). В первую очередь мы должны указать делегат протокола SKPaymentTransactionObserver .

Уведомление IAP_PRODUCTS_DID_LOAD_NOTIFICATION используется, чтобы обновить UI в приложении.

Далее пишем метод для инициализации покупки:

Делегат SKPaymentTransactionObserver выглядит так:

При успешном оформлении подписки вызывается метод делегата, в котором транзакция имеет состояние purchased .

Но как определить дату истечения подписки? Для этого нужно сделать отдельный запрос в Apple.

Проверка статуса подписки

Чек валидируется с помощью POST-запроса verifyReceipt к Apple, в качестве параметра посылаем зашифрованный чек в виде base64-закодированной строки, а в ответе нам приходит тот же чек в JSON формате. В массиве по ключу latest_receipt_info будут перечислены все транзакции от каждого периода каждой подписки, включая пробные периоды. Нам остается только спарсить ответ и достать актуальную дату истечения для каждого продукта.

На WWDC 2017 добавили возможность получать только актуальные чеки по каждой подписке с помощью ключа exclude-old-transactions в запросе verifyReceipt .

В начале метода вы можете видеть, что идет проверка на существование локальной копии чека. Локальный чек может и не существовать, например, если приложение было установлено через iTunes. При отсутствии чека мы не можем выполнить запрос verifyReceipt . Нам нужно сперва получить актуальный локальный чек, а затем снова попытаться его валидировать. Обновление чека делается с помощью класса SKReceiptRefreshRequest :

Обновление чека реализовано в функции refreshReceipt() . Если чек успешно обновился, то вызовется метод делегата requestDidFinish(_ request : SKRequest) , которая повторно вызывает метод refreshSubscriptionsStatus .

Как реализован парсинг информации о покупках? Нам возвращается JSON объект, в котором есть вложенный массив транзакций (по ключу latest_receipt_info ). Проходимся по массиву, достаем дату истечения по ключу expires_date и сохраняем ее, если эта дата еще не наступила.

Я привел простейший пример, как извлечь актуальную дату истечения подписки. Тут нет обработки ошибок и, например, нет проверки на возврат покупки (добавляется cancellation date).

Читать еще:  Как найти телефон на Android, если он потерялся или украден

Чтобы определить, активна подписка или нет, достаточно сравнить текущую дату с датой из User Defaults по ключу продукта. Если же она отсутствует или меньше текущей даты, то подписка считается неактивной.

Восстановление транзакций выполняется одной строкой SKPaymentQueue.default().restoreCompletedTransactions() . Эта функция восстанавливает все завершенные транзакции, снова вызывая метод делегата func paymentQueue(**_** queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) .

Чем отличается обновление чека от восстановления транзакций?

Оба метода помогают восстановить данные о покупках. Но в чем же их отличия? Есть замечательная таблица с видео wwdc:


Таблица различий двух способов восстановления покупок из WWDC

В большинстве случаев вам достаточно использовать SKReceiptRefreshRequest() , потому что нас интересует только получение чека для последующего вычисления даты истечения.

В случае авто-возобновляемых подписок сами транзакции нас не интересуют, поэтому достаточно использовать только обновление чека. Однако есть случаи, когда нужно использовать способ восстановления транзакций: если ваше приложение скачивает контент при покупке (Apple hosted content) или если вы до сих пор поддерживаете версии ниже iOS 7.

Тестирование покупок (Sandbox Testing)

Раньше для тестирования покупок необходимо было логаутиться из App Store в настройках вашего iPhone. Это доставляло большие неудобства (например, стиралась вся медиатека Apple Music). Однако сейчас этого делать не нужно: аккаунт песочницы теперь существует отдельно от основного аккаунта.

Процесс покупки происходит схожим образом в сравнении с реальными покупками в App Store, но есть некоторые моменты:

Вам всегда нужно будет вводить логин-пароль через системное окно. Покупки с использованием Touch ID/Face ID до сих пор не поддерживаются.

Если при верном вводе логина и пароля система снова и снова запрашивает логин-пароль, нажмите “Отменить”, сверните приложение, затем попробуйте снова. Выглядит как бред, но у многих срабатывает. Но иногда после второго ввода пароля процесс все же идет дальше.

Вы никак не сможете протестировать процесс отмены подписки.

Длительности периодов подписок значительно ниже реальных. И обновляются они не более 6 раз в день.

Фактическая длительностьТестовая длительность
1 неделя3 минуты
1 месяц5 минут
2 месяца10 минут
3 месяца15 минут
6 месяцев30 минут
1 год1 час

Что нового в StoreKit в iOS 13?

Из нового – только класс SKStorefront , который дает информацию о том, в какой именно стране в App Store зарегистрирован данный пользователь. Это может быть полезно тем разработчикам, которые используют разные подписки для разных стран. Раньше все проверяли по геолокации либо по региону устройства, но это не давало точный результат. Теперь страну в App Store узнать очень просто: SKPaymentQueue.default().storefront?.countryCode . Так же добавился делегат метода, если во время процесса покупки сменилась страна в App Store. В этом случае можно самим продолжить или отменить процесс покупки.

Суть проблемы

Обычно Apple дает разработчикам хотя бы неделю на подготовку и публикацию обновлений своих приложений, перед тем как начать развертывание очередного обновления iOS – к примеру, в 2019 г. iOS 13 была выпущена спустя десять дней после презентации.

Одновременно с этим компания выпускает версию iOS Golden Master (финальную сборку) для разработчиков и обновленную среду разработки Xcode. Это позволяет программистам «довести до ума» свои приложения для iPhone, разработка и тестирование которых велись под бета-версии ОС.

Иногда в процессе удается обнаружить критические ошибки, которые проявляют себя только в релизе. Некоторое количество времени также может понадобиться для добавления новых функций, поддерживаемых анонсированными на мероприятии гаджетами. Кроме того, проверка приложений, которую осуществляет Apple перед его размещением в App Store, также требует времени – от нескольких часов до нескольких дней.

В 2020 г. Apple назвала дату релиза (16 сентября) новых стабильных версий iOS и iPadOS 15 сентября в ходе ежегодной осенней презентации и тогда же выпустила сборку Golden Master. Таким образом, у разработчиков осталось всего 24 часа на то, чтобы успеть доработать и загрузить свои приложения в App Store.

К слову, на мероприятии компания продемонстрировала iPad 8 с очень быстрым «железом», новейший iPad Air c переработанным дизайном и на пятинанометровом процессоре, часы Watch Series 6 и Watch SE, а также комбо-подписку на все свои сервисы под названием Apple One.

Как обновить версию Инстаграм до актуальной

Если работаете с устаревшей версией социальной сети, то необходимо предпринять меры по установке актуальной сборки, которая поможет решить проблему и улучшить работу сервиса. Реализовано два стандартных способа переустановки Инстаграм – посредством официального магазина программного обеспечения и через саму утилиту. Ниже рассмотрим порядок настройки в подробностях.

Через App Store

Это основной поставщик мобильных приложения для сотовых устройств от компании Apple. Здесь можете скачать для iPhone последнюю сборку социальной сети. Чтобы обновить Инстаграм на Айфоне, следуйте простой инструкции:

  1. Запустите смартфон и на рабочем столе найдите иконку магазина. Это стандартная программа и установлена она на всех девайсах по умолчанию.
  2. На основной странице увидите графу для поиска, введите в ней наименование сервиса.
  3. Найдите нужное ПО и на следующей странице увидите кнопку обновления.
  4. Кликните на нее и система выполнит установку самостоятельно.

При желании можете здесь же в магазине программного обеспечения задать на телефоне автоматическое скачивание обновлений от мобильной сети или через Wi-Fi. После чего смартфон будет отслеживать появление нововведений и активировать их автоматически.

Через Инстаграм

Помимо описанного алгоритма действий, можете воспользоваться самим мобильным приложением и в настройках активировать автоматическое обновление. Для этого:

  1. Запустите Instagram с телефона.
  2. Выполните вход в свой профиль Инстаграм, указав пароль и логин.
  3. Кликните на миниатюру своей фотографии на нижней панели, чтобы перейти на личную страницу.
  4. На верхней части экрана перейдите в раздел настроек, изображается в виде шестеренки.
  5. После этого найдите вкладку «Информация».
  6. Здесь увидите соответствующий раздел «обновление приложения».
  7. Переведите индикатор в активное положение и сохраните изменение. После этого система будет оповещать вас о появлении новой сборки и активирует ее.

Еще несколько причин «ожидания» приложений на iPhone и iPad

Если все предыдущие методы не помогли, то есть еще несколько моментов, на которые стоит обратить внимание.

  1. Проверить соединение с интернетом и попробовать подключиться к другой Wi-Fi сети.
  2. Вполне может быть проблемы на стороне Apple и с ее серверами. Узнать все ли сейчас хорошо с сервисами компании можно из этой статьи.
  3. В некоторых случаях, приложения на самом деле скачиваются, но настолько медленно, что это и не заметно! Но вы можете ускорить загрузку — читайте об этом тут!
  4. Проверьте доступную память на устройстве. С каждой новой версией, программы увеличиваются в размерах и для их установки, может просто не хватать свободного места. Кстати, именно поэтому помимо надписи «ожидание», под приложением можно увидеть слово «очистка».
  5. Такие проблемы может вызвать и заблокированная в целях безопасности учетная запись Apple ID — руководство по разблокировке. Почему так происходит? Потому что приложения начинают скачиваться — учетная запись не проходит проверку — и все останавливается, ставиться на «паузу» до тех пор, пока вы не подтвердите учетку.

Как видите, методы достаточно разнообразны и единого решения нет. Кому-то помогает перезагрузка, кому-то другие действия. Но в тоже время, они достаточны просты и попробовать их абсолютно все не займет много времени!

Шаг 9. Полный сброс настроек

Возобновить загрузку приложения можно кардинальным способом, осуществив полный сброс настроек.

Решение: Начните с малого и осуществите Сброс настроек сети: откройте Настройки – Сброс – Сбросить настройки сети. В случае, если и это не помогло, приготовьтесь к полному сбросу всех настроек. Перед выполнением этого действия создайте резервную копию iOS-девайса. Откройте Настройки – Основные – Сброс – Сбросить все настройки.

Настройка подписок в App Store Connect

Если у вас уже есть Bundle ID и созданное приложение, то вы можете пропустить эти шаги. Если же вы создаете приложение впервые, то сделайте следующее:

На портале разработчиков Apple вы должны создать явный Bundle ID (App ID). Открыв страницу, которая называется Certificates, Identifiers & Profiles, перейдите во вкладку Identifiers. В июне 2019 года Apple, наконец, обновила верстку портала в соответствии с ASC (сокращенно от App Store Connect).


Новый дизайн портала разработчиков Apple в 2019 году

Явный Bundle ID принято указывать в доменном стиле ( com.apphud.subscriptionstest ). В разделе Capabilities вы заметите, что галочка рядом с In App Purchases уже стоит. Создав Bundle ID (App ID), перейдите в App Store Connect.

Тестовые пользователи (Sandbox users)

Для тестирования будущих покупок вам нужно будет создать тестового пользователя. Для этого перейдите в ASC во вкладку Пользователи и Доступ, далее в Тестировщики Sandbox.


Форма создания Sandbox пользователя

При создании тестировщика можно указать любые несуществующие данные, главное, не забыть потом email и пароль!

О том, как тестировать покупки с тестовыми учетными данными я расскажу ближе к концу статьи.

Еще один важный шаг — это настройка контрактов и банковских данных в разделе “Соглашения, налоги и банковские операции”. Если у вас не будет настроено соглашение для платных приложений, то вы не сможете тестировать авто-возобновляемые подписки!

После этого можно создать новое приложение в App Store Connect. Укажите уникальное имя и выберите в качестве ID пакета ваш Bundle ID.


ID пакета — это ваш Bundle ID

Сразу после создания приложения перейдите во вкладку Функции.

Если у вас уже было создано приложение, то можете продолжить читать отсюда.

Процесс создания авто-возобновляемой подписки состоит из нескольких этапов:

1. Создание идентификатора подписки и создание группы подписок. Группа подписок представляет собой коллекцию подписок с разными периодами и ценами, но которые открывают один и тот же функционал в приложении. Так же в группе подписок можно лишь однажды активировать бесплатный пробный период и лишь одна из подписок может быть активной. Если вы хотите, чтобы в вашем приложении было одновременно две разные подписки, то вам нужно будет создать две группы подписок.

2. Заполнение данных подписки: длительность, отображаемое название в App Store (не путать с просто названием) и описание. В случае добавления первой подписки в группу необходимо будет указать отображаемое название группы подписок. Не забудьте почаще сохранять изменения, ASC может зависнуть в любой момент и перестать отвечать на запросы.


Экран подписки

3. Заполнение цены подписки. Тут есть два этапа: создание цены и специальных предложений. Укажите реальную цену в любой валюте, она автоматически пересчитается для всех других стран. Вводные предложения: тут вы можете предложить пользователям бесплатный пробный период либо скидки по предоплате. Промопредложения появились в App Store совсем недавно в 2019 году: они позволяют предлагать особые скидки пользователям, которые отменили подписку и которых вы хотите вернуть.

Генерация секретного общего ключа (shared secret key)

На странице со списком всех ваших созданных подписок вы увидите кнопку Общий ключ для приложения. Это специальная строка, которая нужна для валидирования чека в iOS-приложении. Валидировать чек нам нужно будет для определения статуса подписки.

Общий ключ может быть двух видов: уникальный ключ для вашего приложения или единый ключ для вашего аккаунта. Важно: ни в коем случае не пересоздавайте ключ, если у вас уже есть приложение в App Store, иначе пользователи не смогут получить валидировать чек и ваше приложение перестанет работать как положено.


В этом примере создано три группы подписок и 3 годовые подписки

Скопируйте ID всех ваших подписок и общий ключ, это пригодится в дальнейшем в коде.

Что нового в iOS 14

С выходом iOS 14 владельцам iPhone стали доступны виджеты на рабочих экранах как в ОС Android. Теперь значки приложений могут соседствовать с виджетами погоды, часов, календаря и другими. Их размер можно настраивать. Функция «Смарт-стопка» автоматически собирает виджеты из наиболее часто используемых приложений и отображает их на экране в зависимости от времени дня.

Добавлена библиотека приложений. В ней отображаются все установленные на устройстве программы. Они сортируются по категориям, чтобы самые нужные из них всегда можно быстро найти.

Телефонные звонки, вызовы FaceTime и в других приложения теперь выводятся в компактном окне, которое занимает лишь небольшую часть экрана. Компактный интерфейс получил и голосовой помощник Siri.

Также iOS 14 получила поддержку режима «картинка в картинке». Благодаря этому смотреть видео или общаться по FaceTime можно одновременно с использованием другого приложения. Видео воспроизводится в небольшом подвижном окне, размер которого можно менять.

В iOS 14 поддерживается работа с так называемыми блиц-приложениями. Apple описывает их как фрагменты приложений, которые появляются в нужный момент и позволяет выполнить одно конкретное действие. Блиц-приложения не требуют установки, а взаимодействие с ними, по задумке компании, должно длиться всего несколько секунд.

Среди других нововведений можно отметить дополнительные функции конфиденциальности, улучшенный поиск и карты, а также возможность использования iPhone в качестве ключа от автомобиля посредством технологии NFC, которым, ко всему прочему, можно делиться.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector