gpt4 book ai didi

android - 如何保存inApp购买状态

转载 作者:行者123 更新时间:2023-11-29 17:54:39 27 4
gpt4 key购买 nike

我在我的游戏应用中实现了应用内购买,其中前三个级别免费,然后用户必须付费才能解锁剩余的 7 个级别。

应用内购买运行良好。但是,一旦用户购买了该商品,我应该如何处理它,以便下次开始时他可以看到已解锁的级别。我应该将它保存在 sharedPreferences 中并每次检查吗?或者我应该每次都从谷歌控制台查询以检查特定 ID 的状态。

如果有人能建议我正确的方法,我将不胜感激..

如果用户卸载该应用并在同一设备上再次安装它,行为应该如何?

最佳答案

如果您使用托管购买,则使用 RESTORE_TRANSACTION 是唯一的方法。如果您使用非托管购买,您可以将购买状态存储在您自己的服务器上,但这并不简单。

RESTORE_TRANSACTIONS 并不复杂:您只需启动命令,您就会收到交易信息通知,其格式与您首次购买商品时所收到的信息格式完全相同。您应该以完全相同的方式处理它,并且您的应用程序中很可能已经有了相应的代码。对此进行测试有点困难,因为它实际上不适用于测试帐户,而您需要一个实时应用。

查看 official再次查看文档以了解其工作原理。

管理应用程序产品数据的三种方式。

1) SharedPrefrence:您可以使用分享偏好值查看是否购买。如果万一用户卸载了该应用程序然后重新安装该应用程序,那么您可以检查用户是否已购买,此时您会得到该项目已购买。而且您必须管理用户才能访问您的应用程序数据。

2)本地数据库:您也可以使用本地sqlite数据库来存储购买明细和购买状态。和上面一样,如果用户清除数据或卸载应用程序,然后再次请求购买商品并检查用户是否购买了商品。

2) 服务器数据库: 如果您使用网络服务器来存储用户数据,这是比上面更好的方法。在这种情况下,如果用户卸载应用程序或清除应用程序数据,您甚至不需要进行第二次管理。

3) 混淆:(与共享偏好相比最有效的方式)

有关实现检查的更多详细信息 HERE

以下是如何恢复交易的 fragment :

private void restoreTransactions() {
if (!mBillingObserver.isTransactionsRestored()) {
BillingController.restoreTransactions(this);
Toast.makeText(this, R.string.restoring_transactions, Toast.LENGTH_LONG).show();
}
}

已编辑:

api 的 V3 不再需要恢复购买。可以直接查询购买的商品。

请阅读查询已购买商品部分: http://developer.android.com/google/play/billing/billing_integrate.html
getPurchases() method description .

要获取已购买商品的详细信息,请尝试以下操作:

IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
if (result.isFailure()) {
complain("Failed to query inventory: " + result);
return;
}

mIsPremium = inventory.hasPurchase(SKU_PREMIUM); ------> By here you can get information

}
};

关于android - 如何保存inApp购买状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com