管理Android应用程序上的订阅
我需要向我的应用程序添加订阅支持,以便用户可以购买一年服务的订阅。 我刚刚在谷歌开发者控制台上创建了订阅。 我的问题是:我不知道如何检查用户订阅。 我正在努力做到这一点:管理Android应用程序上的订阅,android,google-play,subscription,Android,Google Play,Subscription,我需要向我的应用程序添加订阅支持,以便用户可以购买一年服务的订阅。 我刚刚在谷歌开发者控制台上创建了订阅。 我的问题是:我不知道如何检查用户订阅。 我正在努力做到这一点: 当用户启动我的应用程序时,如果有网络,应用程序会联系Play Store并检查用户是否购买了订阅和付款日期。这些数据总是保存在语言环境文件中,因此如果没有网络,应用程序将使用本地数据进行检查 如果用户购买了订阅,我会检查订阅是否已超过一年。事实上,我在网上看到Play Store只提供付款日期,而不提供完成订阅日期 如果检查为
private void checkForPremium() {
final IabHelper buyHelper = new IabHelper(this, "MYKEY");
// initialize the InApp Billing system
buyHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
@Override
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
buyHelper.dispose();
Log.e("MYAPP", "Error: " + result);
return;
}
// Get a list of all products the user owns
buyHelper.queryInventoryAsync(new IabHelper.QueryInventoryFinishedListener() {
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inv) {
if (result.isFailure()) {
buyHelper.dispose();
Log.e("MYAPP", "Error: " + result);
} else {
boolean isPremium = inv.hasPurchase("MYSKU");
inv.getSkuDetails().
buyHelper.dispose();
// Forward to the currect activity depending on premium / demo mode
if (isPremium) {
if(menu != null){
MenuItem item = menu.findItem(R.id.action_premium);
item.setVisible(false);
}
Log.w("MYAPP", "PREMIUM");
} else {
if(menu != null){
MenuItem item = menu.findItem(R.id.action_premium);
item.setVisible(true);
}
Log.w("MYAPP", "NO PREMIUM");
}
}
}
});
}
});
}
我对订阅了解不多。但AFAIK Play store在本地维护购买信息。您不应该将其存储在本地(因为您将有加密这些订阅信息的开销)。即使数据连接关闭,Play store也会返回您的购买信息。@KalpeshPatel听起来不错。但我不知道如何检索信息:)由于我没有处理订阅,我不知道如何检索购买信息。但我认为这应该和正常的应用内计费一样。选中此复选框这非常清楚地表明购买信息是在本地缓存的。此外,您还可以阅读本文的订阅段落,其中明确指出订阅产品和应用内产品的购买API没有区别。这意味着您可以使用getPurchases请求获取购买信息。