Устранение неполадок интеграции App Store

В этой статье описаны распространённые проблемы с интеграцией App Store. В каждом разделе указаны симптомы, причина и способ решения.

”The provided field values are incorrect” при сохранении учётных данных

Когда вы сохраняете учётные данные для встроенных покупок, Adapty формирует токен аутентификации из In-app purchase Issuer ID, In-app purchase Key ID и .p8 file, а затем проверяет его через Apple. Эта ошибка означает, что Apple отклонила токен. Проверьте значения в следующем порядке:

  1. Тип ключа. Ключ должен быть ключом In-App Purchase из раздела Users and AccessIntegrationsIn-App Purchase в App Store Connect. Ключ из вкладки Team keys (ключ App Store Connect API) имеет собственный Issuer ID и Key ID, но Apple отклонит его здесь — этот ключ используется в шаге 6 конфигурации.
  2. Один аккаунт и команда. Issuer ID, Key ID и файл .p8 должны принадлежать той же команде App Store Connect, что и приложение. Ключ, сгенерированный в аккаунте другой команды — например, агентского аккаунта — не пройдёт валидацию.
  3. Сам файл .p8. Загружайте файл точно в том виде, в каком он был скачан из App Store Connect. Файл, воссозданный из вставленного содержимого ключа, часто не проходит проверку. App Store Connect позволяет скачать ключ только один раз, поэтому если оригинальный файл утерян, сгенерируйте новый.
  4. Bundle ID. Bundle ID должен точно совпадать с bundle ID вашего приложения в App Store Connect — в формате reverse-DNS без пробелов, например com.company.app.
  5. Скрытые символы. Скопируйте каждый ID напрямую из App Store Connect. Лишние пробелы или похожие символы — например, строчная l вместо цифры 1 — приведут к ошибке валидации.

Эта проверка использует только три поля In-App Purchase key и Bundle ID. App-Specific Shared Secret и ключ App Store Connect API в ней не участвуют, поэтому повторный ввод любого из них не повлияет на результат.

Продукты не отображаются

Оба симптома указывают на одну и ту же причину:

  • API-ключ App Store Connect настроен правильно, но Adapty не может получить продукты.
  • Продукты есть в App Store Connect, но в Adapty они не отображаются — или отображаются не все. При попытке покупки SDK сообщает «Product Id not found». Наиболее частая причина — неподписанные соглашения Apple: платное соглашение, налоговые формы или банковские реквизиты в статусе ожидания или не подписаны. Когда соглашения не подписаны, App Store Connect API молча возвращает 403 на запросы к продуктовым эндпоинтам. Никакой явной ошибки Adapty не видит — продукты просто отфильтровываются без предупреждения.

Перейдите в App Store Connect → Agreements, Tax, and Banking и подпишите все ожидающие соглашения. Затем выполните повторную синхронизацию в разделе App settings → iOS SDK дашборда Adapty.

Уведомления App Store Server Notifications отображаются как «Delayed»

В App Store Connect статус уведомлений App Store Server Notifications может отображаться как Delayed. Это означает, что Apple задерживает отправку уведомлений о событиях подписки — продления, отмены и проблемы с оплатой ставятся в очередь и поступают с опозданием.

На статистику установок это не влияет. Adapty считает установки с первого запуска приложения, а не на основе серверных уведомлений.

Если данные о продлениях или отменах запаздывают, статус Delayed — наиболее вероятная причина. Обычно он устраняется автоматически по мере того, как Apple обрабатывает накопившуюся очередь.

Покупка прошла, но пользователь теряет доступ

Клиент оплачивает, на короткое время получает доступ, но теряет его при следующем обновлении профиля из Adapty. Apple снял деньги, однако транзакция так и не дошла до Adapty — пока этого не произошло, в профиле нет уровня доступа, а продажа отсутствует в отчётах.

Причина, как правило, одна из следующих:

  • Учётные данные перестали работать: Adapty не смогла проверить транзакцию с Apple. Пройдите по шагам из раздела Если обновления перестают поступать и замените учётные данные, отвечающие за валидацию покупок.
  • Продукт не привязан в Adapty: ID продукта в сторе, который купил пользователь, не привязан ни к одному продукту Adapty, поэтому нет уровня доступа, который можно было бы выдать. Убедитесь, что продукт существует с точным App Store Product ID и что ему назначен уровень доступа.

SDK Adapty продолжает повторять попытки транзакции, поэтому доступ восстанавливается, как только Adapty сможет её зафиксировать.

Цены в Adapty не совпадают с App Store

Поле price на странице редактирования продукта в Adapty ведёт себя по-разному в зависимости от того, как продукт был добавлен.

Если вы создаёте продукт в Adapty и публикуете его в сторе через дашборд, эта цена используется как начальная цена в сторе. Если вы добавляете продукт, который уже существует в сторе, эта цена является заглушкой. Аналитика, интеграции и SDK Adapty используют реальные цены, полученные из App Store. Изменения цен в App Store не синхронизируются и не обновляют заглушку, и на данный момент отредактировать её через дашборд нельзя.

CSV-экспорт цен пуст

Если CSV-экспорт цен вернул только заголовки столбцов, значит ключ API App Store Connect настроен не полностью. См. Шаг 6 — Добавьте ключ API App Store Connect.

Не получается отправить новые продукты в App Store

Adapty может автоматически отправлять новые продукты в App Store Connect при их создании в дашборде. Эта возможность недоступна, если интеграция с App Store настроена не полностью. Необходимы два параметра: