Выбор Remote UI
Приложение запрашивает плейсмент с локалью и идентификатором пользователя. PNLight возвращает подходящую конфигурацию из дашборда, если плейсмент включён и для него есть доступная конфигурация. Создайте в разделе Remote UI каждый плейсмент, который может запросить приложение. При новом запросе к PNLight, например с параметромignoreCache, UI не возвращается, если плейсмент отсутствует, отключён, удалён или для него нет подходящей конфигурации локали.
Дашборд отслеживает:
- Запросы: пользователи, запросившие плейсмент.
- Показы: пользователи, получившие конфигурацию UI, которую можно было показать.
{{monthlyProductId}}.
Отображение плейсмента
RemoteUiView вызывает getUIConfig внутри. При первом запуске приложения с атрибуцией AppsFlyer подождите 4–5 секунд после инициализации AppsFlyer перед показом плейсмента, чтобы данные конверсии успели поступить. Если attributionRequired равно true, SDK также ожидает атрибуцию внутри перед запросом конфигурации.
Серверно-управляемые флоу
Remote UI может вернуть флоу вместо одной карточки. Флоу используетschemaVersion: 2, type: "flow", initial_route и объект routes, где каждый маршрут содержит полный документ UI.
Отображайте флоу через ту же интеграцию RemoteUiView. SDK обрабатывает нативную навигацию и модальное представление внутри поверхности Remote UI, поэтому приложениям React Native и Flutter не нужна дополнительная настройка навигации для маршрутов PNLight.
Используйте URL навигации PNLight внутри маршрутов флоу:
PNLight обрабатывает эти URL навигации внутри валидного флоу. Используйте URL приложения, идентификаторы действий или пути действий, когда хост-приложение должно обработать действие через
onAction.
Компоненты Remote UI
В разделе Компоненты Remote UI описано, как добавлять компоненты PNLight в конфигурацию и настраивать их свойства.Версия схемы Remote UI
PNLight версионирует оболочку Remote UI отдельно от версий пакетов SDK. Укажите версию в корне документа.- Схема v2 добавляет flow, безопасные области, переменные масштабирования, haptics и диалоги.
- Схема v3 сохраняет это поведение и добавляет
pnlight.purchase,pnlight.progress_barиpnlight.animated_number. - Схема v4 сохраняет поведение схемы v3 и добавляет действия
on_failиon_cancelдляpnlight.purchase.
pnlight.purchase и не отображают компоненты схемы v3. Конфигурации
схемы v3 по-прежнему запускают только on_success.
Обработка действий
Действия Remote UI передаются приложению. Используйте идентификаторы действий, пути или параметры запроса, чтобы определить, что оно должно сделать. Разные плейсменты могут возвращать разные действия, поэтому обрабатывайте их явно. Распространённые действия:- Начать покупку через
pnlight.purchaseили перейти в покупку на стороне приложения, если нужно собственное поведение. - Вернуть пользователя на главный экран приложения после успешной подписки.
- Закрыть экран.
- Открыть другой экран приложения.
- Отследить взаимодействие с продуктом.
Системное действие покупки
Используйтеpnlight.purchase, когда кнопка Remote UI должна запустить покупку
StoreKit через SDK PNLight. Документ должен объявлять "schemaVersion": 3 или
"schemaVersion": 4.
params.product_id обязателен. Используйте явный App Store product ID или
переменную продукта из плейсмента.
Списки действий необязательны. Каждый принимает обычные словари действий DivKit:
on_successзапускается после успешной покупки. Его поддерживают схемы v3 и v4.on_failзапускается, если покупка завершилась ошибкой. Для этого нужна схема v4.on_cancelзапускается, если пользователь закрыл лист StoreKit. Для этого тоже нужна схема v4.
on_success. Отмена
или ошибка оставляют текущий Remote UI на месте.
В предпросмотре дашборда pnlight.purchase открывает симулятор. Success
запускает on_success. В схеме v4 Fail запускает on_fail, а Cancel
или закрытие симулятора запускают on_cancel. В схеме v3 в предпросмотре
по-прежнему только Success и Fail. Fail просто закрывает симулятор.
В предпросмотре реальная транзакция StoreKit не выполняется.
Используйте обработчик onPurchased в RemoteUiView, если приложению нужно
обновить права доступа, открыть контент или изменить навигацию после покупки из
Remote UI. Обработчик получает идентификатор купленного продукта. Он срабатывает
только для покупок, запущенных этим RemoteUiView, и не срабатывает для ручных
вызовов покупки через SDK.
Получение конфигураций вручную
ИспользуйтеgetUIConfig, если нужно самостоятельно получить конфигурацию плейсмента. При первом запуске приложения, когда требуется атрибуция, вызывайте его после отправки атрибуции и подождите 4–5 секунд после инициализации AppsFlyer перед запросом. SDK всё равно ожидает атрибуцию внутри, если attributionRequired равно true.
Работа кеша конфигураций
По умолчанию конфигурации Remote UI сначала загружаются из кеша. Если кешированная конфигурация существует, SDK может сразу вернуть её и обновить в фоновом режиме с помощью запроса ETag. Благодаря этому повторные показы остаются быстрыми, а изменения из дашборда продолжают поступать. ИспользуйтеignoreCache, когда приложение должно дождаться последнего ответа сервера, например во время QA или после изменения состояния пользователя, которое должно повлиять на таргетинг.
Обработка отсутствующих конфигураций и ошибок
При новом запросе к PNLight значениеnull или пустая конфигурация означает, что PNLight не вернул UI для плейсмента. Это может произойти, если плейсмента нет в разделе Remote UI, он отключён, условия таргетинга не совпали, правило однократного показа запретило показ, защита от записи экрана заблокировала пользователя, нет конфигурации для подходящей локали или не удалось обработать заполнитель времени выполнения.
Оболочки React Native и Flutter сообщают об ошибках загрузки отдельно от отсутствующего UI. Используйте onError в RemoteUiView или обработайте ошибки getUIConfig при ручном запросе.
Приложения Swift при ручном запросе могут использовать getUIConfigResult, чтобы различать все результаты: