Ich versuche, In-App-Abrechnung für meine App zu implementieren.
Ich verfolge die Implementierung in der TriviaDrive-Beispielanwendung von Google und die entsprechende Dokumentation auf der Developer-Website.
Mein Code funktioniert wie erwartet, aber wenn ich "Query Items Available for Purchase" versuche, enthält das resultierende Inventory-Objekt 0 Objekte, obwohl ich ein Produkt erstellt habe.In-App-Abrechnung: "Zum Kaufen verfügbare Artikel abfragen" gibt 0 Artikel zurück
ich ein verwaltetes Produkt mit der ID erstellt haben paid_version
mit der Google Play Developer Console, wie in der folgenden Abbildung dargestellt:
Die Dokumentation zeigt an, dass „die Produktdetails abzurufen, rufen Sie queryInventoryAsync(boolean, List, QueryInventoryFinishedListener)
auf Ihrem IabHelper Beispiel."
In meinem eigenen Code nenne ich
mHelper.queryInventoryAsync(true, iabItemSkus, mQueryFinishedListener)
Wo:
mHelper
meine IabHelper Instanz ist
iabItemSkus
ist eine Liste ein einzelnes Element mit dem Wert "paid_version" unter
mQueryFinishedListener
ist mein Zuhörer definiert enthält.
IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inv) {
if (result.isFailure()) {
Log.d(TAG, "Querying Inventory Failed: " + result);
return;
}
Log.d(TAG, "Title: " + inv.getSkuDetails(SKU_PAID).getTitle());
Log.d(TAG, "Description: " + inv.getSkuDetails(SKU_PAID).getDescription());
Log.d(TAG, "Price = " + inv.getSkuDetails(SKU_PAID).getPrice());
}
};
Aber auf dem Debuggen kann ich sehen, dass das Inventory
Objekt im QueryInventoryFinishedListener
enthält zurückgegeben 0 Produkte, und so ruft wie inv.getSkuDetails(SKU_PAID).getTitle()
eine Null-Zeiger Ausnahme geben.
Ich kann nicht herausfinden, wo ich falsch liege. Ich habe erwartet, dass das Objekt Inventory
die Details für mein In-App-Produkt paid_version
enthält.
Unten sind nur die Teile meines Codes und LogCat Ich denke, sind relevant für dieses Problem (versuchen zu vermeiden, Ihnen Code-Überlastung!), Aber wenn mehr Details zu einem anderen Teil des Codes hilfreich wäre, lassen Sie es mich wissen .
Aus meiner Tätigkeit:
Aus meiner LogCat:
...
05-13 19:46:59.609 22390-22390/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Starting in-app billing setup.
05-13 19:46:59.629 22390-22390/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Billing service connected.
05-13 19:46:59.629 22390-22390/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Checking for in-app billing 3 support.
05-13 19:46:59.629 22390-22390/xxx.xxxxxx.xxxxxx D/IabHelper﹕ In-app billing version 3 supported for xxx.xxxxxx.xxxxxx
05-13 19:46:59.639 22390-22390/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Subscriptions AVAILABLE.
05-13 19:46:59.639 22390-22390/xxx.xxxxxx.xxxxxx D/MyActivity﹕ Setup successful. Querying inventory.
05-13 19:46:59.639 22390-22390/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Starting async operation: refresh inventory
05-13 19:46:59.649 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Querying owned items, item type: inapp
05-13 19:46:59.649 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Package name: xxx.xxxxxx.xxxxxx
05-13 19:46:59.649 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Calling getPurchases with continuation token: null
05-13 19:46:59.659 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Owned items response: 0
05-13 19:46:59.659 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Continuation token: null
05-13 19:46:59.659 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Querying SKU details.
05-13 19:46:59.689 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Querying owned items, item type: subs
05-13 19:46:59.689 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Package name: xxx.xxxxxx.xxxxxx
05-13 19:46:59.689 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Calling getPurchases with continuation token: null
05-13 19:46:59.699 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Owned items response: 0
05-13 19:46:59.699 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Continuation token: null
05-13 19:46:59.699 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Querying SKU details.
05-13 19:46:59.829 22390-22596/xxx.xxxxxx.xxxxxx D/IabHelper﹕ Ending async operation: refresh inventory
05-13 19:46:59.829 22390-22390/xxx.xxxxxx.xxxxxx D/AndroidRuntime﹕ Shutting down VM
05-13 19:46:59.829 22390-22390/xxx.xxxxxx.xxxxxx W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41b31ba8)
05-13 19:46:59.839 22390-22390/xxx.xxxxxx.xxxxxx E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: xxx.xxxxxx.xxxxxx, PID: 22390
java.lang.NullPointerException
at xxx.xxxxxx.xxxxxx.MyActivity$1.onQueryInventoryFinished(MyActivity.java:266)
at xxx.xxxxxx.xxxxxx.util.IabHelper$2$1.run(IabHelper.java:630)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
...
PS: Ich habe meinen Code nur aktualisiert zu markieren, welche Linie 266.
Weitere
Ich habe dieses Problem 12 Stunden nach dem Hochladen meiner APK, und wie Sie aus dem LogCat sehen können, zeigt es "In-app billing version 3 supported"
für meine App.
Das Problem blieb bestehen, unabhängig davon, ob ich den Status des IN-APP PRODUCT als aktiv oder inaktiv festlegte.
Jetzt 24 Stunden später entscheidet es sich magisch richtig zu arbeiten.
Davon kann ich nur feststellen, dass es ein Problem mit Google Play war, nicht mit meinem Code.
ich für 3 Tage gewartet haben und immer noch die –