10

Alle Anleitungen, die ich bei Android In-App-Abrechnung V3 finden konnte, gehen davon aus, dass Sie über eine einzige Aktivität verfügen, die alle abrechnungsbezogenen Aspekte abdeckt. In meinem Fall gibt es mehrere Aktivitäten, die Zugriff auf die Abrechnung benötigen. Wie würde ich so elegant mit so etwas umgehen?Entkopplung der In-App-Abrechnung von Aktivität

Ein Beispielproblem, auf das ich gestoßen bin: Bei der Arbeit mit den Google-Billing-Hilfsklassen übergeben Sie die aktuelle Aktivität immer als Parameter. Spätere Rückrufe (z. B. onActivityResult) werden für diese Aktivität aufgerufen. Aber was passiert, wenn sich die aktive Aktivität ständig ändert? Muss ich die Abrechnung jederzeit beenden und neu initialisieren?

Antwort

4

Aber was ist, wenn sich die aktive Aktivität ständig ändert? Muss ich die herunterfahren und die Abrechnung die ganze Zeit neu initialisieren?

Da ist nichts schlechtes drin. Die Verbindung zu einem Dienst ist sehr schnell. Am wichtigsten ist es, onActivityResult() -Aufruf zu verarbeiten, wenn die Aktivität erneut gestartet wird.

Wie würde ich mit so etwas elegant umgehen?

Ich bin mir nicht sicher, welche Art von Anwendung Sie schreiben. Wenn es ein Spiel ist, dann besteht es höchstwahrscheinlich aus einer einzigen Aktivität und es gibt sowieso kein Problem. Wenn es sich um eine andere Anwendung mit mehreren Aktivitäten handelt, ist es meiner Meinung nach eine gute Idee, eine einzige Aktivität zu haben, bei der der Benutzer alle In-App-Produkte (gekauft und gekauft) sehen kann. Dies ist wie eine "interne Speicher" -Aktivität. Diese Aktivität kann eine Verbindung zum Abrechnungsdienst herstellen. Andere Aktivitäten sollten zum "internen Laden" weitergeleitet werden, wo Nutzer mehr über ein In-App-Produkt lesen und sich entscheiden können, es zu kaufen. Ich finde es sehr praktisch.

Ein anderer Ansatz wäre es, Ihre Abrechnungslogik in einem Fragment zu implementieren, das in jeder Aktivität wiederverwendet werden kann. Sie müssen nur onActivityResult() überschreiben und das Ergebnis an dieses Fragment weiterleiten. So habe ich es in meiner App implementiert.

Hoffe, das hilft.

+0

Großartige Informationen. Ich habe eine Frage, wie wäre es mit dem Zugriff auf den InAppBilling-Code von einer anderen Aktivität? Ich kann es nicht zur Arbeit bringen –

+0

Könnten Sie bitte Ihr Beispielfragment mit Rechnungsstellung posten? Vielen Dank. – dragoon

+0

Schnelle Verbindung zu einem Dienst, ok, aber was ist mit den Auswirkungen auf das Gerät? Geht es um die Kommunikation mit einem Server? –

0

Denken Sie ein wenig außerhalb der Beispielbox. Es bezieht sich nicht nur auf Ihr Problem, sondern ist allgemein gültig.

Ich würde ein Benachrichtigungssystem verwenden, weil Sie 1 Verleger und viele Listener benötigen (Fall 2). Man kann hässlichste Methode (aber am schnellsten schreiben):

  1. eine gefälschte Aktivität machen (auch unsichtbar, was auch immer)
  2. die Beispiele Code Copy-Paste, die dort
  3. ein bisschen hacken arbeitet, dass die Arbeit Code und Zuhörer, die
  4. Parameter als die realwirtschaftliche Aktivität nimmt
  5. benachrichtigen, wenn Ihre Instanzen benötigt, wenn

5. bis-Abstimmung erforderlich, wenn geholfen oder gefallen :)

+0

Hm, eine gefälschte Aktivität zu erstellen ist nicht so einfach. Die einzige Möglichkeit, eine Aktivität zu erstellen, besteht darin, sie über den Android-Lebenszyklus zu starten, richtig? In diesem Fall wäre die Aktivität nicht mehr falsch, sondern wäre tatsächlich auf dem Bildschirm ;-) – Boris

+0

Wie schwer ist es für Sie, eine Aktivität unsichtbar zu machen? –

+0

Ich denke, dass der Zweck der Entkopplung der Geschäftslogik von der Sicht (Aktivitäten) vereitelt. – Boris

Verwandte Themen