2017-08-31 97 views
0

我正在测试具有应用内订阅功能的应用。我使用测试订阅来测试似乎有效的购买。然后我想测试应用程序是否响应已取消的订阅,因此我从Play中取消了订阅。但getPurchase()调用仍然会返回购买对象。我使用TrivalDrive示例中的代码,包括IABHelper。取消应用测试订阅

 if (refsub != null && refsub.isAutoRenewing()) { 
      mRefTechSku = REFTECH_SKU; 
      mAutoRenewEnabled = true; 
     } else { 
      mRefTechSku = ""; 
      mAutoRenewEnabled = false; 
     } 

     // The user is subscribed if either subscription exists, even if neither is auto 
     // renewing 
     mSubscribedToRefSub = (refsub != null && verifyDeveloperPayload(refsub)); 

mSubscribedToRefSub在我期待它返回false时返回true。但是,mAutoRenewEnabled确实会返回false,但这是检查有效订阅的有效方法,因为我们需要保持该用户的应用程序处于活动状态,直到订阅期结束。

回答

0

是的,这是正确的。

https://developer.android.com/google/play/billing/billing_subscriptions.html#cancellation

它说,取消订阅意味着用户应该能够享受到的认购直到截止日期(如不会有退款),但这种订阅将不会在此时间之后更新。

由于到期时间仍然相同,订阅将在getPurchases()方法中返回,但自动更新字段将为false。

因此,直到通过此方法返回订阅时,您必须将其内容/功能提供给订阅者。

0

感谢您的回复。事实证明,对于mSubscribedToRefSub开始返回false,从Play商店显示订阅已取消的时间起,可能需要一天的时间。所以它确实有效,但不是马上。