Jac*_*ack 4 android in-app-purchase
在我的应用程序中,我让用户使用 Google Play IAP 进行捐赠,作为回报,我删除了广告并解锁了高级功能。
当我的应用程序加载时,我想检查用户是否进行了捐赠,如何通过知道用户捐赠后我将调用以下代码以允许用户在需要时进行捐赠的代码来做到这一点。
因此,如果需要,我希望允许用户进一步捐款,但我想知道他是否已经捐款以禁用广告和解锁高级功能。
BillingProcessor bp;
bp.consumePurchase(productId);
Run Code Online (Sandbox Code Playgroud)
请注意,我的问题是关于 IAP 在线流程,而不是关于离线保存值并稍后检查。
我认为本指南应该有助于向您展示如何做到这一点:
https://developer.android.com/google/play/billing/billing_library_overview
查询缓存购买
要检索有关用户从您的应用进行的购买的信息,请在 Play 结算库客户端上使用购买类型(SkuType.INAPP 或 SkuType.SUBS)调用 queryPurchases() 方法。例如:
PurchasesResult purchasesResult = mBillingClient.queryPurchases(SkuType.INAPP);Google Play 返回登录到设备的用户帐户进行的购买。如果请求成功,Play Billing Library 会将查询结果存储在购买对象列表中。
注意:此列表中仅显示活动订阅。只要应用内产品在此列表中,用户就应该有权访问它。有关更多信息,请参阅添加订阅特定功能文档的处理 SUBSCRPTION_ON_HOLD 部分。要检索列表,请对 PurchasesResult 对象调用 getPurchasesList() 方法。然后,您可以在 Purchase 对象上调用各种方法来查看有关该项目的相关信息,例如其购买状态或时间。要查看可用的产品详细信息类型,请参阅 Purchase 类中的方法列表。
在代码中至少调用 queryPurchases() 两次:
每次您的应用程序启动时,您都可以恢复自应用程序上次停止以来用户进行的任何购买。在您的 onResume() 方法中,因为用户可以在您的应用程序处于后台时进行购买(例如,在 Play 商店应用程序中兑换促销代码)。在启动和恢复时调用 queryPurchases() 可确保您的应用了解用户在应用未运行时可能进行的所有购买和兑换。此外,如果用户在应用程序运行时进行了购买,而您的应用程序因任何原因错过了购买,您的应用程序仍会在下次活动恢复并调用 queryPurchases() 时找到有关购买的信息。
查询最近购买
queryPurchases() 方法使用 Google Play Store 应用程序的缓存,而无需发起网络请求。如果您需要查看用户对每个产品 ID 的最近一次购买,您可以使用 queryPurchaseHistoryAsync() 方法并传递购买类型和一个 PurchaseHistoryResponseListener 来处理查询结果。
queryPurchaseHistoryAsync() 返回用户为每个产品 ID 进行的最近一次购买,即使该购买已过期、取消或消费。尽可能使用 queryPurchases() 方法,因为它使用本地缓存,而不是 queryPurchaseHistoryAsync() 方法。您可以将 queryPurchaseHistoryAsync() 与 Refresh 按钮结合使用,允许用户更新他们的购买清单。
以下代码演示了如何覆盖 onPurchaseHistoryResponse() 方法:
mBillingClient.queryPurchaseHistoryAsync(SkuType.INAPP,
new PurchaseHistoryResponseListener() {
@Override
public void onPurchaseHistoryResponse(@BillingResponse int responseCode,
List purchasesList) {
if (responseCode == BillingResponse.OK
&& purchasesList != null) {
for (Purchase purchase : purchasesList) {
// Process the result.
}
}
} });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2965 次 |
| 最近记录: |