在旧版 Flutter SDK 中处理付费墙事件
使用付费墙编辑工具配置的付费墙无需额外代码即可完成购买和恢复购买。但它们会生成一些您的应用可以响应的事件。这些事件包括按钮点击(关闭按钮、URL、产品选择等)以及付费墙上购买相关操作的通知。请参阅下文了解如何响应这些事件。
本指南仅适用于旧版付费墙编辑工具付费墙,需要 Adapty SDK v2.x 及以下版本。如需了解如何在 Adapty SDK v3.0 或更高版本中展示使用新版付费墙编辑工具设计的付费墙,请参阅 Flutter - 处理使用新版付费墙编辑工具设计的付费墙事件。
要控制或监控移动应用中付费墙屏幕上发生的流程,请实现 AdaptyUIObserver 方法,并在展示任何屏幕之前注册观察者:
AdaptyUI().addObserver(this);
用户生成的事件
操作
当用户执行了某项操作(close、openURL、androidSystemBack 或 custom)时,将调用此方法:
// You have to install url_launcher plugin in order to handle urls:
// https://pub.dev/packages/url_launcher
import 'package:url_launcher/url_launcher_string.dart';
void paywallViewDidPerformAction(AdaptyUIView view, AdaptyUIAction action) {
switch (action.type) {
case AdaptyUIActionType.close:
view.dismiss();
break;
case AdaptyUIActionType.openUrl:
final urlString = action.value;
if (urlString != null) {
launchUrlString(urlString);
}
default:
break;
}
}
支持以下操作类型:
closeopenUrlcustomandroidSystemBack
请注意,您至少需要实现对 close 和 openURL 这两种操作的响应。
例如,当用户点击关闭按钮时,将触发 close 操作,您应当关闭付费墙。
请注意,AdaptyUIAction 具有可选的 value 属性:在 openUrl 和 custom 的情况下需留意此属性。
💡 登录操作
如果您在看板中配置了登录操作,则应实现对值为
"login"的custom操作的响应。
产品选择
当用户或系统选择了某个产品进行购买时,将调用此方法:
void paywallViewDidSelectProduct(AdaptyUIView view, AdaptyPaywallProduct product) {
}
开始购买
当用户发起购买流程时,将调用此方法:
void paywallViewDidStartPurchase(AdaptyUIView view, AdaptyPaywallProduct product) {
}
取消购买
当用户发起购买流程但手动中断时,将调用以下函数。基本上,当 Adapty.makePurchase() 函数以 .paymentCancelled 错误完成时,就会触发此事件:
void paywallViewDidCancelPurchase(AdaptyUIView view, AdaptyPaywallProduct product) {
}
购买成功
当 Adapty.makePurchase() 成功时,将调用此方法:
void paywallViewDidFinishPurchase(AdaptyUIView view,
AdaptyPaywallProduct product,
AdaptyProfile profile) {
}
购买失败
当 Adapty.makePurchase() 失败时,将调用此方法:
void paywallViewDidFailPurchase(AdaptyUIView view,
AdaptyPaywallProduct product,
AdaptyError error) {
}
恢复购买成功
当 Adapty.restorePurchases() 成功时,将调用此方法:
void paywallViewDidFinishRestore(AdaptyUIView view, AdaptyProfile profile) {
}
恢复购买失败
当 Adapty.restorePurchases() 失败时,将调用此方法:
void paywallViewDidFailRestore(AdaptyUIView view, AdaptyError error) {
}
数据获取与渲染
产品加载错误
如果您在初始化时未传入产品数组,AdaptyUI 将自行从服务器获取所需对象。如果此操作失败,AdaptyUI 将通过调用此方法来报告错误:
void paywallViewDidFailLoadingProducts(AdaptyUIView view, AdaptyIOSProductsFetchPolicy? fetchPolicy, AdaptyError error) {
}
渲染错误
如果在界面渲染过程中发生错误,将通过调用此方法来报告:
void paywallViewDidFailRendering(AdaptyUIView view, AdaptyError error) {
}
在正常情况下,此类错误不应发生,因此如果您遇到此类错误,请告知我们。