Czy ktoś ma jakieś pomysły, jak zresetować i / lub wyczyścić piaskownicę zakupów w aplikacji na iOS?
Mam aplikację, którą testuję przy użyciu piaskownicy i chciałbym przetestować nowe zakupy bez konieczności tworzenia nowego użytkownika testowego za każdym razem, gdy coś kupię.
Jeśli tego nie zrobię, (oczywiście) zawsze otrzymuję komunikat, że element do zakupu w aplikacji został już zakupiony, gdy kliknę przycisk kup w mojej aplikacji.
źródło
+
adresów e-mail nie można już używać do rejestracji w celu uzyskania Apple ID.O ile wiem, nie możesz tego zrobić. Backend piaskownicy działa jak prawdziwe konto - po zakupie jest kupowany (dzięki czemu możesz przetestować przywracanie). Powinieneś robić większość swojego rozwoju z wyrzuconymi elementami sklepu, a kiedy zaczniesz testować go w rzeczywistości, po prostu spodziewaj się utworzenia kilku kont testowych.
źródło
SKPaymentTransactionStateRestored
tym, że zamiast tego wracasz ze sklepu z aplikacjamiSKPaymentTransactionStatePurchased
. Ponieważ nie używasz tutaj prawdziwych pieniędzy, do wszystkich celów i celów,SKPaymentTransactionStateRestored
jest to w 100% równoważne zSKPaymentTransactionStatePurchased
testowaniem. Zresetowanie stanu aplikacji na „niekupiony” zależy tak naprawdę od Ciebie (po prostu usuń odpowiedni wpis pęku kluczy lub cokolwiek, czego używasz do buforowania tego „kupionego przez użytkownika X”)Mam 2 elementy do zakupu w aplikacji. 1 do produkcji. a drugi do testów. kiedy muszę „wyczyścić”, usuwam element w aplikacji i tworzę nowy (15 sekund w itunes connect i 1 sekunda na zmianę identyfikatora produktu w kodzie)
jeśli nie muszę testować „nowego użytkownika”, używam produkcji w elemencie aplikacji.
źródło
Cóż, technicznie nie potrzebujesz tego.
Jeśli dostaniesz
SKPaymentTransactionStateRestored
, jest to w 100% równoważne z weryfikacją przez sklep z aplikacjami użytkownika i przyznaniem mu zakupu. Mam włącznik typu:Kwestia logiki aplikacji / odebrania zakupu jest prosta: jeśli buforujesz zakupy w pęku kluczy, usuń pęku kluczy. Jeśli robisz to w inny sposób, po prostu zmień stan lokalnej aplikacji, aby udawać, że użytkownik nigdy wcześniej jej nie kupił. Okno dialogowe z prośbą o zakup jest nadal dokładnie takie samo, jedyną różnicą jest to, że gdy klikniesz TAK,
SKPaymentTransactionStateRestored
zamiast tego otrzymaszSKPaymentTransactionStatePurchased
.źródło
Usunięcie aplikacji i ponowna instalacja działa również w przypadku testowania w piaskownicy. Zależy to oczywiście od aplikacji, ale testuję aplikację opartą na subskrypcji, którą w tej chwili kupuje tylko podczas rejestracji, więc było to najłatwiejsze rozwiązanie.
źródło
Sprawdź SimStoreKit . To „symulowana wersja StoreKit dla iPhone'a, do testowania interfejsów użytkownika sklepu w symulatorze iPhone'a, a nawet na urządzeniu bez konieczności konfigurowania IAP w Connect”.
SimStoreKit przechowuje zakupy w ustawieniach domyślnych użytkownika pod kluczem
ILSimSKTransactions
. Aby wyczyścić wszystkie zakupy, które możesz zrobić:W symulatorze możesz po prostu usunąć aplikację i zainstalować ją ponownie.
Z powodzeniem użyłem SimStoreKit do debugowania strony sklepu mojej aplikacji przed testowaniem w piaskownicy. Piękno tej biblioteki polega na tym, że można ją skonfigurować tak, aby używała tych samych nazw klas, co prawdziwy framework StoreKit (robiąc to
#define ILSimReplaceRealStoreKit 1
przed wykonaniem#include <ILSimStoreKit.h>
).W plikach źródłowych, do których potrzebuję dostępu do StoreKit, dołączam ten plik nagłówkowy:
Ma to wpływ na używanie SimStoreKit, gdy uruchamiam na symulatorze i prawdziwego StoreKit, gdy uruchamiam na urządzeniu.
źródło
alternatywnie, aby utworzyć rozwiązanie dla wielu użytkowników testowych, możesz utworzyć wiele testów w zakupach aplikacji w iTunes Connect, a następnie nie musisz zmieniać konta użytkownika.
źródło
Po prostu korzystaj z tego samego konta testowego, przywracając zakupy, a nie kończąc nowe. W końcu, niezależnie od tego, czy zaczniesz nowy zakup, czy przywrócisz stary, TWOJA APLIKACJA zrobi to samo (przynajmniej początkowo może interfejs użytkownika zaktualizuje się inaczej po zakończeniu). Apple to ludzie inaczej radzący sobie w różnych sytuacjach - nie martw się o to.
Umieść logikę dostawy w przypadku SKPaymentTransactionStateRestored w ramach implementacji tej metody do testowania:
Następnie pamiętaj, aby umieścić tę logikę dostawy w sprawie SKPaymentTransactionStatePurchased.
Na koniec, ponieważ większość z nas jest w różnym stopniu obsesyjno-kompulsywna, zrób ostatni test z nowym kontem (nie jest to wielka sprawa, aby zrobić drugie dla absolutnej pewności).
Ostatnia rzecz, na którą należy zwrócić uwagę: rozważ stanowisko Apple. Gdyby wystąpił problem z programistami, którzy musieli tracić czas na tworzenie dziesiątek lub setek kont, aby dokładnie przetestować IAP, rozwiązaliby problem. Nie ma problemu.
źródło