Kupowanie produktów nienależących do zasobów eksploatacyjnych na platformie Xamarin.iOS
Produkty nieużywalne są "własnością" klienta. Oczekuje się, że zawsze będą mieli dostęp do nich, nawet jeśli ich urządzenie zostanie utracone/skradzione lub kupi nowe. Są one przydatne w przypadku książek, problemów z magazynem, poziomów gier, filtrów zdjęć, "pro-features" itp. Gdy użytkownik zakupił produkt nieużywalny, nigdy nie musi płacić za niego ponownie. Jeśli kod przypadkowo pozwoli im wypróbować, zestaw StoreKit wyświetli komunikat, że został już zakupiony.
Przykład nieużywanych produktów
Przykład zawiera projekt o nazwie NonConsumables. Przykładowy kod pokazuje, jak zaimplementować produkty nieużywalne przy użyciu filtrów fotograficznych jako przykładu. Po zakupie filtru możesz zastosować go do zdjęcia ponownie. Nigdy nie trzeba go ponownie kupować.
Proces zakupu jest wyświetlany w tej serii zrzutów ekranu — przycisk Kup staje się przyciskiem aktywacji funkcji:
Proces zakupu jest taki sam jak produkt eksploatacyjny; kluczową różnicą jest sposób śledzenia zakupu w kodzie aplikacji. W tym przykładzie przycisk Kup jest dostępny tylko wtedy, gdy produkt nie został jeszcze zakupiony, w przeciwnym razie przycisk aktywuje samą funkcję.
Na poniższym diagramie przedstawiono interakcje między klasami i serwerem sklepu App Store w celu przeprowadzenia zakupu produktu, który nie jest używany:
Kluczową różnicą w przykładzie eksploatacyjnym jest to, że po zakończeniu zakupu interfejs użytkownika zostanie zaktualizowany, aby zapobiec ponownemu zakupieniu. W tym przykładzie powiadomienie o pomyślnej transakcji aktualizuje interfejs użytkownika, tak aby przycisk Kup został przekonwertowany na przycisk, który aktywuje samą funkcję.
Ponowne kupowanie produktów, które nie są eksploatacyjne
Kod powinien zwykle ukrywać lub zmieniać przeznaczenie przycisku zakupu po pomyślnym zakupie produktu, aby uniemożliwić użytkownikowi ponowną próbę zakupu produktu. Przykładowa aplikacja robi to, zmieniając przycisk Kup na przycisk, który sprawia, że przykładowy filtr zdjęć działa.
Istnieją sytuacje, w których aplikacja nie może stwierdzić, czy produkt nieużywalny został już zakupiony:
- Jeśli aplikacja zostanie usunięta i ponownie zainstalowana na urządzeniu, wszystkie rekordy zakupu znikną (chyba że użytkownik nie wykona przywracania kopii zapasowej).
- Jeśli użytkownik ma zainstalowaną aplikację na dwóch (lub więcej) urządzeniach i dokonuje zakupu na jednym z urządzeń. Inne urządzenia będą nadal pokazywać produkt dostępny do zakupu.
- Jeśli klient podejmie próbę ponownego zakupu produktu, który nie jest używany w takich sytuacjach, sklep App Store ponownie wypełni produkt bez opłat. Interfejs użytkownika początkowo pojawi się w celu przeprowadzenia zakupu (na przykład zostanie wyświetlony alert potwierdzenia i będzie wymagany identyfikator Apple ID), jednak użytkownik zobaczy komunikat informujący o tym, że produkt został już zakupiony.
Ścieżka kodu w tym scenariuszu jest dokładnie taka sama jak zwykły zakup, a jedyne różnice to:
- Użytkownik nie otrzymuje ponownie opłat za produkt.
- Obiekt
SKPaymentTransaction
przekazany do aplikacji będzie miał właściwość odwołującąOriginalTransaction
się do transakcji wygenerowanej podczas początkowego zakupu produktu. - Aplikacje, które sprzedają produkty nienależące do materiałów eksploatacyjnych, muszą również implementować funkcję przywracania zestawu StoreKit, aby ułatwić użytkownikom pobieranie istniejących zakupów.