检查我的无服务器android应用中的应用内订阅是否处于活动状态
我有一个简单功能的无服务器android应用程序:如果用户有一些应用内订阅自动续费,那么他可以使用应用内功能,否则没有。我知道,如何通过获取订阅信息、价格、标题等和呼叫付款来实现功能。但我无法检查当前用户是否有活动的未取消订阅。我在很多网站和教程上读了很多信息,有人说我必须在我的服务器上使用GoogleAPI。但我没有自己的服务器。 我使用了两个不同的库进行应用内订阅:检查我的无服务器android应用中的应用内订阅是否处于活动状态,android,in-app-billing,in-app-subscription,play-billing-library,Android,In App Billing,In App Subscription,Play Billing Library,我有一个简单功能的无服务器android应用程序:如果用户有一些应用内订阅自动续费,那么他可以使用应用内功能,否则没有。我知道,如何通过获取订阅信息、价格、标题等和呼叫付款来实现功能。但我无法检查当前用户是否有活动的未取消订阅。我在很多网站和教程上读了很多信息,有人说我必须在我的服务器上使用GoogleAPI。但我没有自己的服务器。 我使用了两个不同的库进行应用内订阅: 'com.anjlab.android.iab.v3:library:1.0.44' 及 但并没有人帮我检查用户是否有活动订
'com.anjlab.android.iab.v3:library:1.0.44'
及
但并没有人帮我检查用户是否有活动订阅。那么,如何完成这项任务呢?请帮帮我,也许我错过了一些信息…你有没有试着从谷歌打电话给bp.loadownedPurchases
编辑
所以试试这个:
Purchase purchase = inventory.getPurchase(product);
Log.d(TAG, "Purchase state: " + purchase.getPurchaseState());
// 0 (purchased), 1 (canceled), or 2 (refunded).
if (purchase.getPurchaseState() == 0
|| purchase.getPurchaseState() == 2) {
showPremiumVersion();
} else {
showFreeVersion();
}
或此解决方案:
bp.isPurchased("yourSKU")
您是否尝试过从谷歌呼叫bp.loadownedPurchases
编辑
所以试试这个:
Purchase purchase = inventory.getPurchase(product);
Log.d(TAG, "Purchase state: " + purchase.getPurchaseState());
// 0 (purchased), 1 (canceled), or 2 (refunded).
if (purchase.getPurchaseState() == 0
|| purchase.getPurchaseState() == 2) {
showPremiumVersion();
} else {
showFreeVersion();
}
或此解决方案:
bp.isPurchased("yourSKU")
我也面临着类似的问题。这就是我为了绕开它所做的
从Google调用billingProcessor.LoadownedPurchases方法;然后检查transactionDetails的值,如果transactionDetails对象返回null,则表示用户没有订阅或取消了订阅,否则仍然订阅
void checkIfUserIsSusbcribed(){
Boolean purchaseResult = billingProcessor.loadOwnedPurchasesFromGoogle();
if(purchaseResult){
TransactionDetails subscriptionTransactionDetails = billingProcessor.getSubscriptionTransactionDetails(YOUR_SUBSCRIPTION_ID);
if(subscriptionTransactionDetails!=null)
//User is still subscribed
else
//Not subscribed
}
}
另外,需要注意的是,TransactionDetails对象仅在订阅期限到期后返回null。使用I时也面临类似的问题。这就是我为了绕开它所做的
从Google调用billingProcessor.LoadownedPurchases方法;然后检查transactionDetails的值,如果transactionDetails对象返回null,则表示用户没有订阅或取消了订阅,否则仍然订阅
void checkIfUserIsSusbcribed(){
Boolean purchaseResult = billingProcessor.loadOwnedPurchasesFromGoogle();
if(purchaseResult){
TransactionDetails subscriptionTransactionDetails = billingProcessor.getSubscriptionTransactionDetails(YOUR_SUBSCRIPTION_ID);
if(subscriptionTransactionDetails!=null)
//User is still subscribed
else
//Not subscribed
}
}
另外,需要注意的是,TransactionDetails对象仅在订阅期限到期后返回null。isPurchsed方法无法捕获错误购买/取消购买/重新购买的历史记录 使用此选项,不要忘记在清单中添加INTERNET权限
TransactionDetails transactionDetails = billingProcessor.getPurchaseTransactionDetails("productId");
if (transactionDetails != null) {
//Already purchased
//You may save this as boolean in the SharedPreferences.
}
ISPourched方法无法捕获错误的购买/取消的购买/检索的购买的历史记录 使用此选项,不要忘记在清单中添加INTERNET权限
TransactionDetails transactionDetails = billingProcessor.getPurchaseTransactionDetails("productId");
if (transactionDetails != null) {
//Already purchased
//You may save this as boolean in the SharedPreferences.
}
对于内存来说,这是一个异步任务,所以在检查新值之前需要等待。嗯,我找不到inventory.getPurchase方法。是在图书馆还是在com.android.billingclient:billing?@AlexD。这是anjlab,但我在旧版本中使用了它,请尝试bp.ispurchasedYoursku方法isPurchasedid始终返回false,因为我只处理订阅。方法isSubscribed在我订阅后返回true,但是当我取消订阅并且它的过期时间结束时,方法isSubscribed也总是返回true,这是错误的。所以我不知道如何解决这个问题:你试着等48小时吗?它可能很长。我几乎可以肯定bp.loadOwnedPurchasesFromGoogle;正在工作,请尝试等待48小时。内存不足,这是一个异步任务,因此您需要等待,然后再检查新值。嗯,我找不到inventory.getPurchase方法。是在图书馆还是在com.android.billingclient:billing?@AlexD。这是anjlab,但我在旧版本中使用了它,请尝试bp.ispurchasedYoursku方法isPurchasedid始终返回false,因为我只处理订阅。方法isSubscribed在我订阅后返回true,但是当我取消订阅并且它的过期时间结束时,方法isSubscribed也总是返回true,这是错误的。所以我不知道如何解决这个问题:你试着等48小时吗?它可能很长。我几乎可以肯定bp.loadOwnedPurchasesFromGoogle;正在工作,请尝试等待48小时。对于已取消的事务或保留的事务,此方法是否返回false?如何获取过期日期?对于已取消的事务或保留的事务,此方法是否返回false?如何获取过期日期?