BlogRight arrowTutorialRight ArrowAcquisti in-app per iOS, parte 5: elenco dei codici SKError e come gestirli
BlogRight arrowTutorialRight ArrowAcquisti in-app per iOS, parte 5: elenco dei codici SKError e come gestirli

Acquisti in-app per iOS, parte 5: elenco dei codici SKError e come gestirli

Acquisti in-app per iOS, parte 5: elenco dei codici SKError e come gestirli
Listen to the episode
Acquisti in-app per iOS, parte 5: elenco dei codici SKError e come gestirli

In questo post affronterò gli SKErrors: quali problemi comportano e cosa fare per risolverli. Per ognuno degli errori, analizzeremo tre aspetti: perché si verificano, come gestirli e quale messaggio mostrare nella notifica di errore.

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

SKError.Code.unknown, codice 0

Cosa significa. Si è verificato un errore per un motivo sconosciuto.

Come correggerlo. Lo sviluppatore non deve intraprendere alcuna azione. Questo errore si verifica anche quando si cerca di ottenere prodotti con il simulatore di iOS 14 o superiore. In questo caso, per ottenere un prodotto, utilizza il test locale StoreKit (StoreKit) o un dispositivo/emulatore reale con una versione di iOS inferiore a iOS 14.

Quale messaggio mostrare. Siamo spiacenti, l'acquisto non è disponibile per un motivo sconosciuto. Ti preghiamo di riprovare più tardi.

SKError.Code.clientInvalid, codice 1

Cosa significa. Il cliente non riesce a effettuare un acquisto. Ad esempio, un bambino cerca di acquistare qualcosa quando la funzione di controllo parentale sul dispositivo è attiva.

Come correggerlo. Lo sviluppatore non deve intraprendere alcuna azione.

Quale messaggio mostrare. L’acquisto non può essere completato. Ti preghiamo di cambiare account o dispositivo.

SKError.Code.paymentCancelled, codice 2

Cosa significa. L'utente è arrivato alla schermata di pagamento, ma ha cambiato idea sull'acquisto e ha fatto clic su "annulla".

Come correggerlo. Da un punto di vista tecnico, non si è verificato alcun errore e, in questo caso, non è necessario intervenire. Dal punto di vista del marketing, è possibile continuare a lavorare con questo utente, ad esempio offrendogli uno sconto.

Quale messaggio mostrare. Qui, le opzioni sono due. La più semplice è non mostrare nulla. Tuttavia, puoi anche provare a riconquistare un utente con un messaggio come questo: "L'acquisto è stato annullato. Sei interessato a provare un abbonamento a prezzo scontato?".

SKError.Code.paymentInvalid, codice 3

Cosa significa. Per qualche motivo, il pagamento non è andato a buon fine: la carta era scaduta o non conteneva fondi sufficienti per l'acquisto.

Come correggerlo. Lo sviluppatore non deve intraprendere alcuna azione.

Quale messaggio mostrare. Il pagamento è stato rifiutato. Ti preghiamo di verificare i dettagli del pagamento e di assicurarti che ci siano fondi sufficienti sul tuo conto.

SKError.Code.paymentNotAllowed, codice 4

Cosa significa. Probabilmente questa carta presenta alcune restrizioni all'acquisto: sono stati fissati dei limiti o la funzione di acquisto online non è disponibile.

Come correggerlo. Lo sviluppatore non deve intraprendere alcuna azione.

Quale messaggio mostrare. L'acquisto non è disponibile per il metodo di pagamento selezionato. Ti preghiamo di assicurarti che il tuo metodo di pagamento ti consenta di effettuare acquisti online.

SKError.Code.storeProductNotAvailable, codice 5

Cosa significa. L'utente sta cercando di acquistare un prodotto che non è disponibile per la regione in cui viene utilizzato questo negozio.

Come correggerlo. Lo sviluppatore deve verificare la disponibilità dei prodotti nel negozio e nella regione dell'utente. Per farlo, puoi utilizzare SKStorefront.

Quale messaggio mostrare. Questo prodotto non è disponibile nella tua regione. Ti preghiamo di cambiare negozio e riprovare.

SKError.Code.cloudServicePermissionDenied, codice 6

Cosa significa. L'utente non ha dato accesso alle informazioni del suo servizio Cloud.

Come correggerlo. Lo sviluppatore non deve intraprendere alcuna azione.

Quale messaggio mostrare. Per essere onesto, questo errore non mi è mai capitato. In realtà, è sufficiente scrivere che l'acquisto è stato rifiutato.

SKError.Code.cloudServiceNetworkConnectionFailed, codice 7

Cosa significa. Al momento dell’acquisto, il dispositivo non era connesso a Internet.

Come correggerlo. Lo sviluppatore non deve intraprendere alcuna azione.

Quale messaggio mostrare. L'acquisto non può essere completato perché il dispositivo non è connesso a Internet. Ti preghiamo di riprovare più tardi con una connessione Internet stabile.

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, codice 8

Cosa significa. Questo dispositivo non ha accesso al servizio di pagamento StoreKit. In genere, questo errore si verifica in Sandbox.

Come correggerlo. Crea un nuovo utente Sandbox o prova a ripetere l'operazione.

Quale messaggio mostrare. Siamo spiacenti, si è verificato un errore.

SKError.Code.privacyAcknowledgementRequired, codice 9

Cosa significa. L'utente non ha accettato i termini di utilizzo dell'AppStore. Come si legge nella documentazione, "l'utente non ha ancora riconosciuto l’informativa sulla privacy di Apple per Apple Music". Ma sembra un errore, perché non c'è motivo di menzionare Apple Music qui.

Come correggerlo. Lo sviluppatore non deve intraprendere alcuna azione.

Quale messaggio mostrare. L'acquisto non può essere completato perché non hai accettato i termini di utilizzo dell'AppStore. Ti preghiamo di dare il tuo consenso nelle impostazioni e di tornare all'acquisto.

SKError.Code.unauthorizedRequestData, codice 10

Cosa significa. L'ID nell’app non contiene i diritti necessari per l'utilizzo di StoreKit.

Come correggerlo. È necessario completare il processo di configurazione degli acquisti in-app per l’app.

Quale messaggio mostrare. Si è verificato un errore. Ti preghiamo di riprovare più tardi.

SKError.Code.invalidOfferIdentifier, codice 11

Cosa significa. L'utente sta cercando di acquistare un prodotto con un'offerta promozionale (promotional offer) errata.

Come correggerlo. Lo sviluppatore non deve intraprendere alcuna azione.

Quale messaggio mostrare. L'offerta promozionale non è valida o è scaduta.

SKError.Code.invalidSignature, codice 12

Cosa significa. La firma dell'offerta promozionale per la richiesta StoreKit è stata generata in modo errato.

Come correggerlo. Verifica la modalità di generazione della firma e correggi gli errori. Se usi Adapty, scarica la chiave di abbonamento.

Quale messaggio mostrare. Siamo spiacenti, si è verificato un errore durante l'applicazione del codice promozionale. Ti preghiamo di riprovare più tardi.

SKError.Code.missingOfferParams, codice 13

Cosa significa. I parametri dell'offerta promozionale sono definiti in modo errato.

Come correggerlo. Controlla e correggi i parametri della tua offerta promozionale.

Quale messaggio mostrare. Siamo spiacenti, si è verificato un errore durante l'applicazione dell’offerta promozionale. Ti preghiamo di riprovare più tardi.

SKError.Code.invalidOfferPrice, codice 14

Cosa significa. L'utente sta cercando di acquistare un prodotto con un prezzo non valido. Probabilmente il prezzo visualizzato nell'AppStore non è più valido.

Come correggerlo. Imposta il prezzo aggiornato per questa offerta nell'AppStore.

Quale messaggio mostrare. Siamo spiacenti, il tuo acquisto non può essere completato. Ti preghiamo di riprovare più tardi.

Conclusione

Una corretta gestione degli errori migliora l'esperienza dell'utente e può riconquistare almeno una parte di quegli utenti che per qualche motivo non hanno potuto pagare immediatamente l'abbonamento. Questi sono gli errori più comuni quando si implementano gli acquisti in un'app iOS:

  • SKError.Code.unknown,errore sconosciuto; 
  • SKError.Code.paymentCancelled, quando l'utente annulla l'acquisto; 
  • SKError.Code.paymentInvalid, quando il pagamento non può essere processato.

In realtà, la gestione degli errori e l'implementazione degli acquisti sono processi macchinosi. Quindi consiglio di provare SDK Adapty per iOS, che facilita l'implementazione degli acquisti in-app e offre altri vantaggi, come l'analisi degli abbonamenti, l'analisi di coorte (cohort analysis), i test a/b per i paywall (a/b tests for paywalls) e la convalida delle ricevute lato server (server-side receipt validation).

Further reading

Android in-app purchases, part 5: server-side purchase validation
Android in-app purchases, part 5: server-side purchase validation
October 21, 2021
12 min read
iOS in-app purchases, part 5: list of SKError codes and how to handle them
iOS in-app purchases, part 5: list of SKError codes and how to handle them
August 30, 2021
6 min read
Adapty September update
Adapty September update
October 2, 2020
4 min read