4

アプリ内課金機能を備えた Google Play でアプリケーションを公開していますが、新しいバージョンを開発者コンソールにアップロードするまではすべて正常に機能していました。

更新された apk をアップロードすると、Google サーバーは購入した内容を忘れているようです。

すべてが正常に機能するように更新しないと、Google が行ったすべての購入を含むバンドルを返します。

//Service to establish a connection with google play
    mServiceConn = new ServiceConnection() {
        @Override
        public void onServiceDisconnected(ComponentName name) {
            mService = null;
        }

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            mService = IInAppBillingService.Stub.asInterface(service);
            new checkProVersion().execute();
        }
    };

    Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
    serviceIntent.setPackage("com.android.vending");
    bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);

//AsyncTask to check if Pro Version is purchased
class checkProVersion extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {

        Bundle proBundle = new Bundle();

        try {
            proBundle = mService.getPurchases(3, getPackageName(), "inapp", null);
        } catch (RemoteException e) {
            e.printStackTrace();
        }

        int response = proBundle.getInt("RESPONSE_CODE");
        if (response == 0) {
            ArrayList<String> ownedSkus = proBundle.getStringArrayList("INAPP_PURCHASE_ITEM_LIST");
            ArrayList<String> purchaseDataList = proBundle.getStringArrayList("INAPP_PURCHASE_DATA_LIST");
            ArrayList<String> signatureList = proBundle.getStringArrayList("INAPP_DATA_SIGNATURE_LIST");

            if (purchaseDataList.size() > 0) {
                for (int i = 0; i < purchaseDataList.size(); i++) {
                    String purchaseData = purchaseDataList.get(i);
                    String signature = signatureList.get(i);
                    String sku = ownedSkus.get(i);

                    if (verifyPurchase(buildPublicKey(), purchaseData, signature)) {
                        if(sku.equals("name_of_the_sku")) {
                            buy_pro_btn.setVisibility(View.GONE);
                        }
                    }
                }
            }
        }

        return null;
    }
}

アプリケーションを更新すると、 purchaseDataList.size() は 0 を返します。

ありがとう!!

4

0 に答える 0