Adapty FlutterFlow 插件操作与数据类型
自定义操作
以下是通过 Adapty 插件为 FlutterFlow 提供的 Adapty 方法,可在 FlutterFlow 中作为自定义操作使用。
| 自定义操作 | 说明 | 操作参数 | Adapty 数据类型 - 操作输出变量 |
|---|---|---|---|
| activate | 初始化 Adapty SDK | 无 | |
getPaywall | 获取付费墙。不返回付费墙产品,请使用 getPaywallProducts 操作获取实际产品 | AdaptyGetPaywallResult | |
getPaywallProducts | 返回付费墙实际产品列表 | AdaptyPaywall | AdaptyGetProductsResult |
getProductsIntroductoryOfferEligibility | 检查用户是否符合 iOS 订阅新用户优惠的资格 | AdaptyPaywallProduct | AdaptyGetIntroEligibilitiesResult |
makePurchase | 完成购买并解锁内容。如果付费墙包含促销活动,Adapty 会在结账时自动应用 |
| AdaptyMakePurchaseResult |
getProfile | 获取当前应用用户的用户画像,可用于设置访问等级及其他参数。 如果获取失败(例如无网络),将返回缓存数据。Adapty 会定期更新用户画像缓存,以确保信息尽可能保持最新。 | 无 | AdaptyGetProfileResult |
| updateProfile | 修改当前用户画像的可选属性,如邮箱、电话号码等。你可以利用这些属性创建用户市场细分或在 CRM 中查看 | AdaptyProfile 的 ID 及需要更新的任意参数 | AdaptyError(可选) |
| restorePurchases | 恢复用户已完成的购买 | 无 | AdaptyGetProfileResult |
| logShowPaywall | 记录特定付费墙向用户展示的事件 | AdaptyPaywall | AdaptyError(可选) |
| identify | 使用系统的 customerUserId 识别用户 | customerUserId | AdaptyError(可选) |
| logout | 将当前用户退出应用 | 无 | AdaptyError(可选) |
| presentCodeRedemptionSheet | 显示允许用户兑换码的界面(仅限 iOS) | 无 | 无 |
数据类型
Adapty 数据类型(数据值的集合)通过 Adapty 插件传递给 FlutterFlow。
AdaptyAccessLevel
关于用户访问等级的信息。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| activatedAt | DateTime | 该访问等级的激活时间 |
| activeIntroductoryOfferType | String | 当前有效的新用户优惠类型。若已设置,表示本订阅周期内应用了某项优惠 |
| activePromotionalOfferId | String | 当前有效的促销活动 ID(通过 iOS 购买) |
| activePromotionalOfferType | String | 当前有效的促销活动类型(通过 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(通过 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 属性的 ID |
| value | Double | 自定义 double 属性的值 |
AdaptyCustomStringAttribute
关于为用户定义的自定义字符串属性的信息。
| 字段名 | 类型 | 描述 |
|---|---|---|
| key | String | 自定义字符串属性的 ID |
| value | String | 自定义字符串属性的值 |
AdaptyError
包含错误的详细信息。有关错误代码的完整列表,请参阅 React Native、Flutter、Unity - 错误处理。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| errorMessage | String | 人类可读的错误描述 |
| errorCode | Integer | 标识错误的数字代码 |
AdaptyGetIntroEligibilitiesResult
包含 getProductsIntroductoryOfferEligibility 自定义操作的结果。
| 字段名 | 类型 | 描述 |
|---|---|---|
| value | List < Data (AdaptyProductIntroEligibility) > | 用户对促销活动的资格列表 |
| error | Data (AdaptyError) | 通过 AdaptyError 包含错误的详细信息 |
AdaptyGetPaywallResult
包含 getPaywall 自定义操作的返回结果。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| value | Data (AdaptyPaywall) | 包含 AdaptyPaywall 对象列表 |
| error | Data (AdaptyError) | 通过 AdaptyError 包含错误信息 |
AdaptyGetProductsResult
包含 getPaywallProducts 自定义操作的结果。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| value | List < Data (AdaptyPaywallProduct) > | 包含 AdaptyPaywallProduct 列表 |
| 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 | 该购买在 Adapty 中的 ID,可用于追踪一次性购买产品 |
| 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 | 应用商店中产品的 ID |
| localizedDescription | String | 产品在用户语言中的描述 |
| localizedTitle | String | 产品在用户语言中的名称 |
| regionCode | String | 用于格式化产品价格的语言区域代码(适用于 iOS) |
| isFamilyShareable | Boolean | 布尔值,表示产品是否在 App Store Connect 中支持家庭共享。在 iOS 14.0 以下及 macOS 11.0 以下版本中始终为 FALSE(适用于 iOS) |
| paywallVariationId | String | 实验变体的 ID,用于将购买归因到此付费墙 |
| paywallABTestName | String | 父级 A/B 测试名称 |
| paywallName | String | 父级付费墙名称 |
| price | Data (AdaptyPriceData) | 产品价格 |
| subscriptionDetails | Data (AdaptySubscriptionDetails) | 订阅相关信息 |
AdaptyPrice
产品价格相关信息。
| 字段名 | 类型 | 描述 |
|---|---|---|
| amount | Double | 价格的数值 |
| currencyCode | String | 价格货币的代码 |
| currencySymbol | String | 货币符号 |
| localizedString | String | 以用户语言显示的价格文本 |
AdaptyProductIntroEligibility
定义用户是否有资格享受 iOS 订阅的新用户优惠。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| vendorProductId | String | 应用商店中产品的 ID |
| eligibility | AdaptyEligibilityEnum | 用户是否符合 iOS 订阅新用户优惠资格的定义 |
AdaptyProductNonsubscriptions
与该产品关联的活跃非订阅详情。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| productId | String | 应用商店中该产品的 ID |
| 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 | 用户的邮箱 | |
| phoneNumber | String | 用户的电话号码 |
| facebookAnonymousId | String | 用户在 Facebook Ads 集成 中的 ID |
| amplitudeUserId | String | 用户在 Amplitude 集成 中的 ID |
| amplitudeDeviceId | String | 用户设备在 Amplitude 集成 中的 ID |
| mixpanelUserId | String | 用户在 Mixpanel 集成 中的 ID |
| appmetricaProfileId | String | 用户在 AppMetrica 集成 中的 ID |
| appmetricaDeviceId | String | 用户设备在 AppMetrica 集成 中的 ID |
| oneSignalPlayerId | String | 用户在 OneSignal 集成 中的 ID |
| pushwooshHWID | String | 用户设备在 Pushwoosh 集成 中的 ID |
| firebaseAppInstanceId | String | 用户在 Firebase 集成 中的 ID |
| airbridgeDeviceId | String | 用户设备在 Airbridge 集成 中的 ID |
| appTrackingTransparencyStatus | AdaptyATTStatus | 访问 IDFA 的状态(适用于 iOS) |
| analyticsDisabled | Boolean | 标识该用户是否已退出外部数据分析 |
| customStringAttributes | List < Data (AdaptyCustomStringAttribute) > | 用户的自定义字符串属性列表 |
| customDoubleAttributes | List < Data (AdaptyCustomDoubleAttribute) > | 用户的自定义双精度浮点属性列表 |
AdaptySubscription
关于用户现有订阅的信息。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| activatedAt | DateTime | 该订阅的激活时间 |
| activeIntroductoryOfferType | String | 当前新用户优惠的类型。若已设置,表示该订阅周期内应用了某个优惠 |
| activePromotionalOfferId | String | 当前促销活动的 ID(适用于 iOS) |
| activePromotionalOfferType | String | 当前促销活动的类型(适用于 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(适用于 Android) |
| startsAt | DateTime | 该访问等级的开始时间(可能为未来时间) |
| store | String | 购买产品的商店(例如 App Store、Google Play) |
| vendorOriginalTransactionId | String | 供应商系统中初始订阅的 ID |
| vendorProductId | String | 供应商系统中产品的 ID |
| vendorTransactionId | String | 供应商系统中的交易 ID |
| willRenew | Boolean | 若该自动续期订阅已设置为续期则为 true |
AdaptySubscriptionDetails
AdaptyPaywallProduct 中订阅对象的结构说明。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| androidBasePlanId | String | Google Play 商店中的基础方案 ID 或 Stripe 中的价格 ID。 |
| androidIntroductoryOfferEligibility | AdaptyEligibilityEnum | 判断用户是否符合 iOS 订阅新用户优惠的资格 |
| androidOfferId | String | 有效促销活动的 ID(适用于 Android) |
| androidOfferTags | List < String > | 为基础方案和订阅优惠指定的自定义标签列表。 |
| introductoryOffer | List < Data (AdaptySubscriptionPhase) > | 新用户优惠的 ID(适用于 iOS) |
| localizedSubscriptionPeriod | String | 以用户语言显示的订阅周期 |
| promotionalOffer | Data (AdaptySubscriptionPhase) | 促销活动详情(适用于 iOS) |
| promotionalOfferEligibility | Boolean | 判断用户是否符合 iOS 订阅促销活动的资格 |
| promotionalOfferId | String | 促销活动的 ID(适用于 iOS) |
| renewalType | AdaptyRenewalTypeEnum | 通过 AdaptyRenewalTypeEnum 定义订阅是否为自动续订 |
| subscriptionGroupIdentifier | String | 产品所属产品组的 ID(适用于 iOS) |
| subscriptionPeriod | Data (AdaptySubscriptionPeriod) | 订阅的时长 |
AdaptySubscriptionPeriod
订阅的持续时长。
| 字段名 | 类型 | 描述 |
|---|---|---|
| numberOfUnits | Integer | 订阅持续的天数/周数/月数/年数。 |
| unit | AdaptyPeriodUnitEnum | 周期的计量单位:天、周、月、年。 |
AdaptySubscriptionPhase
表示订阅阶段,例如免费试用或新用户优惠期。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| 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 | 您想要替换的当前 Play Store 订阅的 ID。 |
| replacementMode | AdaptySubscriptionUpdateReplacementMode | 对应于 BillingFlowParams.ProrationMode 值的枚举。 |
MapKeyNonSubscriptions
用于替换 AdaptyNonSubscription 字典的数据结构。
| 字段名 | 类型 |
|---|---|
| key | String |
| value | List < Data (AdaptyNonSubscription) > |
MapKeySubscriptions
AdaptySubscription 字典的替代结构。
| 字段名 | 类型 |
|---|---|
| key | String |
| value | List < Data (AdaptySubscription) > |
枚举
Adapty 枚举(即由一组预定义常量构成的变量)通过 Adapty 插件交付至 FlutterFlow。
AdaptyEligibilityEnum
定义用户是否有资格获得 iOS 订阅的新用户优惠。
| 字段名称 | 描述 |
|---|---|
| eligible | 用户有资格获得新用户优惠,可以在 UI 中展示相关信息 |
| ineligible | 用户没有资格获得任何优惠,不应在 UI 中展示 |
| notApplicable | 该产品未配置任何优惠 |
AdaptyGenderEnum
定义用户的性别。
| 字段名 | 描述 |
|---|---|
| none | 未设置性别 |
| female | 用户性别为女性 |
| male | 用户性别为男性 |
| Other | 用户将其性别定义为”其他” |
AdaptyPaymentModeEnum
定义支付模式。
| 字段名称 | 描述 |
|---|---|
| payAsYouGo | 按使用量计费的定价模式,客户根据实际使用量付费,而非预先支付固定费用 |
| payUpFront | 预付费定价模式,客户在收到产品/服务之前先行付款 |
| freeTrial | 用户处于免费试用期 |
| unknown | 定价模式未定义 |
AdaptyPeriodUnitEnum
定义周期的计量单位。
| 字段名称 | 描述 |
|---|---|
| day | 天 |
| week | 周 |
| month | 月 |
| year | 年 |
| unknown | 未定义 |
AdaptyRenewalTypeEnum
定义订阅是否为自动续订。
| 字段名称 | 描述 |
|---|---|
| prepaid | 该订阅为预付费,不自动续订。 |
| autorenewable | 该订阅为自动续订。 |
AdaptySubscriptionUpdateReplacementMode
定义 Android 的订阅更新模式。
| 字段名称 | 描述 |
|---|---|
| withTimeProration | (默认)新方案立即生效,剩余时间将按比例折算并退还给用户。 |
| chargeProratedPrice | 新方案立即生效,计费周期保持不变。剩余周期的费用将被收取。此选项仅适用于订阅升级。 |
| withoutProration | 新方案立即生效,新价格将在下次续订时收取。计费周期保持不变。 |
| deferred | 新购买立即生效,新方案将在旧项目到期后生效。 |
| chargeFullPrice | 新方案立即生效,计费周期保持不变。剩余周期的费用将被收取。此选项仅适用于订阅升级。 |
应用状态
应用状态变量是一类特殊变量,用于保存应用程序的当前状态。这类变量可在整个应用的所有页面和组件中访问和修改。当需要在应用的不同部分之间共享数据时(例如用户偏好设置和身份验证令牌),这类变量非常实用。
| 字段名称 | 数据类型 | 是否持久化 | 描述 |
|---|---|---|---|
| currentProfile | Data (AdaptyProfile) | False | 包含当前用户画像信息的变量。请保持其为最新状态。 |