Ich habe versucht, die In-App-Abrechnung für meine erste App einzurichten, und habe den Sku android.test.purchased verwendet. Der Kauf kommt zustande und ich schaffe es, die SKU in mein Inventar aufzunehmen, aber wie der Titel schon sagt, wird onIabPurchaseFinished nie aufgerufen.
Ich denke, es hat möglicherweise etwas mit diesem Protokoll zu tun: "Konnte nicht speichern, welche Ansicht den Fokus hat, da die fokussierte Ansicht com.android.internal.policy.impl.PhoneWindow$DecorView@406743d0 keine ID hat". Das wird angezeigt, kurz bevor Sie zu Google Play wechseln. Ich bin mir nicht sicher, was das bedeutet ...
Kauf starten:
mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, "");
Und der Zuhörer:
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
@Override
public void onIabPurchaseFinished(IabResult result, Purchase info) {
System.out.println("Purchase Finish heard something");
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
return;
} else{
Log.d(TAG,"Success!");
}
}
};
android
in-app-billing
AAAton
quelle
quelle
Antworten:
Fügen Sie dies der Aktivität hinzu, die Folgendes aufruft
mHelper.launchPurchaseFlow(..)
:quelle
Ich habe gerade eine andere wichtige Sache herausgefunden: Der requestCode, der zum Starten des Kaufflusses verwendet wird, muss> = 0 sein!
Ich habe "new Random (). nextInt ()" verwendet, um einen zufälligen requestCode zu generieren, und manchmal hat es funktioniert, manchmal nicht. Jetzt habe ich in der folgenden Dokumentation herausgefunden, dass der requestCode keine negative Zahl sein sollte:
http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29
quelle
Ich hatte das gleiche Problem und das onActivityResult wurde auch nicht aufgerufen.
Inspiriert von @ Ghulams Antwort wurde mir klar, dass die Aktivität onActivityResult das onActivityResult des Fragments nicht automatisch aufruft , sodass ich es manuell ausführen musste.
quelle
Sie müssen protected void onActivityResult () aufrufen. In Ihrer übergeordneten Aktivität anstelle von MainActivity (Trivial Drive), von wo aus Sie Ihre MainActivity als Trivial Drive-Aktivität aufrufen.
Sie erhalten Ergebniscode-Werte -1, wenn der Kauf erfolgreich war, andernfalls 0.
quelle
Ich hatte das gleiche Problem und die akzeptierte Lösung wurde bereits implementiert, konnte aber nicht sagen, was dies verursachte. Der Umzug in die neue Google Play Billing Library 1.0 (veröffentlicht am 19. September 2017) hat das Problem für mich behoben!
Ich hoffe, dass folgende Links jemandem helfen, der die neue Bibliothek implementieren möchte:
Googles Blogbeitrag über die Veröffentlichung
Googles Youtube-Video
Spielen Sie die Billing Library Training Class
Beispiel für Trivial Drive v2 von Google
Spielen Sie das Codelab der Abrechnungsbibliothek ab, das während der Google I / O 2017 veröffentlicht wurde
Abrechnungsbibliotheksdokumente abspielen
Offizielle Referenz für Klassen und Methoden
Gibt Notizen frei
quelle