实现多设备的应用内订阅?

时间:2017-03-02 17:00:51

标签: android google-play in-app-subscription

我正在制作一个Android应用程序,其中包含使用Google提供的应用内结算的订阅(https://developer.android.com/google/play/billing/index.html)。

目的是让用户每台设备订阅1次。 我知道Google限制订阅1个google邮件帐户但不限制1个设备订阅,这就是我使用带数据库的服务器制定自己限制的原因。

所以我在开发者控制台产品列表中创建了10个订阅池,我希望当设备订阅第一个订阅时,第二个设备(使用相同的Google帐户)将订阅下一个订阅... < / p>

但是,当我希望第二台设备自动选择下一个订阅甚至没有在该帐户上购买时,它对我说'#34;产品已经拥有&#34;。问题是当前库存没有刷新。

我正在使用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);

            }

        };
    }

请帮我找一个解决方案?

抱歉我的英语不好。

谢谢。

0 个答案:

没有答案