Получение пейволов и продуктов для Remote Config пейволов в React Native SDK
Прежде чем отображать пейволы на основе Remote Config или кастомные пейволы, необходимо получить информацию о них. Обратите внимание, что этот раздел посвящён пейволам на основе Remote Config и кастомным пейволам. Если вы работаете с пейволами, настроенными в Paywall Builder, обратитесь к разделу Получение пейволов Paywall Builder и их конфигурации.
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.
Перед тем как начать получать пейволы и продукты в мобильном приложении (нажмите, чтобы развернуть)
-
Создайте продукты в дашборде Adapty.
-
Создайте пейвол и добавьте в него продукты в дашборде Adapty.
-
Создайте плейсменты и добавьте пейвол в плейсмент в дашборде Adapty.
-
Установите Adapty SDK в своём мобильном приложении.
Получение информации о пейволе
В Adapty продукт — это объединение продуктов из App Store и Google Play. Эти кросс-платформенные продукты добавляются в пейволы, позволяя показывать их пользователям в нужных плейсментах мобильного приложения.
Чтобы отобразить продукты, необходимо получить пейвол из одного из ваших плейсментов с помощью метода getPaywall.
Не прописывайте ID продуктов в коде. Единственный ID, который стоит хардкодить — это ID плейсмента. Пейволы настраиваются удалённо, поэтому количество продуктов и доступные офферы могут меняться в любой момент. Ваше приложение должно обрабатывать эти изменения динамически: если сегодня пейвол возвращает два продукта, а завтра три — отображайте все без изменений в коде.
try {
const id = 'YOUR_PLACEMENT_ID';
const locale = 'en';
const paywall = await adapty.getPaywall(id, locale);
// the requested paywall
} catch (error) {
// handle the error
}
| Параметр | Обязательность | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор плейсмента. Это значение вы указали при создании плейсмента в дашборде Adapty. |
| locale | необязательный по умолчанию: | Идентификатор локализации пейвола. Ожидается языковой код, состоящий из одного или нескольких subtag-ов, разделённых символом минус (-). Первый subtag — язык, второй — регион. Пример: Подробнее о кодах локалей и рекомендациях по их использованию см. в разделе Локализации и коды локалей. |
| fetchPolicy | по умолчанию: .reloadRevalidatingCacheData | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Мы рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают актуальные данные. Однако если у ваших пользователей нестабильное интернет-соединение, рассмотрите использование Обратите внимание: кеш сохраняется при перезапуске приложения и очищается только при его переустановке или вручную. Adapty SDK хранит пейволы на двух уровнях: в описанном выше кеше с регулярным обновлением и в резервных пейволах. Для ускоренной загрузки используется CDN, а при его недоступности — резервный сервер. Эта система гарантирует получение актуальных пейволов даже при слабом интернет-соединении. |
| loadTimeoutMs | по умолчанию: 5 сек | Ограничивает время выполнения этого метода. При истечении таймаута возвращаются кешированные данные или локальный фолбэк. Обратите внимание, что в редких случаях метод может завершиться немного позже указанного в |
Не прописывайте ID продуктов в коде! Так как пейволы настраиваются удалённо, доступные продукты, их количество и специальные офферы (например, бесплатные пробные периоды) могут меняться со временем. Убедитесь, что ваш код корректно обрабатывает эти сценарии.
Например, если изначально вы получаете 2 продукта, приложение должно показывать 2 продукта. Но если позже вы получите 3 продукта, приложение должно отображать все 3 без изменений в коде. Единственное, что нужно хардкодить — это ID плейсмента.
Параметры ответа:
| Параметр | Описание |
|---|---|
| Paywall | Объект AdaptyPaywall со списком ID продуктов, идентификатором пейвола, Remote Config и рядом других свойств. |
Получение продуктов
Получив пейвол, вы можете запросить массив продуктов, соответствующих ему:
try {
// ...paywall
const products = await adapty.getPaywallProducts(paywall);
// the requested products list
} catch (error) {
// handle the error
}
Параметры ответа:
| Параметр | Описание |
|---|---|
| Products | Список объектов AdaptyPaywallProduct с идентификатором продукта, названием, ценой, валютой, длительностью подписки и рядом других свойств. |
При реализации собственного дизайна пейвола вам, скорее всего, понадобятся эти свойства объекта AdaptyPaywallProduct. Ниже перечислены наиболее часто используемые из них; полный список доступных свойств смотрите в документации по ссылке.
| Свойство | Описание |
|---|---|
| Title | Для отображения названия продукта используйте product.localizedTitle. Локализация основана на стране магазина, выбранной пользователем, а не на локали устройства. |
| Price | Для отображения локализованной цены используйте product.price?.localizedString. Локализация основана на настройках локали устройства. Цену в виде числа можно получить через product.price?.amount — значение будет в местной валюте. Для получения символа валюты используйте product.price?.currencySymbol. |
| Subscription Period | Для отображения периода (например, неделя, месяц, год и т.д.) используйте product.subscription?.localizedSubscriptionPeriod. Локализация основана на локали устройства. Для программного получения периода подписки используйте product.subscription?.subscriptionPeriod. Из этого объекта можно получить свойство unit — длину периода ('day', 'week', 'month', 'year' или 'unknown'). Свойство numberOfUnits возвращает количество единиц периода. Например, для квартальной подписки в unit будет 'month', а в numberOfUnits — 3. |
| Introductory Offer | Чтобы отобразить бейдж или другой индикатор наличия introductory offer у подписки, используйте свойство product.subscription?.offer?.phases. Это список, который может содержать до двух фаз скидки: фазу бесплатного пробного периода и фазу вводной цены. Каждый объект фазы содержит следующие полезные свойства:• paymentMode: строка со значениями 'free_trial', 'pay_as_you_go', 'pay_up_front' и 'unknown'. Бесплатные пробные периоды имеют тип 'free_trial'.• price: скидочная цена в виде числа. Для бесплатных пробных периодов здесь будет 0.• localizedNumberOfPeriods: строка, локализованная в соответствии с локалью устройства, описывающая длительность оффера. Например, для трёхдневного пробного периода в этом поле будет '3 days'.• subscriptionPeriod: отдельные детали периода оффера. Работает так же, как описано в предыдущем разделе для обычных подписок.• localizedSubscriptionPeriod: форматированный период подписки для оффера в соответствии с локалью пользователя. |
Ускорение загрузки пейвола с помощью пейвола для аудитории по умолчанию
Как правило, пейволы загружаются почти мгновенно, и ускорять этот процесс не нужно. Однако если у вас много аудиторий и пейволов, а пользователи работают при слабом интернет-соединении, загрузка пейвола может занять больше времени, чем хотелось бы. В такой ситуации лучше показать пейвол по умолчанию, чтобы не оставлять пользователя ни с чем.
Для этого можно использовать метод getPaywallForDefaultAudience, который получает пейвол указанного плейсмента для аудитории All Users. Однако важно понимать, что рекомендуемый подход — использовать метод getPaywall, описанный в разделе Получение информации о пейволе выше.
Почему мы рекомендуем использовать getPaywall
У метода getPaywallForDefaultAudience есть несколько существенных недостатков:
- Возможные проблемы с обратной совместимостью: если вам нужно показывать разные пейволы для разных версий приложения (текущей и будущих), могут возникнуть трудности. Придётся либо разрабатывать пейволы с поддержкой текущей (устаревшей) версии, либо мириться с тем, что у пользователей с этой версией пейволы могут не отображаться корректно.
- Потеря таргетинга: все пользователи увидят одинаковый пейвол, предназначенный для аудитории All Users, — вы теряете персонализированный таргетинг (в том числе по странам, маркетинговой атрибуции и собственным атрибутам).
Если вы готовы принять эти ограничения ради более быстрой загрузки пейвола, используйте метод getPaywallForDefaultAudience следующим образом. В противном случае придерживайтесь метода getPaywall, описанного выше.
try {
const id = 'YOUR_PLACEMENT_ID';
const locale = 'en';
const paywall = await adapty.getPaywallForDefaultAudience(id, locale);
// the requested paywall
} catch (error) {
// handle the error
}
Метод getPaywallForDefaultAudience доступен начиная с версии React Native SDK 2.11.2.
| Параметр | Обязательность | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор плейсмента. Это значение вы указали при создании плейсмента в дашборде Adapty. |
| locale | необязательный по умолчанию: | Идентификатор локализации пейвола. Ожидается языковой код, состоящий из одного или нескольких subtag-ов, разделённых символом минус (-). Первый subtag — язык, второй — регион. Пример: Подробнее о кодах локалей и рекомендациях по их использованию см. в разделе Локализации и коды локалей. |
| fetchPolicy | по умолчанию: .reloadRevalidatingCacheData | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Мы рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают актуальные данные. Однако если у ваших пользователей нестабильное интернет-соединение, рассмотрите использование Обратите внимание: кеш сохраняется при перезапуске приложения и очищается только при его переустановке или вручную. |