Bei einer meine Apps (Blogeintrag folgt) bin ich gerade dabei, ein Abomodell hinzuzufügen.

Die App wird in Dart/Flutter programmiert. Leider ist die Implementierung von Abos ziemlich schlecht dokumentiert, sodass ich als Hobbyprogrammierer nicht so ganz dahinter gekommen bin, wie das alles einzurichten ist.

Dabei bin ich auf einen Beitrag von medium.com gestoßen, in dem die Kombination Flutter + Google Play Store + Abo + RevenueCat beschrieben wurde.

RevenueCat ist ein Dienstleister, mit dem das Handling von Abos sehr einfach konfiguriert werden kann.

Hier ist auch die Dokumentation um einiges besser, aber manche Themen wollte ich hier nochmal aufgreifen, um es auch ohne komplizierten Beispiel verständlich ist. Ich werde hier nicht auf jede Einzelheit eingehen, also bitte dennoch die Dokumentationen durchlesen.

RevenueCat

Hier eine kleine Hilfestellung, wie die Abos angelegt werden müssen:

Unter “Entitlements” wird das “Level der Freischaltung” quasi angegeben. Da ich nur An oder Aus habe, habe ich es einfach “full_access” genannt.

Die “Offerings” sind quasi eure Angebote. Davon kann immer nur eins aktiv sein. Ich habe meins “default” genannt.

Unter “Products” sind die Abos hinterlegt, die ihr auch im Play Store angegeben habt. Der Identifier muss auch zwingend genau den gleichen Namen haben wie im Play Store.

Die anschließende Verlinkung der 3 Punkte untereinander ist eigentlich selbsterklärend.

Programm Code

Vorbereitung

Das Ganze funktioniert mit dem Flutter Paket purchase_flutter

Um den aktuellen Status der Abos zu erhalten, führt man beim Starten der App folgendes auf:

await Purchases.setDebugLogsEnabled(true); // oder false, wenn ihr keine Logs wollt
await Purchases.setup("<eure ID>"); // wie gesagt, hierzu bitte Doku lesen!

Preise auslesen

So könnt ihr die Preise eurer einzelnen Abos oder Produkte auslesen

List<String> MyAboNames = ['Abo1','Abo2','Abo3']; // Die Namen, die Ihr bei RevenueCat unter "Products" vergeben habt
List<Product> myProducts;

// Produkte laden
myProducts = await Purchases.getProducts(MyAboNames);

// Preise auslesen
String AboPreis1 = myProducts[0].priceString;
String AboPreis2 = myProducts[1].priceString;
String AboPreis3 = myProducts[2].priceString;

Aktive Abos auslesen

So könnt ihr ein Array an aktiven Abos auslesen.

PurchaserInfo _purchaserInfo;
List<String> mysubscriptions;

_purchaserInfo = await Purchases.getPurchaserInfo();
mysubscriptions = _purchaserInfo.activeSubscriptions;

Produkt abonnieren

mit der gleichen Variable “MyAboNames”, die bereits oben verwendet wurde, können die Produkte abonniert werden.

Purchases.purchaseProduct(MyAboNames[0]);
Purchases.purchaseProduct(MyAboNames[1]);
Purchases.purchaseProduct(MyAboNames[2]);

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert