Проверка интеграции iOS SDK
Чеклист перед выпуском
- SDK инициализирован до первого обращения; API key и section относятся к нужному проекту.
- Просмотр отправляется при открытии экрана, событие — после фактического действия.
- SKU, категории и lng совпадают с товарным фидом, включая регистр.
- LoginEvent связывает профиль по согласованному CUID; ограничения setUser учтены.
- In-app кампания опубликована, UI доступен, presentation lock снята.
- Inline selector совпадает с кампанией; блок получает место в вёрстке и ProductViewBuilder для товаров.
- Навигация по URL/deeplink обработана, tracking встроенного UI не дублируется.
- Проверены ошибка сети, пустой ответ и возврат на экран; UI приложения сохраняет работоспособность.
Проверка запросов
На время диагностики включите .debug. Проверьте sec, user, ctx, selector и содержимое ответа. Полный debug-лог содержит Authorization и данные запросов; используйте его только для отладки. Настройка логирования.
Вызов SDK до GravitySDK.initialize(...)
Если публичный метод SDK вызван до GravitySDK.initialize(...), приложение не падает. SDK игнорирует вызов и пишет error-лог:
called before GravitySDK.initialize() — call ignored
Что делать:
- Инициализируйте SDK на раннем этапе старта приложения.
- Проверьте порядок вызовов по логам SDK или через
setLogListener(...).
Кампании не показываются после trackView(...) или triggerEvent(...)
Проверьте:
- корректность
apiKeyиsection; - корректность
PageContext; - наличие доступного
UIViewControllerдля показа; - активность кампаний в Gravity Field для этого контекста.
getContentBySelector(...) возвращает пустой data
Проверьте:
- верный
selector; - активность кампании;
- соответствие
PageContextусловиям таргетинга; - сетевые ограничения и
proxyUrl, если он используется. - SDK-логи через
logLevel: .debugилиsetLogListener(...), если метод вернулnil.
Почему кнопка с URL или deeplink внутри in-app ничего не делает?
Скорее всего, в приложении не обработаны 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 и показ рекомендаций. Полная интеграционная проверка требует реальной кампании и устройства/эмулятора.