7

Uygulama içi faturalandırma sürecinde sıkıntı verici bir sorun yaşıyorum. Dev konsolda yeni bir uygulama oluşturdum, şu anda aktif olan "P1" adlı bir inapp ürün ekledim; Uygulamamı alfa sürümünde mağazaya yükledim, ardından beta sürümüne terfi ettim, bir test hesabı ekledim ve apk'yı test hesabıyla ve bir başka hesabı devredeyken bir cihazda (tablet) yükledim.Android Uygulama İçi Faturalandırma - queryInventoryAsync 0 sonuç döndürüyor

Şimdi, sahip olunan skusların fiyatı gibi bilgileri almak için mağazayı sorgulamak istiyorum. Sorgu tamamlandığında

private void istantiate() { 
    List<String> tmp = new List<String>(); 
    tmp.add("P1"); 
    final List<String> skus = tmp; 
    mHelper = new IabHelper(mContext, base64EncodedPublicKey); 
    // enable debug logging (for a production application, you should set this to false). 
    mHelper.enableDebugLogging(true); 
    //create listener 
    bListener = new BillingListener(mHelper, mContext); 

    // Start setup. This is asynchronous and the specified listener will be called once setup completes. 
    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
     public void onIabSetupFinished(IabResult result) { 

      if (!result.isSuccess()) { 
       // There was a problem. 
       return; 
      }    
      getInventory(skus); 
     } 
    });   
} 

... 

private void getInventory(List<String> skuList) { 
    // Have we been disposed of in the meantime? If so, quit. 
    if (mHelper == null) return; 

    // IAB is fully set up. Now, let's get an inventory of stuff we own. 
    mHelper.queryInventoryAsync(true, skuList, bListener.mQueryFinishedListener); 
} 

Sonra bu kod parçası denir: İşte benim aktivite benim kod

IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() { 
    public void onQueryInventoryFinished(IabResult result, Inventory inventory) { 

     if (result.isFailure()) { 
     // handle error 
     return; 
     } 
     ... 

    } 
}; 

Ama envanter boş döndü. İşte logcat var:

 12-13 11:21:36.977: D/IabHelper(6034): Billing service connected. 
    12-13 11:21:36.977: D/IabHelper(6034): Checking for in-app billing 3 support. 
    12-13 11:21:36.987: D/IabHelper(6034): In-app billing version 3 supported for *** 
    12-13 11:21:36.987: D/IabHelper(6034): Subscriptions AVAILABLE. 
    12-13 11:21:36.987: D/IabHelper(6034): Starting async operation: refresh inventory 
    12-13 11:21:36.987: D/IabHelper(6034): Querying owned items, item type: inapp 
    12-13 11:21:36.987: D/IabHelper(6034): Package name: *** 
    12-13 11:21:36.987: D/IabHelper(6034): Calling getPurchases with continuation token: null 
    12-13 11:21:36.997: D/IabHelper(6034): Owned items response: 0 
    12-13 11:21:36.997: D/IabHelper(6034): Continuation token: null 
    12-13 11:21:36.997: D/IabHelper(6034): Querying SKU details. 
    12-13 11:21:37.097: D/IabHelper(6034): Querying owned items, item type: subs 
    12-13 11:21:37.097: D/IabHelper(6034): Package name: *** 
    12-13 11:21:37.097: D/IabHelper(6034): Calling getPurchases with continuation token: null 
    12-13 11:21:37.097: D/IabHelper(6034): Owned items response: 0 
    12-13 11:21:37.097: D/IabHelper(6034): Continuation token: null 
    12-13 11:21:37.097: D/IabHelper(6034): Querying SKU details. 
    12-13 11:21:37.097: D/IabHelper(6034): Ending async operation: refresh inventory 

Benim inapp ürün yayınlandığından beri yaklaşık bir hafta, bu yüzden zaman meselesi değildir. Uygulama verilerini temizlemeye çalıştım ve cihazı yeniden başlattım.

Edit: Her şey, test sku olarak android.test.purchased kullanarak çalışır.
Düzenleme 2: SKU'ların "yönetilmeyen" dir

+0

Bir çözüm bulmayı başardınız mı? Aynı problemle yüzleşiyorum. –

+0

Ben de bunu yaşıyorum ... herhangi bir sonuç? –

+0

Şu anda hala sorun yaşıyorsanız –

cevap

0

"Sahip olunanlar ürün yanıtı" bu durumda IabHelper.queryPurchases kodu ve IabHelper baktığımızda 0'a

değeriyle BILLING_RESPONSE_RESULT_OK olan yanıt kodunu raporları .getSkuDetails, başlamak için iyi bir yer onQueryInventoryFinished 'envanter.hasDetails ("P1")' veya 'envanter.getSkuDetails ("P1")' ile veri almaktır.

+0

Cevabınız için teşekkürler, ancak ilk görüşten sonra envanter boş. Bu işlevler yanlış ve null döndürür. Ama android.test.purchased ile iyi çalışıyor:/ –

+0

Emin değil. Belki SKU eşleşmiyordur."P1" 'in sku olduğunu, sadece başlığın (adın ardından konsolda gösterilen - öğe oluştururken Ürün Kimliği olarak girildiğini) belirtmediğinden emin olun. Belki de tanınması gereken küçük bir durum olması gerekir (test için başka bir öğe oluşturmanız gerekebilir). Ayrıca, yönetilmeyen skus ile herhangi bir test yaptın mı? – ProjectJourneyman

+0

P1 sku, harf durumu sonuçları etkilemiyor (farklı isimlerle denedim). Başka skus eklendi ama hiçbir şey değişmez. –

4

Ayrıca bu sorunla karşılaştım, ancak uygulama verilerini Google Play uygulamasında temizledikten sonra giderildi. Adb kullanma:

adb shell pm clear com.android.vending 
+0

Benim için çalıştı! Teşekkürler – Crisic

1

Bunun Google Play Uygulamasında önbellekleme nedeniyle gerçekleştiğine inanıyorum. Genellikle, Google Play uygulama önbelleği her 24 saatte bir yenilenir. Komut satırı üzerinden önbelleği temizlemek istiyorsanız, poqueque'nin çözümü çalışır. Ayrıca, telefondaki Uygulama ayarlarını alabilir ve Google Play uygulamasının veri/önbelleğini temizleyebilirsiniz. Bunu yaptıktan sonra Google Play hesabınıza tekrar giriş yaptığınızdan emin olun.

Güncel bilgiler almak için önbellek kullanmadan kod veya sorgu yoluyla Google Play önbelleğini yenilemeyi zorlamak için bir çözüm bilen var mı?