Проверка интеграции iOS SDK

Чеклист перед выпуском

  1. SDK инициализирован до первого обращения; API key и section относятся к нужному проекту.
  2. Просмотр отправляется при открытии экрана, событие — после фактического действия.
  3. SKU, категории и lng совпадают с товарным фидом, включая регистр.
  4. LoginEvent связывает профиль по согласованному CUID; ограничения setUser учтены.
  5. In-app кампания опубликована, UI доступен, presentation lock снята.
  6. Inline selector совпадает с кампанией; блок получает место в вёрстке и ProductViewBuilder для товаров.
  7. Навигация по URL/deeplink обработана, tracking встроенного UI не дублируется.
  8. Проверены ошибка сети, пустой ответ и возврат на экран; UI приложения сохраняет работоспособность.

Проверка запросов

На время диагностики включите .debug. Проверьте sec, user, ctx, selector и содержимое ответа. Полный debug-лог содержит Authorization и данные запросов; используйте его только для отладки. Настройка логирования.

Вызов SDK до GravitySDK.initialize(...)

Если публичный метод SDK вызван до GravitySDK.initialize(...), приложение не падает. SDK игнорирует вызов и пишет error-лог:

called before GravitySDK.initialize() — call ignored

Что делать:

  1. Инициализируйте SDK на раннем этапе старта приложения.
  2. Проверьте порядок вызовов по логам SDK или через setLogListener(...).

Кампании не показываются после trackView(...) или triggerEvent(...)

Проверьте:

  1. корректность apiKey и section;
  2. корректность PageContext;
  3. наличие доступного UIViewController для показа;
  4. активность кампаний в Gravity Field для этого контекста.

getContentBySelector(...) возвращает пустой data

Проверьте:

  1. верный selector;
  2. активность кампании;
  3. соответствие PageContext условиям таргетинга;
  4. сетевые ограничения и proxyUrl, если он используется.
  5. SDK-логи через logLevel: .debug или setLogListener(...), если метод вернул nil.

Скорее всего, в приложении не обработаны FollowUrlEvent или FollowDeeplinkEvent в gravityEventCallback. iOS SDK передает эти события в callback, но сам переход не выполняет.

Почему inline-кампания не отображается автоматически?

Проверьте selector, соответствие PageContext условиям таргетинга, активность кампании и наличие контента в response. Для GravityInlineView дополнительно проверьте constraints, высоту ячейки/контейнера и то, что initialize(pageContext:) был вызван после установки selector.

Почему не получается вручную отправить content/product engagement?

Проверьте, что вы используете публичные типы ContentEngagement / ProductEngagement и передаете в них корректные content, campaign и slot из ответа getContentBySelector(...). Для content click отдельного публичного типа в iOS SDK сейчас нет.

Можно ли использовать pageNumber и referrer для таргетинга?

pageNumber и referrer передаются в запросах. Для проверки конкретного правила таргетинга сопоставьте ctx в debug-логе с настройками кампании.

После обновления SDK

Сопоставьте установленную версию со справочником API, повторно проверьте события, выбор контента, navigation callbacks и показ рекомендаций. Полная интеграционная проверка требует реальной кампании и устройства/эмулятора.