In-App Purchase im WebView?

  • Antworten:2
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 1

10.10.2019, 10:00:03 via Website

Liebe Community,

ich befinde mich in der Endphase der Entwicklung meiner App.
Leider hänge ich jedoch seit längerem an einem Punkt fest.

Es handelt sich um eine WebView App mit lokal gespeicherten Dateien (html, css, js).
Nun möchte ich, dass Nutzer in der App bestimmte Funktionen über einen Google Play Kauf freischalten können, also einen In-App Kauf.

Mein Gedanke war das ganze über einen Link zu erstellen.
Also via HTML einen Link zu setzen und über Java shouldOverrideUrlLoading den Intent starten.
Leider habe ich keine Ahnung ob das funktioniert, bzw. wie der entsprechende Intent für diese Funktion aussehen sollte.

Ich hoffe hier Hilfe zu finden. Vielen Dank!

Liebe Grüße.

Diskutiere mit!
Beste Antwort
  • Forum-Beiträge: 11.154

10.10.2019, 10:13:07 via Website

Hallo Dr. Muffin,
herzlich wilkommen hier im Forum :)



Ich würde das ganze mit einem JavaScriptInterface umsetzen und nicht mit shouldOverrideUrl:
https://developer.android.com/guide/webapps/webview#BindingJavaScript

Für ein Intent schaust du dir am besten die Gundlagen an: https://developer.android.com/training/basics/firstapp/starting-activity

Ansonsten musst du halt noch verhindern, dass der Inhalt ohne InApp kauf zugreifbar ist.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.329

14.10.2019, 09:04:57 via Website

Moin,
also wenn es wirklich nur darum geht durch einen Link eine Aktion auszulösen, ist shouldOverrideUrlLoading gar nicht so verkehrt. Eine sehr simple Lösung, die genau das tut was sie soll. Du brauchst ja nicht mal einen Intent. Sobald du eine bestimmte URL erkennst, löst du einfach im Code den IAP aus.
Danach geht der Kontrollfluss ja in die Play Services, also eine native UI, die über dem WebView eingeblendet wird.
Am Ende bekommst du von den Play Services ein Callback und kannst in deinem WebView eine andere URL laden.

Einziger Fallstrick, den ich so sehe:
Du musst den Link in der HTML Seite ausblenden, wenn der IAP bereits gemacht wurde.
Du brauchst also irgendeine Logik, die abhängig vom Status des Kaufs andere URLs lädt, oder Parameter an die Seite übergibt, die der Seite sagen, sie soll den Link nicht darstellen.

Die URL kann aussehen wie du möchtest, sie sollte nur eindeutig identifizierbar sein.

https://www.meinedomain.com/index.htm?purchase_id=godmode

Reicht z.B. schon. Die URL zeigt beim Aufruf im Browser einfach den Inhalt an, denn der Parameter hat nur eine Wirkung, wenn die Seite ihn interpretiert, aber deine Logik in shouldOverrideUrlLoading erkennt sie und kann sogar die ID des Kaufs auslesen. Du kannst also mehrere Käufe so starten.

Als Library für die Behandlung kann ich dir diese empfehlen:

https://github.com/anjlab/android-inapp-billing-v3

Hilfreich?
Diskutiere mit!