Получение пейволов и продуктов для пейволов с Remote Config в Unity SDK
Прежде чем показывать Remote Config и кастомные пейволы, нужно получить информацию о них. Обратите внимание, что этот раздел посвящён Remote Config и кастомным пейволам. Для получения информации о флоу или пейволах, настроенных в Flow Builder или Paywall Builder, обратитесь к разделу Получение флоу и пейволов.
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.
Прежде чем начать получать флоу и продукты в мобильном приложении (нажмите, чтобы развернуть)
-
Создайте продукты в дашборде Adapty.
-
Создайте флоу или пейвол и добавьте в него продукты в дашборде Adapty.
-
Создайте плейсменты и добавьте в них флоу или пейвол в дашборде Adapty.
-
Установите SDK Adapty в своё мобильное приложение.
Получение информации о флоу
В Adapty продукт объединяет в себе продукты App Store и Google Play. Эти кросс-платформенные продукты интегрируются во флоу и пейволы, позволяя отображать их в конкретных плейсментах мобильного приложения.
Чтобы показать продукты, необходимо получить AdaptyFlow из одного из ваших плейсментов с помощью метода GetFlow.
Не прописывайте ID продуктов в коде. Единственный ID, который нужно хардкодить — это ID плейсмента. Флоу настраиваются удалённо, поэтому количество продуктов и доступных офферов может меняться в любой момент. Ваше приложение должно обрабатывать эти изменения динамически — если сегодня флоу возвращает два продукта, а завтра три, отображайте все из них без изменений в коде.
Adapty.GetFlow(
"YOUR_PLACEMENT_ID",
AdaptyPlacementFetchPolicy.Default,
TimeSpan.FromSeconds(5),
(flow, error) => {
if (error != null) {
// handle the error
return;
}
// flow - the requested flow
}
);
| Параметр | Наличие | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор плейсмента. Это значение вы указали при создании плейсмента в дашборде Adapty. |
| fetchPolicy | по умолчанию: AdaptyPlacementFetchPolicy.Default | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают самые актуальные данные. Однако если у ваших пользователей нестабильное интернет-соединение, рассмотрите использование Обратите внимание: кеш сохраняется при перезапуске приложения и очищается только при его переустановке или вручную. Adapty SDK хранит флоу и пейволы в двух слоях: регулярно обновляемый кеш, описанный выше, и резервные пейволы. Также используется CDN для более быстрой загрузки флоу и пейволов и отдельный резервный сервер на случай недоступности CDN. Эта система обеспечивает получение актуальных версий флоу и пейволов при сохранении надёжности даже при нестабильном интернет-соединении. |
| loadTimeout | по умолчанию: 5 сек | Это значение ограничивает таймаут для данного метода. По истечении таймаута будут возвращены кешированные данные или локальный резервный вариант. Обратите внимание: в редких случаях метод может завершиться с небольшой задержкой относительно значения, указанного в |
Не используйте жёстко заданные ID продуктов! Поскольку флоу настраиваются удалённо, доступные продукты, их количество и специальные предложения (например, бесплатные пробные периоды) могут меняться со временем. Убедитесь, что ваш код учитывает эти сценарии.
Например, если изначально вы получаете 2 продукта, приложение должно отображать именно 2 продукта. Однако если позже вы получите 3 продукта, приложение должно показывать все 3 без каких-либо изменений в коде. Единственное, что нужно задать жёстко, — это ID плейсмента.
Параметры ответа:
| Параметр | Описание |
|---|---|
| Flow | Объект AdaptyFlow с: идентификатором флоу, вариантами пейвола (Paywalls — каждый со своими идентификаторами продуктов), списком RemoteConfigs (по одной записи на каждую настроенную локаль) и рядом других свойств. Чтобы получить продукты флоу, вызовите GetPaywallProducts(flow). |
В версии 4 метод GetFlow не имеет параметра locale. При отображении флоу через CreateFlowView локализация разрешается автоматически. Для кастомных пейволов все доступные локали возвращаются вместе в flow.RemoteConfigs — выберите локаль, соответствующую устройству пользователя или настройкам вашего приложения. Подробнее см. в разделе Локализации и коды локалей.
Получение продуктов
Получив флоу, вы можете запросить массив продуктов, связанных с ним:
Adapty.GetPaywallProducts(flow, (products, error) => {
if (error != null) {
// handle the error
return;
}
// products - the requested products array
});Параметры ответа:
| Параметр | Описание |
|---|---|
| Products | Список объектов AdaptyPaywallProduct со следующими свойствами: идентификатор продукта, название продукта, цена, валюта, длительность подписки и ряд других параметров. |
При реализации собственного дизайна флоу вам, скорее всего, понадобятся свойства объекта AdaptyPaywallProduct. Ниже представлены наиболее часто используемые из них.
| Свойство | Описание |
|---|---|
| Title | Чтобы отобразить название продукта, используйте product.LocalizedTitle. Обратите внимание: локализация основана на выбранной пользователем стране в сторе, а не на локали самого устройства. |
| Price | Чтобы отобразить цену в локализованном формате, используйте product.Price.LocalizedString. Локализация основана на информации о локали устройства. Также можно получить цену в виде числа через product.Price.Amount — значение будет указано в местной валюте. Чтобы получить соответствующий символ валюты, используйте product.Price.CurrencySymbol. |
| Subscription Period | Чтобы отобразить период (например, неделя, месяц, год и т. д.), используйте product.Subscription?.LocalizedPeriod. Локализация основана на локали устройства. Чтобы получить период подписки программно, используйте product.Subscription?.Period. Через это свойство доступен enum Unit для получения длины периода (AdaptySubscriptionPeriodUnit.Day, AdaptySubscriptionPeriodUnit.Week, AdaptySubscriptionPeriodUnit.Month, AdaptySubscriptionPeriodUnit.Year или AdaptySubscriptionPeriodUnit.Unknown). Значение NumberOfUnits содержит количество единиц периода. Например, для квартальной подписки в свойстве Unit будет AdaptySubscriptionPeriodUnit.Month, а в NumberOfUnits — 3. |
| Introductory Offer | Чтобы отобразить бейдж или другой индикатор наличия introductory offer у подписки, используйте свойство product.Subscription?.Offer?.Phases. Это список, который может содержать до двух фаз скидки: фазу бесплатного пробного периода и фазу вводной цены. Каждый объект фазы содержит следующие полезные свойства:• PaymentMode: enum со значениями AdaptyPaymentMode.FreeTrial, AdaptyPaymentMode.PayAsYouGo, AdaptyPaymentMode.PayUpFront и AdaptyPaymentMode.Unknown. Бесплатный пробный период соответствует типу AdaptyPaymentMode.FreeTrial.• Price: объект AdaptyPrice со скидочной ценой — используйте Price.Amount для числового значения и Price.LocalizedString для отображения. Для бесплатных пробных периодов значение Price.Amount равно 0.• LocalizedNumberOfPeriods: строка, локализованная по локали устройства, описывающая длительность предложения. Например, для трёхдневного пробного периода здесь будет "3 days".• SubscriptionPeriod: альтернативный способ получить детали периода предложения. Работает так же, как описано в предыдущем разделе.• LocalizedSubscriptionPeriod: отформатированный период подписки для скидки в соответствии с локалью пользователя. |
Ускорьте загрузку флоу с помощью флоу для аудитории по умолчанию
Как правило, флоу загружаются практически мгновенно, так что беспокоиться об этом не нужно. Однако если у вас много аудиторий и плейсментов, а у пользователей слабое интернет-соединение, загрузка флоу может занять больше времени, чем хотелось бы. В таких случаях лучше показать флоу по умолчанию, чтобы обеспечить плавный пользовательский опыт, — вместо того чтобы не показывать ничего.
Чтобы решить эту задачу, можно использовать метод GetFlowForDefaultAudience, который получает флоу указанного плейсмента для аудитории All Users. Однако важно понимать, что рекомендуемый подход — получать флоу с помощью метода GetFlow, как описано в разделе Получение информации о флоу выше.
Почему мы рекомендуем использовать GetFlow
Метод GetFlowForDefaultAudience имеет ряд существенных недостатков:
- Потенциальные проблемы обратной совместимости: если нужно показывать разные флоу для разных версий приложения (текущей и будущих), могут возникнуть сложности. Придётся либо проектировать флоу с поддержкой текущей (устаревшей) версии, либо мириться с тем, что пользователи этой версии могут столкнуться с проблемами при отображении флоу.
- Потеря таргетинга: все пользователи будут видеть один и тот же флоу, рассчитанный на аудиторию All Users, — а значит, вы теряете персонализированный таргетинг (в том числе по странам, маркетинговой атрибуции или собственным пользовательским атрибутам).
Если вы готовы принять эти ограничения ради более быстрого получения флоу, используйте метод GetFlowForDefaultAudience следующим образом. В противном случае придерживайтесь метода GetFlow, описанного выше.
Adapty.GetFlowForDefaultAudience(
"YOUR_PLACEMENT_ID",
AdaptyPlacementFetchPolicy.Default,
(flow, error) => {
if (error != null) {
// handle the error
return;
}
// flow - the requested flow
}
);
| Параметр | Наличие | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор плейсмента. Это значение, которое вы указали при создании плейсмента в дашборде Adapty. |
| fetchPolicy | по умолчанию: AdaptyPlacementFetchPolicy.Default | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае сбоя. Мы рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают самые актуальные данные. Однако если у ваших пользователей нестабильное интернет-соединение, рассмотрите использование Обратите внимание: кеш сохраняется после перезапуска приложения и очищается только при его переустановке или вручную. |
Прежде чем показывать Remote Config и кастомные пейволы, необходимо получить информацию о них. Обратите внимание, что этот раздел относится к Remote Config и кастомным пейволам. Чтобы узнать, как получать пейволы, настроенные в Paywall Builder, обратитесь к статье Получение пейволов Paywall Builder и их конфигурации.
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.
Прежде чем начать получать пейволы и продукты в мобильном приложении (нажмите, чтобы развернуть)
-
Создайте продукты в дашборде Adapty.
-
Создайте пейвол и добавьте продукты в него в дашборде Adapty.
-
Создайте плейсменты и добавьте пейвол в плейсмент в дашборде Adapty.
-
Установите SDK в своё мобильное приложение.
Получение информации о пейволе
В Adapty продукт объединяет продукты из App Store и Google Play. Эти кросс-платформенные продукты встраиваются в пейволы, что позволяет показывать их в нужных плейсментах мобильного приложения.
Чтобы отобразить продукты, нужно получить пейвол из одного из ваших плейсментов с помощью метода getPaywall.
Не хардкодьте ID продуктов. Единственный ID, который нужно хардкодить — это ID плейсмента. Пейволы настраиваются удалённо, поэтому количество продуктов и доступных офферов может меняться в любой момент. Приложение должно обрабатывать эти изменения динамически: если сегодня пейвол возвращает два продукта, а завтра три — отображайте все без изменений в коде.
Adapty.GetPaywall("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
if(error != null) {
// handle the error
return;
}
// paywall - the resulting object
});
| Параметр | Наличие | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор плейсмента. Это значение, которое вы указали при создании плейсмента в дашборде Adapty. |
| locale | опциональный по умолчанию: | Идентификатор локализации пейвола. Ожидается код языка, состоящий из одного или нескольких подтегов, разделённых символом минус (-). Первый подтег обозначает язык, второй — регион. Например: Подробнее о кодах локалей и рекомендуемых подходах к их использованию — в разделе Локализации и коды локалей. |
| fetchPolicy | по умолчанию: .reloadRevalidatingCacheData | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае сбоя. Мы рекомендуем этот вариант, поскольку он гарантирует, что пользователи всегда получают актуальные данные. Однако если ваши пользователи часто сталкиваются с нестабильным интернет-соединением, рассмотрите использование Обратите внимание: кеш сохраняется при перезапуске приложения и очищается только при его переустановке или вручную. Adapty SDK хранит пейволы на двух уровнях: регулярно обновляемый кеш, описанный выше, и резервные пейволы. Также используется CDN для более быстрой загрузки пейволов и отдельный резервный сервер на случай недоступности CDN. Такая система гарантирует, что вы всегда получаете актуальную версию пейволов, обеспечивая надёжность даже при слабом интернете. |
| loadTimeout | по умолчанию: 5 сек | Ограничивает время ожидания для данного метода. По истечении таймаута будут возвращены кешированные данные или локальный резервный вариант. Обратите внимание: в редких случаях метод может завершиться с небольшой задержкой сверх значения, указанного в |
| Не задавайте ID продуктов жёстко в коде! Поскольку пейволы настраиваются удалённо, набор доступных продуктов, их количество и специальные предложения (например, бесплатные пробные периоды) могут меняться со временем. Убедитесь, что ваш код учитывает эти сценарии. |
Например, если изначально вы получаете 2 продукта, приложение должно отображать именно 2 продукта. Но если позднее вы получите 3 продукта, приложение должно показать все 3 без каких-либо изменений в коде. Единственное, что нужно задать жёстко, — это ID плейсмента.
Параметры ответа:
| Параметр | Описание |
|---|---|
| Paywall | Объект AdaptyPaywall со списком идентификаторов продуктов, идентификатором пейвола, Remote Config и рядом других свойств. |
Получение продуктов
Получив пейвол, вы можете запросить массив продуктов, соответствующих ему:
Adapty.GetPaywallProducts(paywall, (products, error) => {
if(error != null) {
// handle the error
return;
}
// products - the requested products array
});Параметры ответа:
| Параметр | Описание |
|---|---|
| Products | Список объектов AdaptyPaywallProduct с: идентификатором продукта, названием продукта, ценой, валютой, длительностью подписки и рядом других свойств. |
При реализации собственного дизайна пейвола вам, скорее всего, понадобятся свойства объекта AdaptyPaywallProduct. Ниже приведены наиболее часто используемые из них, полный список доступных свойств смотрите в документации по ссылке. | |
| Свойство | Описание |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Title | Чтобы отобразить название продукта, используйте product.LocalizedTitle. Локализация основана на стране стора, выбранной пользователем, а не на локали устройства. |
| Price | Чтобы отобразить локализованную цену, используйте product.Price.LocalizedString. Локализация основана на локали устройства. Также можно получить цену в виде числа через product.Price.Amount — значение будет указано в локальной валюте. Для получения символа валюты используйте product.Price.CurrencySymbol. |
| Subscription Period | Чтобы отобразить период (например, неделя, месяц, год и т. д.), используйте product.Subscription?.LocalizedPeriod. Локализация основана на локали устройства. Для программного получения периода подписки используйте product.Subscription?.Period. Там можно обратиться к перечислению Unit для получения длины (т. е. AdaptySubscriptionPeriodUnit.Day, AdaptySubscriptionPeriodUnit.Week, AdaptySubscriptionPeriodUnit.Month, AdaptySubscriptionPeriodUnit.Year или AdaptySubscriptionPeriodUnit.Unknown). Значение NumberOfUnits возвращает количество единиц периода. Например, для квартальной подписки в свойстве Unit будет AdaptySubscriptionPeriodUnit.Month, а в NumberOfUnits — 3. |
| Introductory Offer | Чтобы отобразить значок или другой индикатор наличия у подписки introductory offer, используйте свойство product.Subscription?.Offer?.Phases. Это список, который может содержать до двух фаз скидки: фазу бесплатного пробного периода и фазу вводной цены. Каждый объект фазы содержит следующие полезные свойства:• PaymentMode: перечисление со значениями AdaptyPaymentMode.FreeTrial, AdaptyPaymentMode.PayAsYouGo, AdaptyPaymentMode.PayUpFront и AdaptyPaymentMode.Unknown. Бесплатные пробные периоды имеют тип AdaptyPaymentMode.FreeTrial.• Price: объект AdaptyPrice со скидочной ценой — используйте Price.Amount для получения числа и Price.LocalizedString для отображения. Для бесплатных пробных периодов Price.Amount равно 0.• LocalizedNumberOfPeriods: строка, локализованная по локали устройства, описывающая длительность предложения. Например, для трёхдневного пробного периода в этом поле будет "3 days".• SubscriptionPeriod: альтернативный способ получить отдельные детали периода предложения. Работает так же, как описано в предыдущем разделе для обычных подписок.• LocalizedSubscriptionPeriod: отформатированный период подписки скидки для локали пользователя. |
Ускорьте загрузку пейвола с помощью пейвола для аудитории по умолчанию
Как правило, пейволы загружаются почти мгновенно, поэтому беспокоиться об ускорении этого процесса не нужно. Однако если у вас много аудиторий и пейволов, а пользователи работают при слабом интернет-соединении, загрузка пейвола может занять больше времени, чем хотелось бы. В таких случаях имеет смысл показывать пейвол по умолчанию, чтобы пользователь не оставался без пейвола вовсе.
Чтобы решить эту задачу, можно использовать метод GetPaywallForDefaultAudience, который получает пейвол указанного плейсмента для аудитории All Users. Однако важно понимать, что рекомендуемый способ — получать пейвол методом getPaywall, как описано в разделе Получение пейвола выше.
Используйте GetPaywall вместо GetPaywallForDefaultAudience, так как последний имеет важные ограничения:
- Проблемы совместимости: Могут возникнуть сложности при поддержке нескольких версий приложения — придётся либо проектировать с учётом обратной совместимости, либо мириться с тем, что в старых версиях отображение может быть некорректным.
- Без персонализации: Показывает контент только для аудитории «All Users», без таргетинга по стране, атрибуции или пользовательским атрибутам.
Если скорость загрузки для вашего случая важнее этих недостатков, используйте GetPaywallForDefaultAudience, как показано ниже. В противном случае используйте GetPaywall, как описано выше.
Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
if(error != null) {
// handle the error
return;
}
// paywall - the resulting object
});Параметры:
| Параметр | Обязательность | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор нужного плейсмента. Это значение вы указываете при создании плейсмента в дашборде Adapty. |
| locale | необязательный по умолчанию: | Идентификатор локализации пейвола. Ожидается языковой код, состоящий из одного или двух подтегов, разделённых символом минус (-). Первый подтег обозначает язык, второй — регион. Например: |
| fetchPolicy | по умолчанию: .reloadRevalidatingCacheData | По умолчанию SDK пытается загрузить данные с сервера и возвращает кэшированные данные в случае сбоя. Мы рекомендуем этот вариант — он гарантирует, что пользователи всегда получают актуальные данные. Однако если у ваших пользователей нестабильное интернет-соединение, рассмотрите использование Обратите внимание: кэш сохраняется при перезапуске приложения и очищается только при его переустановке или вручную. Adapty SDK хранит пейволы локально на двух уровнях: регулярно обновляемый кэш, описанный выше, и резервные пейволы. Для более быстрой загрузки пейволов мы также используем CDN и отдельный резервный сервер на случай недоступности CDN. Такая система гарантирует, что вы всегда получаете последнюю версию пейволов, обеспечивая надёжность даже при нестабильном интернет-соединении. |