Verwenden des iOS-In-App-Kaufdienstes

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Erstellen von iOS-Apps


In-App-Bezahldienste ermöglichen Ihnen, digitalen Inhalt direkt in Ihren Anwendungen zu verkaufen. iOS-In-App-Kauf ist der In-App-Bezahldienst für iOS. In diesem Thema wird beschrieben, wie Sie mit FireMonkey Ihren Anwendungen den Zugriff auf den In-App-Kauf für iOS ermöglichen.

Hinweis: Lesen Sie deshalb zuerst Mobile iOS-Anwendungsentwicklung. Die folgenden Informationen stellen Ergänzungen des Hauptthemas zur iOS-Entwicklung in der Dokumentation dar.

Unterstützte Geräte

FireMonkey unterstützt den In-App-Kauf für iOS auf allen unterstützten iOS-Geräten.

Hinweis: Der iOS-Simulator wird nicht unterstützt.

Grundvoraussetzungen

Bevor Sie den In-App-Kaufdienst für iOS verwenden können, müssen Sie zusätzlich zum Vorbereiten Ihrer Entwicklungsumgebung Folgendes ausführen:

Konfigurieren Ihrer Anwendung für den In-App-Kauf in iTunes Connect

Sie müssen zuerst einen Eintrag für Ihre Anwendung in iTunes Connect erstellen, um den Dienst In-App-Kauf für iOS in Ihrer Anwendung nutzen und testen zu können.

Wenn der Eintrag vorhanden ist, öffnen Sie im Modul Manage Your Apps von iTunes Connect die Seite "App Summary" Ihrer Anwendung, und klicken Sie rechts auf dieser Seite auf Manage In-App Purchases.

Auf der Seite, die angezeigt wird, können Sie den In-App-Kauf für Ihre Anwendung verwalten. Beispielsweise können Sie Produkte für den In-App-Kauf anlegen, die in Ihrer Anwendung verkauft werden sollen.

TInAppPurchase unterstützt verbrauchbare und nicht verbrauchbare Produkte für den In-App-Kauf. Weitere Informationen über die Produktarten finden Sie unter About In-App Purchase Products.

Hinweis: Gegenwärtig werden keine Typen auf Abonnementbasis unterstützt.

Hinzufügen der Unterstützung für In-App-Kauf zu mobilen iOS-Apps

Sie müssen Ihrer Anwendung eine Instanz dieser Komponente hinzufügen, und eine Verbindung zum gewünschten In-App-Bezahldienst herstellen, entweder beim Start der Anwendung oder zu einem anderen Zeitpunkt. Anschließend können Sie den Dienst verwenden. Wenn eine Verbindung zu Ihrem In-App-Bezahldienst hergestellt ist, können Sie:

Herstellen einer Verbindung zum In-App-Bezahldienst

Bevor Sie Ihren In-App-Bezahldienst verwenden können, müssen Sie TInAppPurchase für die Verbindung mit Ihrem In-App-Bezahldienst konfigurieren und eine Verbindung dazu herstellen.

Konfigurieren der Verbindungsdaten für Ihren In-App-Bezahldienst

Zum Herstellen einer Verbindung zum In-App-Kaufdienst für iOS auf iOS benötigt TInAppPurchase keine spezielle Konfiguration und sollte ausgeführt werden, sofern Ihre Anwendung:

Herstellen einer Verbindung zu Ihrem In-App-Bezahldienst

Rufen Sie zum Herstellen einer Verbindung mit dem Ziel-In-App-Bezahldienst SetupInAppPurchase auf. Diese Prozedur ist asynchron und löst beim Beenden das Ereignis OnSetupComplete aus. Wenn Sie OnSetupComplete einer Ereignisbehandlungsroutine zuweisen möchten, sollten Sie dies vor dem Aufruf von SetupInAppPurchase ausführen:

InAppPurchase1.OnSetupComplete := InAppPurchase1SetupComplete;
InAppPurchase1.SetupInAppPurchase;

OnSetupComplete wird normalerweise einer Ereignisbehandlungsroutine zugewiesen, um die Liste der Produkte anzufordern, sobald die Verbindung mit dem Zieldienst hergestellt ist. Alternativ können Sie IsSetupComplete aufrufen, um zu überprüfen, ob Sie zu einem bestimmten Zeitpunkt den Dienst verwenden können (True) oder nicht (False).

Verwenden Ihres In-App-Bezahldienstes

Wenn eine Verbindung zu Ihrem In-App-Bezahldienst eingerichtet ist, können Folgendes ausführen:

Abrufen von Informationen zu einer Liste mit Produkten

Ihre Anwendung sollte eine Liste mit den IDs der Produkte enthalten, die über Ihre Anwendung gekauft werden können. Speichern Sie diese Liste in der Eigenschaft TInAppPurchase.ProductIDs. Sie können QueryProducts jederzeit aufrufen, um Informationen über die Produkte mit diesen IDs anzufordern, z. B. ob diese Produkte gekauft wurden oder nicht.

Falls ein Fehler auftritt, wird TInAppPurchase.OnError mit ProductsRequest als FailureKind ausgelöst.

Wenn die Anforderung erfolgreich ist, wird stattdessen TInAppPurchase.OnProductsRequestResponse ausgelöst. Dieses Ereignis stellt zwei Produktlisten bereit:

  • Products, ein TList-Objekt der Instanzen von TProduct, das die Liste der gültigen verfügbaren und gekauften Produkte bereitstellt.
  • InvalidProductIDs, ein TStrings-Objekt, das eine Liste mit den IDs von Produkten bereitstellt, die ungültig sind.

Um Produkte, die Ihr Benutzer gekauft hat, von denjenigen zu unterscheiden, die nur zum Kauf verfügbar sind, können Sie IsProductPurchased mit der ID eines Produkts aufrufen:

if InAppPurchase1.IsProductPurchased(ProductID) then { Do something. }
Hinweis: Wenn die Produktliste ein verbrauchbares Produkt enthält, das gekauft wurde, müssen Sie jetzt dieses Produkt verbrauchen.

TProduct stellt viele Eigenschaften bereit, die Informationen über die Produkte enthalten.

Kaufen von Produkten

Bevor Sie Ihrem Benutzer ermöglichen, Produkte zu kaufen, rufen Sie CanMakeInAppPurchases auf, um zu überprüfen, ob es Ihrem Benutzer erlaubt ist, Einkäufe zu tätigen (True) oder nicht (False):

if not InAppPurchase1.CanMakeInAppPurchases then { Disable or hide the in-app payments GUI elements of your application. }

Um den Kauf eines Produkts aus der Liste der verfügbaren Produkte über Ihren In-App-Bezahldienst anzufordern, rufen Sie PurchaseProduct mit der Produkt-ID auf:

InAppPurchase1.PurchaseProduct(ProductID);

Falls ein Fehler auftritt, wird TInAppPurchase.OnError mit Purchase als FailureKind ausgelöst.

Wenn der Kauf erfolgreich ist, wird stattdessen TInAppPurchase.OnPurchaseCompleted ausgelöst. Dieses Ereignis stellt die ID des gekauften Produkts bereit, und der Parameter NewTransaction dieses Ereignisses ist True, wenn das Produkt gerade gekauft wurde oder False, wenn es wiederhergestellt wurde. Mit dieser Ereignisbehandlungsroutine können Sie gekaufte Produkte verwalten; beispielsweise, wenn es sich bei dem gekauften Produkt um ein verbrauchbares Produkt handelt, können Sie es verbrauchen.

Verbrauchen von Produkten

Hinweis: TInAppPurchase stellt keine Methode bereit, mit der Sie feststellen können, ob ein Produkt ein Verbrauchsprodukt ist oder nicht ist. Dies muss in Ihrer Anwendung separat erfolgen. Sie können beispielsweise eine Liste mit IDs von verbrauchbaren oder nicht-verbrauchbaren Produkten in Ihrer Anwendung hart codieren.

Verbrauchbare Produkte können mehr als einmal gekauft werden. Wenn Ihr Benutzer ein verbrauchbares Produkt kauft, müssen Sie ConsumeProduct aufrufen, um Ihren In-App-Bezahldienst darüber zu informieren, dass dieses Produkt verbraucht wurde:

InAppPurchase1.ConsumeProduct(ProductID);
Hinweise:
  • Alternativ können Sie ConsumeProducts mit einer Liste der Produkt-IDs aufrufen.
  • Der In-App-Kauf für iOS muss nicht über verbrauchte Produkte informiert werden.

Nach dem Aufruf einer der Methoden zum Verbrauchen eines Produkts werden schließlich die folgenden Ereignisse ausgelöst:

  • TInAppPurchase.OnConsumeCompleted, wenn das Produkt erfolgreich verbraucht wurde. Behandeln Sie dieses Ereignis, um diesen Kauf in Ihrer Anwendung zu verarbeiten. Wenn Ihre Anwendung beispielsweise einen Zähler für Cookies führt und Ihr Benutzer ein "5-Cookies"-Produkt erwirbt, können Sie den Zähler für Cookies in Ihrer Anwendung um 5 erhöhen.
  • TInAppPurchase.OnConsumeFailed, wenn ein Fehler auftritt, durch den der Verbrauch des Produkts verhindert wurde. Das Argument ErrorMessage dieses Ereignisses enthält eine detaillierte Beschreibung des Fehlers.

Wiederherstellen von Produkten auf dem aktuellen Gerät, die von einem anderen Gerät aus gekauft wurden

In der In-App-Abrechnung für Google Play erscheinen die nicht verbrauchbaren Produkte eines Benutzers immer als auf einem beliebigen Gerät dieses Benutzers gekauft. Sie müssen keine weiteren Operationen durchführen, um diese Käufe wiederherzustellen.

Im In-App-Kauf für iOS erscheinen die nicht verbrauchbaren Produkte eines Benutzers nicht standardmäßig als gekauft, wenn der Benutzer ein anderes Gerät verwendet. Um Produkte, die auf einem anderen Gerät gekauft wurden, auf dem aktuellen Gerät wiederherzustellen, müssen Sie RestorePurchasedProducts aufrufen. Das Wiederherstellen eines Produkts, das dem kostenlosen Erwerb dieses Produkts entspricht, löst TInAppPurchase.OnPurchaseCompleted mit False als Wert des Parameters NewTransaction aus. Behandeln Sie dieses Ereignis, um die wiederhergestellten Käufe zu verfolgen.

Hinweise:
  • Wenn Ihr Benutzer versucht, ein bereits gekauftes Produkt erneut zu kaufen, verursacht der Kauf keine Kosten für den Benutzer.
  • Beim Wiederherstellen von Käufen wird der Benutzer aufgefordert, seine Anmeldeinformationen für den App Store einzugeben. Sie sollten Käufe nicht automatisch wiederherstellen, sondern die Benutzer sollten die Wiederherstellungsoperation manuell starten, beispielsweise über eine "Wiederherstellen"-Schaltfläche.

Herunterladen von Produktinhalt, der auf iTunes gespeichert ist

Wenn Sie auf iTunes ein Produkt für den In-App-Kaufdienst für iOS definieren, können Sie Inhalt auf iTunes hochladen und diesen Inhalt Ihrem Produkt zuordnen, sodass Ihre Anwendung diesen Inhalt von iTunes herunterladen kann.

Wenn ein Benutzer ein Produkt kauft oder ein bereits erworbenes Produkt wiederherstellt, startet die TInAppPurchase-Komponente automatisch den Download des herunterladbaren Inhalts des Produkts. TInAppPurchase.OnDownloadProgress wird beim Herunterladen des Inhalts ausgelöst, sodass Sie den Fortschritt verfolgen und die verbleibende Zeit für den Download abschätzen können. Nach Abschluss des Downloads wird TInAppPurchase.OnDownloadCompleted ausgelöst; dieses Ereignis stellt den lokalen Pfad zu den heruntergeladenen Dateien bereit, damit Sie sie öffnen können.

Hinweis: Zu einem Produkt können mehrere herunterladbare Dateien gehören. Jede herunterladbare Datei hat eine eigene ID, und OnDownloadCompleted stellt sowohl die ID des Produkts als auch die ID des herunterladbaren Inhalts bereit.

Die Instanzen von TProduct, die Sie über den In-App-Kaufdienst für iOS beim Abfragen einer Liste mit Produkten abrufen, stellen Informationen über den herunterladbaren Inhalt des Produkts bereit:

Sie sollten in Ihrer Anwendung die Versionen des herunterladbaren Inhalts eines Produkts verfolgen. Wenn TProduct.DownloadContentVersion nicht mit der Version des Inhalts übereinstimmt, den Sie zuvor von iTunes heruntergeladen haben, sollten Sie den Inhalt erneut herunterladen, damit Ihr Benutzer über die neueste Version des gekauften Inhalts verfügt. Mit TCustomInAppPurchase.RestorePurchasedProducts können Sie heruntergeladenen Inhalt aktualisieren. Die Download-Ereignisse OnDownloadProgress und OnDownloadCompleted werden erneut ausgelöst, wenn der letzte Inhalt heruntergeladen wurde.

Testen Ihrer In-App-Kaufprodukte

Sie können Ihre In-App-Kaufprodukte testen, ohne dass Kosten entstehen, indem Sie ein Testbenutzerkonto in iTunes Connect verwenden. Siehe Testing In-App Purchase Products.

Siehe auch