BlogRight arrowTutorialRight ArrowZakupy w aplikacji na iOS. Część 5: lista kodów SKError i sposób ich obsługi
BlogRight arrowTutorialRight ArrowZakupy w aplikacji na iOS. Część 5: lista kodów SKError i sposób ich obsługi

Zakupy w aplikacji na iOS. Część 5: lista kodów SKError i sposób ich obsługi

Zakupy w aplikacji na iOS. Część 5: lista kodów SKError i sposób ich obsługi
Listen to the episode
Zakupy w aplikacji na iOS. Część 5: lista kodów SKError i sposób ich obsługi

W tym poście zajmę się SKErrorami (SKErrors): jakie problemy implikują i co z nimi zrobić. Dla każdego błędu omówimy trzy aspekty: dlaczego on występuje, jak sobie z nim poradzić i jaki komunikat wyświetlać w powiadomieniu o błędzie.

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

SKError.Code.unknown, code 0

Co to znaczy. Wystąpił błąd z nieznanego powodu.

Jak to naprawić. Nie jest potrzebne żadne działanie ze strony deweloperów. Ten błąd pojawia się również przy żądaniu podczas próby uzyskania produktów podczas korzystania z symulatora iOS 14 i nowszych. W takim przypadku, aby uzyskać produkt, użyj lokalnego testowania StoreKit lub prawdziwego urządzenia/emulatora z wersją iOS poniżej iOS 14.

Jaki komunikat wyświetlać. Przepraszamy, zakup jest niedostępny z nieznanego powodu. Spróbuj ponownie później.

SKError.Code.clientInvalid, code 1

Co to znaczy. Użytkownik nie może dokonać zakupu. Na przykład dziecko próbuje coś kupić, gdy funkcja kontroli rodzicielskiej na urządzeniu jest włączona.

Jak to naprawić. Nie jest potrzebne żadne działanie ze strony deweloperów.

Jaki komunikat wyświetlać. Zakup nie może zostać zrealizowany. Zmień swoje konto lub urządzenie.

SKError.Code.paymentCancelled, code 2

Co to znaczy. Użytkownik wszedł na ekran płatności, ale zmienił zdanie na temat dokonania zakupu i kliknął "anuluj".

Jak to naprawić. Z technicznego punktu widzenia nie wystąpił błąd i w tym przypadku nic nie trzeba robić. Z punktu widzenia marketingu możesz kontynuować pracę z takim użytkownikiem, na przykład zaoferować mu zniżkę.

Jaki komunikat wyświetlać. Masz dwie opcje. Najłatwiej jest nie pokazywać niczego. Możesz jednak również spróbować odzyskać użytkownika za pomocą takiego komunikatu: "Anulowano zakup. Czy interesuje Cię możliwość wypróbowania subskrypcji po obniżonej cenie?”

SKError.Code.paymentInvalid, code 3

Co to znaczy. Z jakiegoś powodu płatność nie powiodła się: skończyła się ważność karty, lub nie było wystarczających środków na ten zakup.

Jak to naprawić. Nie jest potrzebne żadne działanie ze strony deweloperów.

Jaki komunikat wyświetlać. Twój zakup został odrzucony. Sprawdź szczegóły płatności i upewnij się, że na twoim koncie jest wystarczająca ilość środków.

SKError.Code.paymentNotAllowed, code 4

Co to znaczy. Prawdopodobnie ta karta ma pewne ograniczenia zakupu: ustawione są limity lub funkcja zakupów online jest niedostępna.

Jak to naprawić. Nie jest potrzebne żadne działanie ze strony deweloperów.

Jaki komunikat wyświetlać. Zakup nie jest dostępny dla wybranej metody płatności. Upewnij się, że twoja metoda płatności pozwala na dokonywanie zakupów online.

SKError.Code.storeProductNotAvailable, code 5

Co to znaczy. Użytkownik próbuje kupić produkt, który nie jest dostępny dla regionu, w którym ten sklep jest używany.

Jak to naprawić. Deweloper musi sprawdzić dostępność produktów w sklepie i regionie użytkownika. W tym celu możesz użyć SKStorefront.

Jaki komunikat wyświetlać. Ten produkt nie jest dostępny w Twoim regionie. Zmień sklep i spróbuj ponownie.

SKError.Code.cloudServicePermissionDenied, code 6

Co to znaczy. Użytkownik nie dał dostępu do informacji o swojej usłudze w chmurze (Cloud Service).

Jak to naprawić. Nie jest potrzebne żadne działanie ze strony deweloperów.

Jaki komunikat wyświetlać. Szczerze mówiąc, nigdy nie spotkałem się z takim błędem. Właściwie możesz po prostu napisać, że zakup został odrzucony.

SKError.Code.cloudServiceNetworkConnectionFailed, code 7

Co to znaczy. Urządzenie nie było podłączone do Internetu podczas dokonywania zakupu.

Jak to naprawić. Nie jest potrzebne żadne działanie ze strony deweloperów.

Jaki komunikat wyświetlać. Zakupu nie można zrealizować, ponieważ urządzenie nie jest połączone z Internetem. Spróbuj ponownie później, korzystając ze stabilnego połączenia internetowego.

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

Co to znaczy. To urządzenie nie ma dostępu do usługi płatności StoreKit. Często ten błąd występuje w sandboxie.

Jak to naprawić. Utwórz nowego użytkownika sandbox lub po prostu spróbuj powtórzyć operację.

Jaki komunikat wyświetlać. Przepraszamy, wystąpił błąd.

SKError.Code.privacyAcknowledgementRequired, code 9

Co to znaczy. Użytkownik nie zaakceptował regulaminu korzystania w AppStore. Jak napisano w dokumentacji, "Użytkownik nie potwierdził jeszcze znajomości polityki prywatności Apple Music". Ale wygląda to na błąd, ponieważ nie ma powodu, aby wspominać tutaj o Apple Music.

Jak to naprawić. Nie jest potrzebne żadne działanie ze strony deweloperów.

Jaki komunikat wyświetlać. Zakup nie może zostać zrealizowany, ponieważ nie zaakceptowałeś regulaminu korzystania z AppStore. Potwierdź swoją zgodę w ustawieniach, a następnie wróć do zakupu.

SKError.Code.unauthorizedRequestData, code 10

Co to znaczy. Twój identyfikator aplikacji nie zawiera wymaganych uprawnień do korzystania ze StoreKit.

Jak to naprawić. Musisz zakończyć proces konfiguracji zakupów w aplikacji dla swojej aplikacji.

Jaki komunikat wyświetlać. Wystąpił błąd. Spróbuj ponownie później.

SKError.Code.invalidOfferIdentifier, code 11

Co to znaczy. Użytkownik próbuje kupić produkt z nieprawidłową ofertą promocyjną.

Jak to naprawić. Nie jest potrzebne żadne działanie ze strony deweloperów.

Jaki komunikat wyświetlać. Oferta promocyjna jest nieważna lub wygasła.

SKError.Code.invalidSignature, code 12

Co to znaczy. Podpis dla oferty promocyjnej (promotional offer) dla zapytania StoreKit został wygenerowany nieprawidłowo.

Jak to naprawić. Sprawdź, w jaki sposób generowany jest podpis i napraw błędy. Jeśli używasz Adapty, pobierz Klucz Subskrypcji.

Jaki komunikat wyświetlać. Przepraszamy, wystąpił błąd podczas zastosowania kodu promocyjnego. Spróbuj ponownie później.

SKError.Code.missingOfferParams, code 13

Co to znaczy. Parametry oferty promocyjnej są utworzone nieprawidłowo.

Jak to naprawić. Sprawdź i popraw parametry swojej oferty promocyjnej.

Jaki komunikat wyświetlać. Przepraszamy, wystąpił błąd podczas zastosowania kodu promocyjnego. Spróbuj ponownie później.

SKError.Code.invalidOfferPrice, code 14

Co to znaczy. Użytkownik próbuje kupić produkt z nieprawidłową ceną. Prawdopodobnie cena wyświetlana w AppStore nie jest już aktualna.

Jak to naprawić. Ustaw aktualną cenę dla tej oferty w AppStore.

Jaki komunikat wyświetlać. Przepraszamy, zakup nie może zostać zakończony. Spróbuj ponownie później.

Wnioski

Poprawna obsługa błędów poprawia wrażenia użytkownika i może pomóc w odzyskaniu przynajmniej niektórych użytkowników, którzy z jakiegoś powodu nie mogli natychmiast zapłacić za subskrypcję. Oto najczęstsze błędy podczas wdrażania zakupów w aplikacji na iOS:

  • SKError.Code.unknown, nieznany błąd; 
  • SKError.Code.paymentCancelled, gdy użytkownik anuluje zakup; 
  • SKError.Code.paymentInvalid, gdy płatność nie może zostać przetworzona.

Rzeczywiście, obsługa błędów i implementacja zakupu są uciążliwymi procesami. Z tego powody polecam wypróbować Adapty SDK dla iOS, które ułatwia wdrażanie zakupów w aplikacji i zapewnia inne korzyści, takie jak analiza subskrypcji, analiza kohortowa (cohort analysis), testy a/b (a/b tests) dla paywalli oraz walidacja potwierdzeń zakupu po stronie serwera (server-side receipt validation).

Further reading

IDFA changes are here. What do we know, and are we ready?
IDFA changes are here. What do we know, and are we ready?
April 28, 2021
16 min read
Adapty June Updates: funnels, paywall visits export to Amazon S3, Adjust OAuth, and hiring!
Adapty June Updates: funnels, paywall visits export to Amazon S3, Adjust OAuth, and hiring!
July 7, 2022
5 min read
Are 3rd-party payments in iOS apps as beneficial as they seem?
Are 3rd-party payments in iOS apps as beneficial as they seem?
October 7, 2021
6 min read