Wyobraź sobie: użytkownik kupuje subskrypcję, zmienia urządzenie, ponownie instaluje aplikację i nagle traci dostęp. To najprostszy sposób, by stracić zaufanie.
Właśnie dlatego istnieje opcja „Przywróć zakup”. Może się wydawać, że jest to przycisk opcjonalny, ale jest on niezbędny, zwłaszcza w przypadku aplikacji opartych na subskrypcji.
Ta opcja pozwala użytkownikom odzyskać dostęp do wcześniej zakupionych treści bez konieczności ponownego płacenia. Jest to niewielki przycisk, który odgrywa ogromną rolę w budowaniu zaufania, zgodności z przepisami i utrzymaniu użytkowników.
Dlaczego to ważne
- Zaufanie użytkowników: Jeśli ktoś zapłacił raz, oczekuje, że zachowa dostęp niezależnie od urządzenia.
- Obciążenie wsparcia technicznego: Niejasna lub brakująca logika przywracania = niezadowoleni użytkownicy + więcej zgłoszeń.
- Zgodność z wymogami sklepu App Store: zarówno Apple, jak i Google oczekują, że dla niektórych rodzajów produktów zostanie uwzględniona opcja przywracania.
Jakie zakupy można przywrócić
Zakupy, które można przywrócić, obejmują:
- Produkty niebędące materiałami eksploatacyjnymi: Jednorazowe zakupy, takie jak dożywotni dostęp lub funkcje premium.
- Subskrypcje z automatycznym odnawianiem: Plany miesięczne/roczne, które synchronizują się między urządzeniami.
- Subskrypcje bez możliwości odnowienia: dostęp na czas określony (np. karnet 3-miesięczny).
Nie można przywrócić:
- Materiały eksploatacyjne, takie jak monety, dodatkowe życia lub jednorazowe przyspieszenia. Są one przeznaczone do zużycia.
Jak działa przycisk „Przywróć zakupy”
- UI/UX. Dodaj przycisk „Przywróć zakup” — zazwyczaj w ustawieniach lub bezpośrednio na stronie płatności.
- Wyzwalacz. Po naciśnięciu wyzwalaj przywrócenie poprzez:
- SKPaymentQueue.restoreCompletedTransactions() dla systemu iOS
- BillingClient.queryPurchaseHistoryAsync() dla systemu Android
- Lub logika zaplecza, jeśli zarządzasz uprawnieniami po stronie serwera
- Zaktualizuj dostęp. Po zakończeniu przywracania odśwież status subskrypcji użytkownika i odblokuj zawartość.
- Dodaj pomocną informację. Prosta informacja pomaga zmniejszyć niejasności: „Użyj tej opcji, jeśli zmieniłeś urządzenie lub ponownie zainstalowałeś aplikację”.
- Unikaj powtórzeń. Jeśli użytkownik ma już dostęp, wyłącz przycisk lub całkowicie go ukryj.
- Logika konta. W przypadku aplikacji wymagających logowania: powiązaj subskrypcje z kontami użytkowników i synchronizuj je za pośrednictwem zaplecza, aby uprościć przywracanie danych na różnych urządzeniach.
Jak przywracanie zakupów działa na iOS
Na iOS przywracanie zakupów odświeża paragon aplikacji i ponownie udostępnia produkty powiązane z Apple ID użytkownika. Proces przebiega cicho w tle, a doświadczenie użytkownika powinno być proste i zrozumiałe.
Oto jak to zrobić za pomocą natywnego StoreKit (przed StoreKit 2):
1. Uruchom proces przywracania
Wywołaj funkcję restoreCompletedTransactions(), aby uruchomić proces przywracania:
SKPaymentQueue.default().restoreCompletedTransactions()To polecenie nakazuje StoreKit wyszukać wszystkie wcześniejsze zakupy powiązane z bieżącym Apple ID.
2. Obsłuż przywrócone transakcje
Sprawdź kolejkę płatności i poszukaj transakcji o statusie .restored. Następnie odblokuj zawartość i oznacz transakcję jako zakończoną:
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
if transaction.transactionState == .restored {
// Unlock access based on restored product
unlockContent(transaction: transaction)
SKPaymentQueue.default().finishTransaction(transaction)
}
}
}Nie zapomnij wywołać funkcji finishTransaction(_:). W przeciwnym razie StoreKit może kontynuować ponowne próby wykonania tej samej transakcji.
3. Obsłuż błędy w odpowiedni sposób
Przywracanie może się nie powieść z powodu nieprawidłowych paragonów, problemów z siecią lub braku kwalifikujących się zakupów na danym Apple ID. Wyświetl użytkownikowi czytelny komunikat i zaloguj błąd na potrzeby debugowania.
Korzystasz z Adapty SDK? Zajmujemy się tym wszystkim, w tym weryfikacją paragonów i przypadkami skrajnymi, za pomocą jednego wywołania metody.
Jak przywracanie zakupów działa na Androidzie
Na Androidzie przywracanie zakupów oznacza sprawdzenie historii zakupów użytkownika przez Google Play i ponowną aktywację produktów jednorazowych (non-consumable) lub aktywnych subskrypcji. Nie ma wbudowanego przycisku „Przywróć zakupy” jak na iOS — trzeba to obsłużyć ręcznie za pomocą billing API.
Oto jak to zrobić za pomocą Google Play Billing Library:
1. Zapytanie o historię zakupów
Użyj funkcji queryPurchaseHistoryAsync(), aby pobrać historię zakupów użytkownika:
billingClient.queryPurchaseHistoryAsync(
BillingClient.SkuType.SUBS
) { billingResult, purchaseHistoryList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchaseHistoryList != null) {
for (purchase in purchaseHistoryList) {
// Restore subscription access
restoreEntitlement(purchase)
}
}
}Możesz również sprawdzić zakupy w aplikacji, przekazując BillingClient.SkuType.INAPP.
2. Zweryfikuj i odblokuj
Po pobraniu historii zakupów zweryfikuj paragony (najlepiej po stronie serwera) i odpowiednio przyznaj dostęp. Pamiętaj, aby sprawdzić dane podpisu w celu zapobiegania spoofingowi.
Adapty obsługuje walidację zakupów, logikę dostępu użytkownika i synchronizację międzyplatformową od razu po wdrożeniu.
3. Aspekty UX
Ponieważ użytkownicy Androida nie oczekują przycisku „Przywróć zakupy”, możesz:
- Automatyczne przywracanie po zalogowaniu lub uruchomieniu aplikacji
- Lub umieścić dyskretną opcję w Ustawieniach dla przejrzystości
W obu przypadkach upewnij się, że logika przywracania działa cicho w tle i aktualizuje interfejs po przywróceniu dostępu.
Podsumowanie
Przycisk „Przywróć zakupy” może wyglądać prosto, ale odgrywa kluczową rolę w ścieżce subskrypcyjnej.
- Buduje zaufanie.
- Zmniejsza odpływ użytkowników.
- Zapewnia zgodność z regulaminem.
Zadbaj o jego widoczność. Zadbaj o jego działanie. I zadbaj o to, by był zrozumiały.




