BlogRight arrowTutorialRight ArrowiOS In-App-Käufe, Teil 5: Liste der SKError-Codes und deren Umgang
BlogRight arrowTutorialRight ArrowiOS In-App-Käufe, Teil 5: Liste der SKError-Codes und deren Umgang

iOS In-App-Käufe, Teil 5: Liste der SKError-Codes und deren Umgang

iOS In-App-Käufe, Teil 5: Liste der SKError-Codes und deren Umgang
Listen to the episode
iOS In-App-Käufe, Teil 5: Liste der SKError-Codes und deren Umgang

In diesem Artikel kommen wir auf die SKErrors zu sprechen: Welche Probleme verursachen sie und wie können Sie mit ihnen umgehen? Für jeden Fehler werden wir drei Aspekte beleuchten: Warum er auftritt, wie mit ihm umgegangen wird und welche Nachricht er als Fehlerbenachrichtigung anzeigt.

⭐️ Download our guide on in-app techniques which will make in-app purchases in your app perfect

SKError.Code.unknown, Code 0

Was er bedeutet. Es ist aus unbekanntem Grund ein Fehler aufgetreten.

Wie er behoben wird. Aus Entwicklersicht ist nichts zu tun. Dieser Fehler tritt bei einer Anfrage nach Produkten ab dem iOS 14 Simulator auf. Um ein Produkt zu erhalten, verwenden Sie in diesem Fall den lokalen StoreKit-Test oder ein echtes Gerät (oder einen Emulator) mit einer älteren iOS-Version als iOS 14.

Welche Nachricht angezeigt wird. Der Kauf ist aus einem unbekannten Grund nicht verfügbar. Bitte versuchen Sie es später erneut.

SKError.Code.clientInvalid, Code 1

Was er bedeutet. Dieser Nutzer kann keinen Kauf tätigen. Dies ist zum Beispiel dann der Fall, wenn ein Kind bei aktivierter Kindersicherung versucht, etwas zu kaufen.

Wie er behoben wird. Aus Entwicklersicht ist nichts zu tun.

Welche Nachricht angezeigt wird. Der Kauf wird nicht abgeschlossen. Bitte ändern Sie Ihr Konto oder Gerät.

SKError.Code.paymentCancelled, Code 2

Was er bedeutet. Der Benutzer gelangte zwar zum Zahlungsbildschirm, änderte jedoch seine Meinung über den Kauf und klickte auf „Abbrechen“.

Wie er behoben wird. Aus technischer Sicht ist kein Fehler aufgetreten, sodass in diesem Fall nichts zu tun ist. Aus Marketingsicht könnten Sie mit einem solchen Nutzer arbeiten, indem Sie ihm beispielsweise einen Rabatt anbieten.

Welche Nachricht angezeigt wird. Hier gibt es zwei Möglichkeiten. Die einfachste wäre, gar keine anzuzeigen. Sie können jedoch versuchen, den Nutzer mit einer Nachricht wiederzugewinnen. Wie wäre es mit: “Sie haben Ihren Kauf storniert. Wären Sie an einem Abonnement mit reduziertem Preis interessiert?”

SKError.Code.paymentInvalid, Code 3

Was er bedeutet. Aus irgendeinem Grund ist die Zahlung fehlgeschlagen. Das kann daran liegen, dass die Karte abgelaufen ist oder schlicht nicht genug Geld vorhanden war, um den Kauf zu tätigen.

Wie er behoben wird. Aus Entwicklersicht ist nichts zu tun.

Welche Nachricht angezeigt wird. Ihr Kauf wurde abgelehnt. Bitte prüfen Sie die Zahlungsdetails und stellen Sie sicher, genug Geld in Ihrem Konto zu haben.

SKError.Code.paymentNotAllowed, Code 4

Was er bedeutet. Möglicherweise gelten für diese Karte einige Kaufbeschränkungen. Sie verfügt über Limits oder darf nicht online verwendet werden.

Wie er behoben wird. Aus Entwicklersicht ist nichts zu tun.

Welche Nachricht angezeigt wird. Der Kauf ist für die ausgewählte Zahlungsmethode nicht verfügbar. Bitte stellen Sie sicher, dass Sie mit Ihrer Zahlungsmethode Online-Einkäufe tätigen können.

SKError.Code.storeProductNotAvailable, Code 5

Was er bedeutet. Der Nutzer versucht, ein Produkt zu kaufen, das in der Region des Stores nicht verfügbar ist.

Wie er behoben wird. Der Entwickler muss Produkte auf ihre Verfügbarkeit im Store und in der Region des Nutzers prüfen. Dafür wird SKStorefront verwendet.

Welche Nachricht angezeigt wird. Dieses Produkt ist in Ihrer Region nicht verfügbar. Bitte wechseln Sie den Store und versuchen Sie es erneut.

SKError.Code.cloudServicePermissionDenied, Code 6

Was er bedeutet. Der Nutzer hat keinen Zugriff auf die Informationen seines Cloud-Dienstes gewährt.

Wie er behoben wird. Aus Entwicklersicht ist nichts zu tun.

Welche Nachricht angezeigt wird. Ehrlich gesagt bin ich noch nie auf diesen Fehler gestoßen. Sie können einfach erwähnen, dass der Kauf abgelehnt wurde.

SKError.Code.cloudServiceNetworkConnectionFailed, Code 7

Was er bedeutet. Das Gerät war beim Kauf nicht mit dem Internet verbunden.

Wie er behoben wird. Aus Entwicklersicht ist nichts zu tun.

Welche Nachricht angezeigt wird. Der Kauf kann nicht abgeschlossen werden, da Ihr Gerät nicht mit dem Internet verbunden ist. Bitte versuchen Sie es später noch einmal mit einer stabilen Internetverbindung.

Start for free

Adapty handles all SKErrors automatically,

as well as provides the server-side validation and covers all side cases

Start for free

SKError.Code.cloudServiceRevoked, Code 8

Was er bedeutet. Dieses Gerät hat keinen Zugriff auf den StoreKit-Zahlungsdienst. Dieser Fehler tritt häufig im Sandbox-Modus auf.

Wie er behoben wird. Erstellen Sie einen neuen Sandbox-Nutzer oder versuchen Sie einfach, den Vorgang zu wiederholen.

Welche Nachricht angezeigt wird. Sorry, es ist ein Fehler aufgetreten.

SKError.Code.privacyAcknowledgementRequired, Code 9

Was er bedeutet. Der Nutzer hat die Nutzungsbedingungen im AppStore nicht akzeptiert. Laut Apple "hat der Benutzer die Datenschutzrichtlinie von Apple für Apple Music noch nicht anerkannt". Dies scheint seltsam, da es keinen Grund gibt, Apple Music an dieser Stelle zu erwähnen.

Wie er behoben wird. Aus Entwicklersicht ist nichts zu tun.

Welche Nachricht angezeigt wird. Der Kauf kann nicht abgeschlossen werden, da Sie die Nutzungsbedingungen des App Store nicht akzeptiert haben. Bitte bestätigen Sie Ihre Zustimmung in den Einstellungen und kehren Sie dann zum Kauf zurück.

SKError.Code.unauthorizedRequestData, Code 10

Was er bedeutet. Ihre App-ID enthält nicht die erforderliche Berechtigung zur Verwendung des StoreKit.

Wie er behoben wird. Sie müssen den Einrichtungsprozess für In-App-Käufe für Ihre App abschließen.

Welche Nachricht angezeigt wird. Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.

SKError.Code.invalidOfferIdentifier, Code 11

Was er bedeutet. Der Nutzer versucht, ein Produkt mit einem falschen Sonderangebot zu kaufen.

Wie er behoben wird. Aus Entwicklersicht ist nichts zu tun

Welche Nachricht angezeigt wird. Das Werbeangebot ist ungültig oder abgelaufen.

SKError.Code.invalidSignature, Code 12

Was er bedeutet. Die Signatur für das Werbeangebot für die StoreKit-Anforderung wurde falsch generiert.

Wie er behoben wird. Überprüfen Sie, wie die Signatur generiert wird, und beheben Sie die Fehler. Wenn Sie Adapty verwenden, laden Sie den Abonnement Key herunter.

Welcher Fehler angezeigt wird. Bei der Anwendung des Promocodes ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.

SKError.Code.missingOfferParams, Code 13

Was er bedeutet. Die Parameter des Werbeangebots sind falsch gebildet.

Wie er behoben wird. Überprüfen und korrigieren Sie die Parameter Ihres Werbeangebots.

Welche Nachricht angezeigt wird. Bei der Anwendung des Werbeangebots ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.

SKError.Code.invalidOfferPrice, Code 14

Was er bedeutet. Der Nutzer versucht, ein Produkt zu einem irrelevanten Preis zu kaufen. Wahrscheinlich ist der im AppStore angezeigte Preis nicht mehr gültig.

Wie er behoben wird. Legen Sie den aktualisierten Preis für dieses Angebot im AppStore fest.

Welche Nachricht angezeigt wird. Ihr Kauf kann leider nicht abgeschlossen werden. Bitte versuchen Sie es später erneut.

Fazit

Die richtige Fehlerbehandlung verbessert nicht nur die Benutzererfahrung, sondern kann eventuell einige Nutzer zurückgewinnen, die das Abonnement aus gewissen Gründen nicht sofort bezahlen konnten. Dies sind die häufigsten Fehler bei der Implementierung von Käufen in einer iOS-App:

  • SKError.Code.unknown, ein unbekannter Fehler; 
  • SKError.Code.paymentCancelled, wenn der Nutzer den Kauf abbricht; 
  • SKError.Code.paymentInvalid, wenn die Zahlung nicht verarbeitet werden kann.

Die Fehlerbehandlung und die Kaufimplementierung sind umständliche Prozesse. Ich empfehle Ihnen daher, Adapty SDK für iOS auszuprobieren. Es vereinfacht die Implementierung von In-App-Käufen und bietet viele weitere Vorteile wie z. B. Abonnement-Analysen, Kohortenanalysen, A/B-Tests für Paywalls und die serverseitige Validierung.

Further reading

Adapty January update
Adapty January update
February 3, 2021
3 min read
Adapty API outage and what we've learned from it
Adapty API outage and what we've learned from it
April 8, 2021
5 min read
Android in-app purchases, part 1: configuration and adding to the project
Android in-app purchases, part 1: configuration and adding to the project
January 27, 2021
14 min read