我已经成功使用Anjlab iab v3实施了应用内结算,并成功进行了测试,但是如何在同一应用内解锁付费版本。
香料
flavorDimensions "default"
productFlavors {
free {
minSdkVersion 15
targetSdkVersion 27
}
paid {
minSdkVersion 15
targetSdkVersion 27
}
}
我不想:
intent.setData(Uri.parse("market://search?q=pname:MyApp"));
不确定,是否可行:我想将所有内容都放入Free Ver。 (付费版本功能保持为不可见)并在购买成功后将其设置为可见模式。 但是,首先将Flavors放在哪里有什么意义呢?
如果能获得关于如何在Google Play中实现应用内应用的更简单版本的信息,那将非常好,因为文档和示例似乎很难实现,因此我们也在SO上获得了有关此方面的信息。
如果付款成功,解锁付费版本的下一步应该是什么。现在,我传达了我的意图,但这不是一种有效的方法。
@Override
public void onProductPurchased(@NonNull String productId, @Nullable TransactionDetails details) {
Intent paid = new Intent(this, Test_Paid.class);
startActivity(paid);
}
我想要的是,当付款成功后,应该总是打开付费版本而不是免费版本,这不是现在的情况。
谢谢!
答案 0 :(得分:2)
有两种方法可以实现该应用程序的付费和免费版本:
不同的产品口味:如果您采用这种方式,那么基本上您的付费版本和免费版本是两种不同的应用程序。用户必须从Play商店独立下载一个或另一个。 产品风味是建立时间的属性。一旦生成了apk,就无法切换产品口味。
保持付费功能不可见:如果您想要一个apk,这是可行的方法。用户支付了订阅费用后,您就可以将该数据存储在后端,并在启动时通过api通知客户端(无论客户端是否已付费)。
如果没有后端,则可以使用某种级别的加密/安全性将hasUserPaid标志保存在本地sqlite数据库中。这样做的缺点是,一旦用户卸载或清除了应用程序的数据,数据库将被清除。要重新填充,您将必须向播放服务验证用户是否购买了您的订阅。