我正在制作一个 Android 应用程序,其中将包含使用来自 Google 的应用内计费的订阅(https://developer.android.com/google/play/billing/index.html)。
目的是让用户每台设备拥有 1 个订阅。我知道谷歌限制订阅 1 个谷歌邮件帐户而不是 1 个设备,这就是为什么我使用带有数据库的服务器进行自己的限制。
所以我在开发者控制台产品列表中创建了一个包含 10 个订阅的池,我希望当一个设备订阅第一个订阅时,第二个设备(使用相同的谷歌帐户)将订阅下一个订阅......
但是当我想要第二台设备自动选择下一个订阅时,甚至没有在帐户上购买,它对我说“产品已经拥有”。问题是当前库存没有刷新。
我正在使用 IabHelper,这是我试图购买下一个可用订阅的代码部分。
public void initIab() throws IabHelper.IabAsyncInProgressException {
iabHelper = new IabHelper(this, AppConfig.APPLICATION_KEY);
iabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) throws IabHelper.IabAsyncInProgressException {
if (result.isSuccess()) {
iabHelper.queryInventoryAsync(iabInventoryListener());
billingServiceReady = true;
}
}
});
}
private IabHelper.QueryInventoryFinishedListener iabInventoryListener() {
return new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if (iabHelper == null) {
return;
}
if (!result.isSuccess()) {
return;
}
String[] PREMIUM_KEYS = {"premium1","premium2","premium3","premium4","premium5","premium6","premium7","premium8","premium9","premium10"};
Purchase premiumPurchase = null;
String premiumKey;
boolean payload = false;
for(String key : PREMIUM_KEYS) {
if (inventory.hasPurchase(key)) {
premiumPurchase = inventory.getPurchase(key);
premiumKey = key;
payload = verifyDeveloperPayload(hasPurchase,premiumKey);
if(payload)
break;
}
}
session.setPremium(achatPremium != null && payload);
}
};
}
请你能帮我找到解决办法吗?
对不起,我的英语不好。
谢谢你。