Wie füge ich einer iOS-App einen In-App-Kauf hinzu? Was sind alle Details und gibt es einen Beispielcode?
Dies ist eine Art Sammelbegriff für das Hinzufügen von In-App-Käufen zu iOS-Apps
ios
objective-c
swift
cocoa-touch
in-app-purchase
Jojodmo
quelle
quelle
Antworten:
Schnelle Benutzer
Swift-Benutzer können My Swift Answer für diese Frage lesen .
Oder lesen Sie die Antwort von Yedidya Reiss , die diesen Objective-C-Code in Swift übersetzt.
Objective-C-Benutzer
Der Rest dieser Antwort ist in Ziel-C geschrieben
App Store Connect
My Apps
dann auf die App, zu der Sie den Kauf hinzufügen möchtenFeatures
Überschrift und wählen Sie dannIn-App Purchases
links aus+
Symbol in der Mittenon-consumable
. Wenn Sie dem Benutzer einen physischen Artikel senden oder ihm etwas geben möchten, das er mehr als einmal kaufen kann, würden Sie wählenconsumable
.tld.websitename.appname.referencename
funktioniert dies am besten, sodass Sie sie beispielsweise verwenden könnencom.jojodmo.blix.removeads
cleared for sale
und wählen Sie dann Preisstufe als 1 (99 ¢). Tier 2 wäre 1,99 USD und Tier 3 wäre 2,99 USD. Die vollständige Liste ist verfügbar, wenn Sie aufview pricing matrix
Ich empfehle die Verwendung von Tier 1 klicken , da dies normalerweise das Höchste ist, das jemals jemand für das Entfernen von Anzeigen bezahlen wird.add language
Schaltfläche und geben Sie die Informationen ein. Dies wird dem Kunden ALLES angezeigt. Geben Sie also nichts ein, was Sie nicht sehen möchtenhosting content with Apple
wählen Sie neinscreenshot for review
FOR NOW , auf alles, was wir überspringen, werden wir zurückkommen.Es kann einige Stunden dauern, bis sich Ihre Produkt-ID registriert
App Store Connect
hat. Seien Sie also geduldig.Einrichten Ihres Projekts
Nachdem Sie Ihre In-App-Kaufinformationen in App Store Connect eingerichtet haben, rufen Sie Ihr Xcode-Projekt auf und gehen Sie zum Anwendungsmanager (blaues seitenähnliches Symbol oben auf Ihren Methoden und Header-Dateien). Klicken Sie auf Ihre App unter Ziele (sollte die erste sein) gehen Sie dann zu Allgemein. Unten sollten Sie sehen, wie
linked frameworks and libraries
Sie auf das kleine Pluszeichen klicken und das Framework hinzufügen.StoreKit.framework
Wenn Sie dies nicht tun, funktioniert der In-App-Kauf NICHT !Wenn Sie Objective-C als Sprache für Ihre App verwenden, sollten Sie diese fünf Schritte überspringen . Wenn Sie Swift verwenden, können Sie My Swift Answer für diese Frage hier folgen. Wenn Sie Objective-C für den In-App-Kaufcode verwenden möchten, Swift jedoch in Ihrer App verwenden, können Sie Folgendes tun ::
Erstellen Sie eine neue
.h
(Header - Datei) , indem Sie aufFile
>New
>File...
( Command ⌘+ N). Diese Datei wird.h
im Rest des Tutorials als "Ihre Datei" bezeichnetWenn Sie dazu aufgefordert werden, klicken Sie auf Bridging-Header erstellen . Dies wird unsere Bridging-Header-Datei sein. Wenn Sie nicht dazu aufgefordert werden, fahren Sie mit Schritt 3 fort. Wenn Sie dazu aufgefordert werden, überspringen Sie Schritt 3 und fahren Sie direkt mit Schritt 4 fort.
Erstellen Sie eine weitere
.h
Datei mit dem NamenBridge.h
im Hauptprojektordner. Wechseln Sie dann zum Anwendungsmanager (das blaue seitenähnliche Symbol), wählen Sie Ihre App imTargets
Abschnitt aus und klicken Sie aufBuild Settings
. Suchen Sie die Option Swift Compiler - Codegenerierung und setzen Sie die Option Objective-C Bridging Header aufBridge.h
Fügen Sie in Ihrer Bridging-Header-Datei die Zeile hinzu
#import "MyObjectiveCHeaderFile.h"
, in derMyObjectiveCHeaderFile
sich der Name der Header-Datei befindet, die Sie in Schritt 1 erstellt haben. Wenn Sie beispielsweise Ihre Header-Datei InAppPurchase.h benannt haben , würden Sie die Zeile#import "InAppPurchase.h"
zu Ihrer Bridge-Header-Datei hinzufügen .Erstellen Sie eine neue Objective-C - Methoden (
.m
Datei) , indem Sie aufFile
>New
>File...
( Command ⌘+ N). Nennen Sie es genauso wie die Header-Datei, die Sie in Schritt 1 erstellt haben. Wenn Sie beispielsweise die Datei in Schritt 1 InAppPurchase.h aufgerufen haben , würden Sie diese neue Datei InAppPurchase.m aufrufen . Diese Datei wird.m
im Rest des Tutorials als "Ihre Datei" bezeichnet.Codierung
Jetzt werden wir uns mit der eigentlichen Codierung befassen. Fügen Sie Ihrer
.h
Datei den folgenden Code hinzu :Als nächstes müssen Sie das
StoreKit
Framework in Ihre.m
Datei importieren sowie hinzufügenSKProductsRequestDelegate
undSKPaymentTransactionObserver
nach Ihrer@interface
Deklaration:Wenn Sie nun Folgendes in Ihre
.m
Datei einfügen, wird dieser Teil kompliziert. Ich empfehle daher, die Kommentare im Code zu lesen:Jetzt möchten Sie Ihren Code für das hinzufügen, was passieren wird, wenn der Benutzer die Transaktion beendet. In diesem Lernprogramm verwenden wir das Entfernen von Adds. Sie müssen Ihren eigenen Code für das hinzufügen, was passiert, wenn die Banneransicht geladen wird.
Wenn Ihre Anwendung keine Anzeigen enthält, können Sie eine beliebige andere Verwendung verwenden. Zum Beispiel könnten wir die Farbe des Hintergrunds blau machen. Dazu möchten wir Folgendes verwenden:
Jetzt
viewDidLoad
möchten Sie irgendwo in Ihrer Methode den folgenden Code hinzufügen:Nachdem Sie den gesamten Code hinzugefügt haben, gehen Sie in Ihre
.xib
oderstoryboard
-Datei und fügen Sie zwei Schaltflächen hinzu, eine mit der Aufschrift "Kaufen" und die andere mit der Aufschrift "Wiederherstellen". Schließen Sie dietapsRemoveAds
IBAction
Schaltfläche "Kaufen", die Sie gerade erstellt haben, und dierestore
IBAction
Schaltfläche "Wiederherstellen" an. Dierestore
Aktion prüft, ob der Benutzer den In-App-Kauf zuvor gekauft hat, und gibt ihm den In-App-Kauf kostenlos, falls er ihn noch nicht hat.Zur Überprüfung einreichen
Gehen Sie als Nächstes in den App Store Connect und klicken
Users and Access
Sie auf dieSandbox Testers
Überschrift und dann auf das+
Symbol links, wo es stehtTesters
. Sie können nur zufällige Dinge für den Vor- und Nachnamen eingeben, und die E-Mail muss nicht echt sein - Sie müssen sich nur daran erinnern können. Geben Sie ein Passwort ein (an das Sie sich erinnern müssen) und geben Sie den Rest der Informationen ein. Ich würde empfehlen, dass SieDate of Birth
ein Datum festlegen, an dem der Benutzer mindestens 18 Jahre alt ist.App Store Territory
MUSS im richtigen Land sein. Melden Sie sich anschließend von Ihrem vorhandenen iTunes-Konto ab (Sie können sich nach diesem Lernprogramm wieder anmelden).Führen Sie jetzt Ihre Anwendung auf Ihrem iOS-Gerät aus. Wenn Sie versuchen, sie auf dem Simulator auszuführen , wird der Kauf immer fehlschlagen. Sie MÜSSEN sie auf Ihrem iOS-Gerät ausführen. Sobald die App ausgeführt wird, tippen Sie auf die Schaltfläche Kaufen. Wenn Sie aufgefordert werden, sich bei Ihrem iTunes-Konto anzumelden, melden Sie sich als Testbenutzer an, den wir gerade erstellt haben. Wenn Sie als Nächstes aufgefordert werden, den Kauf von 99 ¢ zu bestätigen, oder was auch immer Sie für die Preisstufe festlegen, machen Sie einen BILDSCHIRM-SCHNAPPSCHUSS , den Sie für Ihren
screenshot for review
App Store Connect verwenden werden. Stornieren Sie nun die Zahlung.Jetzt gehen, um App Store Connect , dann gehen
My Apps
>the app you have the In-app purchase on
>In-App Purchases
. Klicken Sie dann auf Ihren In-App-Kauf und dann unter den In-App-Kaufdetails auf Bearbeiten. Wenn Sie dies getan haben, importieren Sie das Foto, das Sie gerade auf Ihrem iPhone aufgenommen haben, in Ihren Computer und laden Sie es als Screenshot zur Überprüfung hoch. Geben Sie dann in den Überprüfungsnotizen Ihre TEST-BENUTZER- E-Mail-Adresse und Ihr Kennwort ein. Dies hilft Apple bei der Überprüfung.Nachdem Sie dies getan haben, kehren Sie zu der Anwendung auf Ihrem iOS-Gerät zurück, die weiterhin als Testbenutzerkonto angemeldet ist, und klicken Sie auf die Schaltfläche "Kaufen". Bestätigen Sie diesmal die Zahlung. Keine Sorge, dies belastet Ihr Konto NICHT mit Geld. Testbenutzerkonten erhalten alle In-App-Käufe kostenlos. Nachdem Sie die Zahlung bestätigt haben, stellen Sie sicher, was passiert, wenn der Benutzer Ihr Produkt tatsächlich kauft das passiert. Wenn dies nicht der Fall ist, ist dies ein Fehler bei Ihrer
doRemoveAds
Methode. Auch hier empfehle ich, den Hintergrund zum Testen des In-App-Kaufs auf Blau zu ändern. Dies sollte jedoch nicht Ihr tatsächlicher In-App-Kauf sein. Wenn alles funktioniert und Sie bereit sind zu gehen! Stellen Sie einfach sicher, dass Sie den In-App-Kauf in Ihre neue Binärdatei aufnehmen, wenn Sie ihn in den App Store Connect hochladen!Hier sind einige häufige Fehler:
Protokolliert:
No Products Available
Dies könnte vier Dinge bedeuten:
kRemoveAdsProductIdentifier
im obigen CodeWenn es beim ersten Mal nicht funktioniert, seien Sie nicht frustriert! Gib nicht auf! Es dauerte ungefähr 5 Stunden, bis ich das zum Laufen bringen konnte, und ungefähr 10 Stunden, um nach dem richtigen Code zu suchen! Wenn Sie den obigen Code genau verwenden, sollte er einwandfrei funktionieren. Fühlen Sie sich frei zu kommentieren , wenn Sie Fragen haben , überhaupt .
Ich hoffe, dies hilft all jenen, die hoffen, ihrer iOS-Anwendung einen In-App-Kauf hinzuzufügen. Prost!
quelle
Übersetzen Sie einfach Jojodmo-Code in Swift:
quelle
Schnelle Antwort
Dies soll meine Objective-C-Antwort für Swift-Benutzer ergänzen , um zu verhindern, dass die Objective-C-Antwort zu groß wird.
Konfiguration
Richten Sie zunächst den In-App-Kauf auf appstoreconnect.apple.com ein . Befolgen Sie dazu den Anfang meiner Objective-C-Antwort (Schritte 1-13 unter dem App Store Connect- Header).
Es kann einige Stunden dauern, bis sich Ihre Produkt-ID im App Store Connect registriert hat. Seien Sie also geduldig.
Nachdem Sie Ihre In-App-Kaufinformationen in App Store Connect eingerichtet haben, müssen wir der App das Apple-Framework für In-App-Käufe hinzufügen
StoreKit
.Gehen Sie in Ihr Xcode-Projekt und rufen Sie den Anwendungsmanager auf (blaues seitenähnliches Symbol oben in der linken Leiste, in dem sich die Dateien Ihrer App befinden). Klicken Sie links unter den Zielen auf Ihre App (dies sollte die erste Option sein) und gehen Sie dann oben zu "Funktionen". In der Liste sollte die Option "In-App-Kauf" angezeigt werden. Wenn Sie diese Funktion aktivieren, wird Xcode
StoreKit
zu Ihrem Projekt hinzugefügt .Codierung
Jetzt fangen wir an zu programmieren!
Erstellen Sie zunächst eine neue schnelle Datei, die alle Ihre In-App-Käufe verwaltet. Ich werde es nennen
IAPManager.swift
.In dieser Datei erstellen wir eine neue Klasse mit dem Namen
IAPManager
aSKProductsRequestDelegate
undSKPaymentTransactionObserver
. Stellen Sie oben sicher, dass SieFoundation
und importierenStoreKit
Als Nächstes fügen wir eine Variable hinzu, um die Kennung für unseren In-App-Kauf zu definieren (Sie können auch eine verwenden
enum
, die bei mehreren IAPs einfacher zu warten wäre).Fügen wir als nächstes einen Initialisierer für unsere Klasse hinzu:
Jetzt werden wir die erforderlichen Funktionen hinzufügen
SKProductsRequestDelegate
undSKPaymentTransactionObserver
funktionieren:Wir werden die
RemoveAdsManager
Klasse später hinzufügenFügen wir nun einige Funktionen hinzu, mit denen Sie einen Kauf starten oder einen Kauf wiederherstellen können:
Als Nächstes fügen wir eine neue Dienstprogrammklasse hinzu, um unsere IAPs zu verwalten. Der gesamte Code könnte in einer Klasse sein, aber wenn er mehrfach vorhanden ist, ist er etwas sauberer. Ich werde eine neue Klasse namens
RemoveAdsManager
erstellen und darin einige Funktionen einfügenDie ersten drei Funktionen
removeAds
,restoreRemoveAds
undareAdsRemoved
sind Funktionen , dass Sie bestimmte Aktionen zu tun, nennen. Die letzten vier werden von aufgerufenIAPManager
.Fügen wir den ersten beiden Funktionen Code hinzu
removeAds
undrestoreRemoveAds
:Zuletzt fügen wir den letzten fünf Funktionen Code hinzu.
Alles zusammen ergibt so etwas:
Zuletzt müssen Sie dem Benutzer eine Möglichkeit hinzufügen, den Kauf zu starten und anzurufen
RemoveAdsManager.removeAds()
und eine Wiederherstellung und einen Anruf zu startenRemoveAdsManager.restoreRemoveAds()
, wie irgendwo eine Schaltfläche! Beachten Sie, dass Sie gemäß den App Store-Richtlinien eine Schaltfläche bereitstellen müssen, um Einkäufe irgendwo wiederherzustellen.Zur Überprüfung einreichen
Als letztes müssen Sie Ihren IAP zur Überprüfung im App Store Connect einreichen! Ausführliche Anweisungen hierzu finden Sie im letzten Teil meiner Objective-C-Antwort unter der Überschrift "Zur Überprüfung einreichen" .
quelle
RMStore ist eine kompakte iOS-Bibliothek für In-App-Käufe. Es umschließt die StoreKit-API und bietet Ihnen praktische Blöcke für asynchrone Anforderungen. Der Kauf eines Produkts ist so einfach wie das Aufrufen einer einzelnen Methode.
Für fortgeschrittene Benutzer bietet diese Bibliothek auch eine Empfangsüberprüfung, das Herunterladen von Inhalten und die Persistenz von Transaktionen.
quelle
Ich weiß, dass ich ziemlich spät dran bin, um dies zu veröffentlichen, aber ich teile ähnliche Erfahrungen, als ich die Seile des IAP-Modells lernte.
Der In-App-Kauf ist einer der umfassendsten Workflows in iOS, die vom Storekit-Framework implementiert werden. Die gesamte Dokumentation ist ziemlich klar, wenn Sie Geduld haben, sie zu lesen, ist jedoch in technischer Hinsicht etwas fortgeschritten.
Zusammenfassen:
1 - Produkte anfordern - Verwenden Sie die Klassen SKProductRequest und SKProductRequestDelegate, um eine Anforderung für Produkt-IDs auszugeben und diese von Ihrem eigenen itunesconnect-Shop zurück zu erhalten.
Diese SKProducts sollten verwendet werden, um die Benutzeroberfläche Ihres Geschäfts zu füllen, mit der der Benutzer ein bestimmtes Produkt kaufen kann.
2 - Zahlungsanforderung ausgeben - Verwenden Sie SKPayment & SKPaymentQueue, um der Transaktionswarteschlange eine Zahlung hinzuzufügen.
3 - Überwachen der Transaktionswarteschlange auf Statusaktualisierung - Verwenden Sie die aktualisierte Transaktionsmethode des SKPaymentTransactionObserver-Protokolls, um den Status zu überwachen:
4 - Schaltflächenfluss wiederherstellen - Verwenden Sie dazu die restoreCompletedTransactions von SKPaymentQueue. Schritt 3 erledigt den Rest zusammen mit den folgenden Methoden von SKPaymentTransactionObserver:
Hier ist ein Schritt-für-Schritt-Tutorial (das ich aufgrund meiner eigenen Versuche, es zu verstehen, verfasst habe), das es erklärt. Am Ende finden Sie auch ein Codebeispiel, das Sie direkt verwenden können.
Hier ist eine andere, die ich erstellt habe, um bestimmte Dinge zu erklären, die nur Text besser beschreiben kann.
quelle