共计 3246 个字符,预计需要花费 9 分钟才能阅读完成。
尽管咱们总是精心制作咱们的应用程序,但咱们并不总是让它们收费。除了将咱们的应用程序上传到 Play 商店收取费用外,另一种赚钱的形式是通过利用内购买。Flutter in_app_purchase(IAP)是一个第一方 Flutter 软件包,容许开发者在其应用程序中实现 iOS 上的 App Store 或 Android 上的 Google Play 的利用内购买。另外两个解决方案,flutter_inapp_purchase 和 purchases_flutter,也提供了相似的性能。
在本文中,咱们的指标是领导您应用 purchases_flutter 软件包。
purchases_flutter
这是一个应用 RevenueCat 解决方案实现利用内购买的插件。
RevenueCat 是一家简化应用程序内购买实现的第三方机构。在应用官网的 Flutter 插件 (in_app_purchase) 时,须要在服务器上实现本人的逻辑来解决购买验证、订阅和勾销等流程。
这样做须要大量的逻辑工作,因而,代替计划能够很有吸引力,因为它们能够做很多沉重的工作。Purchases_flutter 能够为你解决这个逻辑,因而在你的应用程序中实现利用内购买更容易。RevenueCat 的服务器将解决购买验证以及所有两头逻辑和中间件。
与利用内购买的其余实现相似,您须要在 Play Store 和 App Store 上设置无效的利用内购买。
让咱们从 RevenueCat 开始
在应用 RevenueCat 之前,您必须注册 RevenueCat。不要胆怯。如果您从该利用取得的月支出低于 10000 美元,RevenueCat 是收费的。
注册后,导航到 RevenueCat 仪表板,而后从名为 Projects 的顶部导航菜单的下拉列表中增加一个新我的项目。
在我的项目仪表板的右边菜单中的我的项目设置 > 应用程序,抉择你要增加的应用程序的平台。
将利用增加到 RevenueCat 时,须要输出 App name 字段。其余的配置字段能够稍后再增加。
在你开始应用 RevenueCat 来获取产品之前,你必须在相应的商店中配置你的产品。
在 Play Console 中,您须要应用雷同的 Product ID 和雷同的试用和金额设置订阅。
两个订阅的详细信息应放弃不变。
装置
要应用此插件,请将 purchase_flutter
增加为 pubspec.yaml 文件中的依赖项(并运行隐式 dart pub get):
dependencies: purchases_flutter: ^3.0.0
您当初应该能够导入 purchase_flutter
。
import 'package:purchases_flutter/purchases_flutter.dart';
如果你正在应用其余插件,比方 mobx,你可能会遇到与其余插件的类型抵触,这些插件的名称与 purchase_flutter 中定义的名称雷同。
如果产生这种状况,您能够通过增加导入别名来解决类型中的歧义,例如:
import 'package:purchases_flutter/purchases_flutter.dart' as purchases;
之后,你能够将 purchases_flutter
中的类型援用为 purchases.Foo
,比方 purchases.PurchaserInfo
。
配置 SDK
你应该只配置一次 purchase 的共享实例,通常是在利用启动时。之后,通过拜访 SDK 中的 .shared
实例,在整个应用程序中共享同一个实例。如果您想查看无关配置 SDK 的指南以获取更多信息,能够单击此处。
import 'dart:io' show Platform;
//...
Future<void> initPlatformState() async {await Purchases.setDebugLogsEnabled(true);
if (Platform.isAndroid) {await Purchases.setup("public_google_sdk_key");
}
else if (Platform.isIOS) {await Purchases.setup("public_ios_sdk_key");
/* OR: if building for Amazon, be sure to follow the installation instructions then: */
await Purchases.setup("public_amazon_sdk_key", useAmazon: true);
}
}
显示可用产品
SDK 将主动获取配置的产品,并从苹果、谷歌或亚马逊检索产品信息。因而,当客户启动您的购买屏幕时,可用的产品将曾经被加载。
try {Offerings offerings = await Purchases.getOfferings();
if (offerings.current != null) {// Display current offering with offerings.current}
} on PlatformException catch (e) {// optional error handling}
进行购买
SDK 蕴含一种便于购买的简略办法。purchase:package
从获取的产品中获取一个包,并解决与相应利用商店的交易。
try {PurchaserInfo purchaserInfo = await Purchases.purchasePackage(package);
var isPro = purchaserInfo.entitlements.all["my_entitlement_identifier"].isActive;
if (isPro) {// Unlock that great "pro" content}
} on PlatformException catch (e) {var errorCode = PurchasesErrorHelper.getErrorCode(e);
if (errorCode != PurchasesErrorCode.purchaseCancelledError) {showError(e);
}
}
获取订阅状态
SDK 还能够轻松查看以后客户领有哪些流动订阅。这能够通过查看特定权力是否处于活动状态或通过查看流动权力数组是否蕴含特定权力 ID 来实现。
try {PurchaserInfo purchaserInfo = await Purchases.getPurchaserInfo();
if (purchaserInfo.entitlements.all["my_entitlement_identifier"].isActive){// Grant user "pro" access}
} on PlatformException catch (e) {// Error fetching purchaser info}
复原购买
RevenueCat 使你的用户可能复原他们的利用内购买,从新激活他们以前从同一个商店账户(苹果、谷歌或亚马逊账户)购买的任何内容。咱们倡议所有应用程序都为用户提供某种形式来触发复原办法。请留神,Apple 的确须要一个复原机制,以防用户无法访问他们的购买(例如:卸载 / 重新安装应用程序、失落他们的帐户信息等)。
try {PurchaserInfo restoredInfo = await Purchases.restoreTransactions();
// ... check restored purchaserInfo to see if entitlement is now active
} on PlatformException catch (e) {// Error restoring purchases}
总结
在本文中,我尝试解释了利用内购买办法的一种办法。它是对利用内购买办法的介绍。您能够在 Youtube 上找到一些从一开始就制作应用程序的简单教程。如果您不了解本文并想观看教程,我能够举荐您观看 Johannes Milke 的 RevenueCat 教程。