Действия и типы данных плагина Adapty для FlutterFlow
Кастомные действия
Ниже перечислены методы Adapty, доступные во FlutterFlow через плагин Adapty. Их можно использовать как кастомные действия во FlutterFlow.
| Пользовательское действие | Описание | Аргументы действия | Типы данных Adapty — переменная вывода действия |
|---|---|---|---|
| activate | Инициализирует SDK Adapty | Нет | |
getPaywall | Получает пейвол. Не возвращает продукты пейвола. Используйте действие getPaywallProducts, чтобы получить актуальные продукты | AdaptyGetPaywallResult | |
getPaywallProducts | Возвращает список актуальных продуктов пейвола | AdaptyPaywall | AdaptyGetProductsResult |
getProductsIntroductoryOfferEligibility | Проверяет, имеет ли пользователь право на introductory offer для iOS-подписки | AdaptyPaywallProduct | AdaptyGetIntroEligibilitiesResult |
makePurchase | Завершает покупку и открывает доступ к контенту. Если у пейвола есть promotional offer, Adapty автоматически применяет его при оформлении покупки |
| AdaptyMakePurchaseResult |
getProfile | Получает профиль текущего пользователя приложения. Позволяет задавать уровни доступа и другие параметры Если запрос завершается ошибкой (например, из-за отсутствия интернета), возвращаются кешированные данные. Adapty регулярно обновляет кеш профиля, чтобы информация оставалась как можно более актуальной | Нет | AdaptyGetProfileResult |
| updateProfile | Изменяет необязательные атрибуты профиля текущего пользователя: email, номер телефона и т. д. Атрибуты можно использовать для создания сегментов пользователей или просматривать их в CRM | ID и любые параметры, которые нужно обновить для AdaptyProfile | AdaptyError (необязательно) |
| restorePurchases | Восстанавливает все покупки пользователя | Нет | AdaptyGetProfileResult |
| logShowPaywall | Фиксирует показ конкретного пейвола пользователю | AdaptyPaywall | AdaptyError (необязательно) |
| identify | Идентифицирует пользователя с помощью customerUserId из вашей системы | customerUserId | AdaptyError (необязательно) |
| logout | Выполняет выход текущего пользователя из приложения | Нет | AdaptyError (необязательно) |
| presentCodeRedemptionSheet | Отображает окно для активации промокодов (только iOS) | Нет | Нет |
Типы данных
Типы данных Adapty (наборы значений данных), передаваемые в FlutterFlow через плагин Adapty.
AdaptyAccessLevel
Информация об уровне доступа пользователя.
| Название поля | Тип | Описание |
|---|---|---|
| activatedAt | DateTime | Время активации данного уровня доступа |
| activeIntroductoryOfferType | String | Тип активного introductory offer. Если задано, значит в текущем расчётном периоде подписки применялось предложение |
| activePromotionalOfferId | String | ID активного promotional offer (приобретённого через iOS) |
| activePromotionalOfferType | String | Тип активного promotional offer (приобретённого через iOS). Если задано, значит в текущем расчётном периоде подписки применялось предложение |
| billingIssueDetectedAt | DateTime | Время обнаружения проблемы с оплатой. Подписка при этом может оставаться активной. Устанавливается в null при успешной обработке платежа |
| cancellationReason | String | Причина отмены подписки |
| expiresAt | DateTime | Время истечения уровня доступа (может быть в прошлом или не задано для пожизненного доступа) |
| id | String | Идентификатор уровня доступа |
| isActive | Boolean | True, если данный уровень доступа активен. Как правило, именно это свойство используется для проверки наличия у пользователя доступа к премиум-функциям |
| isInGracePeriod | Boolean | True, если данная автовозобновляемая подписка находится в льготном периоде |
| isLifetime | Boolean | True, если данный уровень доступа активен на всё время (без даты истечения) |
| isRefund | Boolean | True, если данная покупка была возвращена |
| offerId | String | ID активного promotional offer (приобретённого через Android) |
| renewedAt | DateTime | Время последнего продления уровня доступа |
| startsAt | DateTime | Время начала действия данного уровня доступа (может быть в будущем) |
| store | String | Стор, в котором была совершена покупка |
| unsubscribedAt | DateTime | Время отключения автопродления подписки. Подписка при этом может оставаться активной. Если не задано, пользователь повторно активировал подписку |
| vendorProductId | String | ID продукта в сторе, открывшего данный уровень доступа |
| willRenew | Boolean | True, если данная автовозобновляемая подписка настроена на продление |
AdaptyAccessLevelIdentifiers
Эта структура предназначена для замены пары ключ-значение в Map<String, AdaptyAccessLevel AdaptyAccessLevel.
| Название поля | Тип | Описание |
|---|---|---|
| accessLevelIdentifier | String | ID уровня доступа |
| accessLevel | Data (AdaptyAccessLevel) | Связанный AdaptyAccessLevel |
AdaptyCustomDoubleAttribute
Информация о пользовательских атрибутах типа double, заданных для пользователя.
| Название поля | Тип | Описание |
|---|---|---|
| key | String | Идентификатор пользовательского атрибута типа double |
| value | Double | Значение пользовательского атрибута типа double |
AdaptyCustomStringAttribute
Информация о пользовательских строковых атрибутах, заданных для пользователя.
| Название поля | Тип | Описание |
|---|---|---|
| key | String | Идентификатор пользовательского строкового атрибута |
| value | String | Значение пользовательского строкового атрибута |
AdaptyError
Содержит подробности об ошибке. Полный список кодов ошибок приведён в разделе React Native, Flutter, Unity — Обработка ошибок.
| Название поля | Тип | Описание |
|---|---|---|
| errorMessage | String | Человекочитаемое описание ошибки |
| errorCode | Integer | Числовой код, идентифицирующий ошибку |
AdaptyGetIntroEligibilitiesResult
Содержит результат выполнения пользовательского действия getProductsIntroductoryOfferEligibility.
| Название поля | Тип | Описание |
|---|---|---|
| value | List < Data (AdaptyProductIntroEligibility) > | Список статусов доступности introductory offer для пользователя |
| error | Data (AdaptyError) | Содержит детали ошибки через AdaptyError |
AdaptyGetPaywallResult
Содержит результат пользовательского действия getPaywall.
| Название поля | Тип | Описание |
|---|---|---|
| value | Data (AdaptyPaywall) | Содержит список объектов AdaptyPaywall |
| error | Data (AdaptyError) | Содержит информацию об ошибке через AdaptyError |
AdaptyGetProductsResult
Содержит результат выполнения пользовательского действия getPaywallProducts.
| Название поля | Тип | Описание |
|---|---|---|
| value | List < Data (AdaptyPaywallProduct) > | Содержит список AdaptyPaywallProducts |
| error | Data (AdaptyError) | Содержит информацию об ошибке через AdaptyError |
AdaptyGetProfileResult
Содержит результат выполнения пользовательского действия getProfile.
| Название поля | Тип | Описание |
|---|---|---|
| value | Data (AdaptyProfile) | Содержит профиль пользователя в виде AdaptyProfile |
| error | Data (AdaptyError) | Содержит информацию об ошибке через AdaptyError |
AdaptyMakePurchaseResult
Содержит результат пользовательского действия makePurchase.
| Название поля | Тип | Описание |
|---|---|---|
| value | Data (AdaptyProfile) | Содержит профиль пользователя в виде AdaptyProfile |
| error | Data (AdaptyError) | Содержит информацию об ошибке через AdaptyError |
AdaptyNonSubscription
Информация о покупках, не являющихся подписками. Это могут быть разовые (расходуемые) покупки, разблокировки (например, новая карта в игре) и т. д.
| Название поля | Тип | Описание |
|---|---|---|
| isConsumable | Boolean | Указывает, является ли продукт расходуемой покупкой |
| isOneTime | Boolean | Указывает, является ли продукт разовой покупкой (например, если true, покупка обрабатывается только один раз) |
| isRefund | Boolean | Указывает, был ли выполнен возврат средств за продукт |
| isSandbox | Boolean | Указывает, была ли покупка совершена в среде песочницы |
| purchasedAt | DateTime | Время, когда был куплен продукт |
| purchaseId | String | ID покупки в Adapty. Можно использовать для отслеживания разовых покупок |
| store | String | Стор, в котором был куплен продукт (например, App Store, Google Play) |
| vendorProductId | String | ID продукта в системе поставщика |
| vendorTransactionId | String | ID транзакции в системе поставщика |
AdaptyPaywall
Информация о пейволе.
| Название поля | Тип | Описание |
|---|---|---|
| abTestName | String | Название родительского A/B-теста |
| hasViewConfiguration | Boolean | Указывает, есть ли конфигурация отображения для пейвола |
| locale | String | ID локали пейвола |
| name | String | Название пейвола |
| placement.id | String | ID родительского плейсмента |
| remoteConfigString | String | Пользовательский словарь из дашборда Adapty, связанный с этим пейволом |
| placement.revision | Integer | Текущая ревизия/версия пейвола. Каждое изменение создаёт новую ревизию |
| variationId | String | ID варианта, используемый для атрибуции покупок этому пейволу |
| vendorProductIds | String | Массив ID продуктов, связанных с пейволом |
AdaptyPaywallProduct
Информация о продукте.
| Название поля | Тип | Описание |
|---|---|---|
| vendorProductId | String | Идентификатор продукта в сторе |
| localizedDescription | String | Описание продукта на языке пользователя |
| localizedTitle | String | Название продукта на языке пользователя |
| regionCode | String | Код региона локали, используемый для форматирования цены продукта (применяется для iOS) |
| isFamilyShareable | Boolean | Булево значение, указывающее, доступен ли продукт для семейного доступа в App Store Connect. Всегда возвращает FALSE для iOS ниже версии 14.0 и macOS ниже версии 11.0 (применяется для iOS) |
| paywallVariationId | String | Идентификатор варианта, используемый для атрибуции покупок к данному пейволу |
| paywallABTestName | String | Название родительского A/B-теста |
| paywallName | String | Название родительского пейвола |
| price | Data (AdaptyPriceData) | Цена продукта |
| subscriptionDetails | Data (AdaptySubscriptionDetails) | Информация о подписке |
AdaptyPrice
Информация о цене продукта.
| Название поля | Тип | Описание |
|---|---|---|
| amount | Double | Числовое значение цены |
| currencyCode | String | Код валюты цены |
| currencySymbol | String | Символ валюты |
| localizedString | String | Цена, отображаемая на языке пользователя |
AdaptyProductIntroEligibility
Определяет, имеет ли пользователь право на introductory offer для подписки iOS.
| Название поля | Тип | Описание |
|---|---|---|
| vendorProductId | String | Идентификатор продукта в сторе |
| eligibility | AdaptyEligibilityEnum | Определяет, имеет ли пользователь право на introductory offer для подписки iOS |
AdaptyProductNonsubscriptions
Детали активной неподписочной покупки, связанной с этим продуктом.
| Название поля | Тип | Описание |
|---|---|---|
| productId | String | Идентификатор продукта в сторе |
| nonsubscriptions | AdaptyNonSubscription | Информация о покупках без подписки. Это могут быть разовые (расходуемые) покупки, разблокировки контента (например, новая карта в игре) и т. д. |
AdaptyProductSubscriptions
Детали активной подписки, привязанной к этому продукту.
| Название поля | Тип | Описание |
|---|---|---|
| productId | String | ID продукта в сторе |
| subscription | AdaptySubscription | Информация о покупках подписки |
AdaptyProfile
Информация о профиле пользователя
| Название поля | Тип | Описание |
|---|---|---|
| accessLevels | List < Data (AdaptyAccessLevelIdentifiers) > | Список всех уровней доступа, принадлежащих пользователю |
| profileId | String | ID профиля пользователя |
| customerUserId | String | ID пользователя в системе вендора |
| subscriptions | List < Data (MapKeySubscriptions) > | Список всех подписок, купленных пользователем |
| nonSubscriptions | List < Data (MapKeyNonSubscriptions) > | Список всех продуктов без подписки, купленных пользователем |
AdaptyProfileParameters
Информация о пользователе.
| Название поля | Тип | Описание |
|---|---|---|
| firstName | String | Имя пользователя |
| lastName | String | Фамилия пользователя |
| gender | AdaptyGenderEnum | Пол пользователя |
| birthday | String | Дата рождения пользователя |
| String | Email пользователя | |
| phoneNumber | String | Номер телефона пользователя |
| facebookAnonymousId | String | ID пользователя в интеграции Facebook Ads |
| amplitudeUserId | String | ID пользователя в интеграции Amplitude |
| amplitudeDeviceId | String | ID устройства пользователя в интеграции Amplitude |
| mixpanelUserId | String | ID пользователя в интеграции Mixpanel |
| appmetricaProfileId | String | ID пользователя в интеграции AppMetrica |
| appmetricaDeviceId | String | ID устройства пользователя в интеграции AppMetrica |
| oneSignalPlayerId | String | ID пользователя в интеграции OneSignal |
| pushwooshHWID | String | ID устройства пользователя в интеграции Pushwoosh |
| firebaseAppInstanceId | String | ID пользователя в интеграции Firebase |
| airbridgeDeviceId | String | ID устройства пользователя в интеграции Airbridge |
| appTrackingTransparencyStatus | AdaptyATTStatus | Статус доступа к IDFA (используется для iOS) |
| analyticsDisabled | Boolean | Признак того, что внешняя аналитика отключена для пользователя |
| customStringAttributes | List < Data (AdaptyCustomStringAttribute) > | Список пользовательских строковых атрибутов пользователя |
| customDoubleAttributes | List < Data (AdaptyCustomDoubleAttribute) > | Список пользовательских числовых атрибутов пользователя |
AdaptySubscription
Информация о существующей подписке пользователя.
| Название поля | Тип | Описание |
|---|---|---|
| activatedAt | DateTime | Время активации подписки |
| activeIntroductoryOfferType | String | Тип активного introductory offer. Если задан, значит в течение данного периода подписки было применено предложение |
| activePromotionalOfferId | String | ID активного promotional offer (используется для iOS) |
| activePromotionalOfferType | String | Тип активного promotional offer (используется для iOS). Если задан, значит в течение данного периода подписки было применено предложение |
| cancellationReason | String | Причина отмены подписки |
| expiresAt | DateTime | Время истечения подписки |
| renewedAt | DateTime | Время последнего продления подписки |
| unsubscribedAt | DateTime | Время отключения автопродления подписки. Подписка при этом может оставаться активной. Если не задано — пользователь повторно активировал подписку |
| billingIssueDetectedAt | DateTime | Время обнаружения проблемы с оплатой. Подписка при этом может оставаться активной. Сбрасывается в null при успешной обработке платежа |
| isActive | Boolean | True, если подписка активна. Как правило, это поле используется для проверки доступа пользователя к премиум-функциям |
| isInGracePeriod | Boolean | True, если автовозобновляемая подписка находится в льготном периоде |
| isLifetime | Boolean | True, если подписка действует бессрочно (без даты истечения) |
| isRefund | Boolean | True, если покупка была возвращена |
| isSandbox | Boolean | Указывает, была ли покупка совершена в среде песочницы |
| offerId | String | ID активного promotional offer (используется для Android) |
| startsAt | DateTime | Время начала действия данного уровня доступа (может быть в будущем) |
| store | String | Стор, в котором был куплен продукт (например, App Store, Google Play) |
| vendorOriginalTransactionId | String | ID первоначальной подписки в системе вендора |
| vendorProductId | String | ID продукта в системе вендора |
| vendorTransactionId | String | ID транзакции в системе вендора |
| willRenew | Boolean | True, если автовозобновляемая подписка настроена на продление |
AdaptySubscriptionDetails
Схема объекта Subscription, являющегося частью AdaptyPaywallProduct.
| Название поля | Тип | Описание |
|---|---|---|
| androidBasePlanId | String | ID базового плана в Google Play Store или ID цены в Stripe. |
| androidIntroductoryOfferEligibility | AdaptyEligibilityEnum | Определяет, имеет ли пользователь право на introductory offer для iOS-подписки |
| androidOfferId | String | ID активного promotional offer (используется для Android) |
| androidOfferTags | List < String > | Список пользовательских тегов, заданных для базовых планов и предложений по подписке. |
| introductoryOffer | List < Data (AdaptySubscriptionPhase) > | ID introductory offer (используется для iOS) |
| localizedSubscriptionPeriod | String | Период подписки на языке пользователя |
| promotionalOffer | Data (AdaptySubscriptionPhase) | Детали promotional offer (используется для iOS) |
| promotionalOfferEligibility | Boolean | Определяет, имеет ли пользователь право на promotional offer для iOS-подписки |
| promotionalOfferId | String | ID promotional offer (используется для iOS) |
| renewalType | AdaptyRenewalTypeEnum | Определяет, является ли подписка автовозобновляемой, через AdaptyRenewalTypeEnum |
| subscriptionGroupIdentifier | String | ID группы продуктов, к которой относится продукт (используется для iOS) |
| subscriptionPeriod | Data (AdaptySubscriptionPeriod) | Длительность подписки |
AdaptySubscriptionPeriod
Длительность подписки.
| Название поля | Тип | Описание |
|---|---|---|
| numberOfUnits | Integer | Количество дней/недель/месяцев/лет, на которое оформляется подписка. |
| unit | AdaptyPeriodUnitEnum | Единица измерения периода: дни, недели, месяцы, годы. |
AdaptySubscriptionPhase
Представляет фазу подписки, например бесплатный пробный период или introductory offer.
| Название поля | Тип | Описание |
|---|---|---|
| identifier | String | ID фазы |
| localizedNumberOfPeriods | String | Длительность фазы. Например, предложение на 6 месяцев отобразится как 6 months на языке пользователя. |
| localizedSubscriptionPeriod | String | Длительность подписки на языке пользователя, например 3 months. |
| numberOfPeriods | Integer | Количество периодов подписки в данной фазе. Например, предложение на 6 месяцев будет содержать два периода по 3 месяца. |
| paymentMode | AdaptyPaymentModeEnum | Модель оплаты, используемая для данной фазы. |
| price | Data (AdaptyPrice) | Цена данной фазы. |
| subscriptionPeriod | Data (AdaptySubscriptionPeriod) | Период подписки, на котором основана данная фаза. |
AdaptySubscriptionUpdateParameters
(Только для Android) Параметры для замены одной подписки на другую.
| Поле | Тип | Описание |
|---|---|---|
| oldSubVendorProductId | String | ID текущей подписки в Play Store, которую вы хотите заменить. |
| replacementMode | AdaptySubscriptionUpdateReplacementMode | Enum, соответствующий значениям BillingFlowParams.ProrationMode. |
MapKeyNonSubscriptions
Замена словаря для AdaptyNonSubscription.
| Название поля | Тип |
|---|---|
| key | String |
| value | List < Data (AdaptyNonSubscription) > |
MapKeySubscriptions
Замена словаря для AdaptySubscription.
| Название поля | Тип |
|---|---|
| key | String |
| value | List < Data (AdaptySubscription) > |
Перечисления
Перечисления Adapty (переменные, представляющие собой наборы предопределённых констант), поставляемые во FlutterFlow с плагином Adapty.
AdaptyEligibilityEnum
Определяет, имеет ли пользователь право на introductory offer для подписки iOS.
| Название поля | Описание |
|---|---|
| eligible | Пользователь имеет право на introductory offer — можно безопасно отображать эту информацию в интерфейсе |
| ineligible | Пользователь не имеет права на получение какого-либо предложения — не следует показывать его в интерфейсе |
| notApplicable | Для этого продукта не настроено ни одного предложения |
AdaptyGenderEnum
Определяет пол пользователя.
| Название поля | Описание |
|---|---|
| none | Пол не указан |
| female | Пол пользователя — женский |
| male | Пол пользователя — мужской |
| Other | Пользователь указал пол как «другой» |
AdaptyPaymentModeEnum
Определяет модель оплаты.
| Название поля | Описание |
|---|---|
| payAsYouGo | Модель оплаты, при которой пользователь платит по факту использования продукта или сервиса, а не вносит фиксированную сумму заранее |
| payUpFront | Модель оплаты, при которой пользователь платит до получения продукта или сервиса |
| freeTrial | Пользователь находится на бесплатном пробном периоде |
| unknown | Модель оплаты не определена |
AdaptyPeriodUnitEnum
Определяет единицы измерения периодов.
| Название поля | Описание |
|---|---|
| day | В днях |
| week | В неделях |
| month | В месяцах |
| year | В годах |
| unknown | Не определено |
AdaptyRenewalTypeEnum
Определяет, является ли подписка автоматически возобновляемой.
| Field Name | Description |
|---|---|
| prepaid | Подписка является предоплаченной и не возобновляется автоматически. |
| autorenewable | Подписка является автоматически возобновляемой. |
AdaptySubscriptionUpdateReplacementMode
Определяет режим обновления подписки для Android.
| Название поля | Описание |
|---|---|
| withTimeProration | (по умолчанию) Новый план вступает в силу немедленно, оставшееся время пересчитывается и зачисляется на счёт пользователя. |
| chargeProratedPrice | Новый план вступает в силу немедленно, расчётный период остаётся прежним. Списывается оплата за оставшийся период. Доступно только при повышении уровня подписки. |
| withoutProration | Новый план вступает в силу немедленно, новая цена будет списана в следующую дату продления. Расчётный период остаётся прежним. |
| deferred | Новая покупка оформляется немедленно, но новый план вступает в силу после истечения текущего. |
| chargeFullPrice | Новый план вступает в силу немедленно, расчётный период остаётся прежним. Списывается полная стоимость за оставшийся период. Доступно только при повышении уровня подписки. |
Состояния приложения
Переменные состояния приложения — это специальные переменные, которые хранят текущее состояние приложения. Они доступны и могут изменяться в любом месте приложения: на всех страницах и во всех компонентах. Такой тип переменных удобен для хранения данных, которые нужно передавать между разными частями приложения, — например, пользовательских настроек или токенов аутентификации.
| Название поля | Тип данных | Сохраняется | Описание |
|---|---|---|---|
| currentProfile | Data (AdaptyProfile) | False | Переменная, содержащая информацию о текущем профиле пользователя. Поддерживайте её в актуальном состоянии. |