Zakupy w aplikacji na iOS. Część 5: lista kodów SKError i sposób ich obsługi
Updated: 20 marca, 2023
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.
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.
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).