2016-10-05 29 views
9

Po sprawdzeniu poprawności paragonu, aby przeprowadzić walidację paragonu, natychmiast po uruchomieniu. Sprowadza się to do sprawdzenia danych w ścieżce zwróconej przez [[NSBundle mainBundle] appStoreRecieptURL], odświeżenie przez SKReceiptRefreshRequest, jeśli go tam nie ma, i sprawdzenie poprawności. Dokumenty z linkami odnoszą się zarówno do iOS, jak i macOS.Czy konieczne jest sprawdzenie/odświeżenie potwierdzenia sklepu z aplikacjami po uruchomieniu w systemie iOS?

Czy jest to konieczne na iOS? Jeśli tak, dlaczego? Czy ma to uniemożliwić użytkownikom korzystanie z mojej aplikacji na urządzeniu po jailbreaku lub bez kupowania jej w sklepie z aplikacjami (w takim przypadku prawdopodobnie nie obchodzi mnie, czy moja aplikacja jest darmowa)? Czy ma to wpływ na inne operacje, takie jak przywracanie lub sprawdzanie poprawności zakupów w aplikacji? Na przykład, czy dane potwierdzenia muszą już tam być, aby sprawdzić transakcję pod kątem zakupu w aplikacji?

Uwaga: nie używam subskrypcji w aplikacji. Mam zakupy w aplikacji, ale nie używam pokwitowań od nich po ich zweryfikowaniu i zarejestrowaniu strony serwera zakupu.

+0

nie musisz tego robić, to jest opcjonalne i można to zrobić na iOS7 +; wdrożenie walidacji to decyzja czysto finansowa, a nawet jeśli ją zatwierdzisz, zalecamy _nie_ wyłączanie zawartości w przypadku niepowodzenia, ponieważ walidacja może zawieść w standardowym środowisku, jak również w dowolnym czasie (np. w przypadku braku połączenia), co może zrujnować Twoje doświadczenia konsumenckie; w praktyce sprawdzanie poprawności miało raczej sens w systemie OSX. – holex

+0

@holex czy możesz zrobić to odpowiedź? –

+0

nie ma problemu, właśnie zrobiłem to, o co prosiłeś. – holex

Odpowiedz

6

Nie musisz potrzebujesz aby to zrobić, to jest opcjonalne i może być wykonane na iOS7 +, jeśli jesteś zainteresowany tym.

krótko, wdrażanie walidacji jest czysto finansowy decyzja, a nawet jeśli zweryfikować recepty zaleca, aby nie wyłączać zawartość w przypadku awarii jak walidacja może zawodzić w standardowym środowisku, jak również w dowolnym czasie (na przykład w przypadku bez połączenia), a taka nadmierna reakcja może zrujnować doświadczenia konsumentów.


całkowicie, wykonując validation'd raczej sensu na OSX w praktyce, jeśli wolno wyłączyć zawartość w przypadku awarii, bez względu na przyczynę; ale jeśli uważasz, że masz więcej klientów niż sugeruje twój dochód lub ilość skradzionych treści przekracza twoje marże, warto też zrobić to na iOS.


UWAGA: w ogóle można przeczytać więcej na temat szczegółów technicznych walidacji odbioru w Apple's Documentation.

+0

Czy możesz dać mi sugestię na ten temat? https://stackoverflow.com/questions/47712225/auto-renewable-subscription-wrong-time-response-sandbox-mode – Siddharth

1

Powody dałbym to:

  1. Użytkownik może zmienić swój produkt, jeśli używasz grup subskrypcyjnych spoza aplikacji.
  2. Automatyczne odnowienie subskrypcji może odnowić się poza aplikacją.
  3. Aplikacja nie otrzymuje transakcji zainicjowanych poza aplikacją do momentu ponownego uruchomienia aplikacji.
  4. Użytkownik może robić zakupy na innym urządzeniu przy użyciu tego samego identyfikatora AppleID poza aplikacją na bieżącym urządzeniu.

ramach naszej appDelegate: didFinishLaunchingWithOptions aplikacji możemy zainicjować klasa, która wywołuje [[SKPaymentQueue defaultQueue] addTransactionObserver: self]; do monitorowania zakupów zainicjowanych z poziomu aplikacji.

+2

"powody" wydają się uzasadniać, dlaczego program iAP powinien być __restored__, ale nie dlaczego jest potrzebny faktyczny odbiór _validation_. – holex

+0

Co oznacza "poza aplikacją"? –

+0

"Poza aplikacją" oznacza, że ​​aplikacja nie znajduje się na pierwszym planie. – iCyberPaul

2

Zazwyczaj weryfikowałeś tylko pokwitowanie, aby zapobiec piractwu przez użytkowników, którzy nie kupili Twojej aplikacji lub jeśli korzystasz z subskrypcji odnawiającej automatycznie.

Chociaż można przesłuchać potwierdzenie informacji IAP, jego faktycznie łatwiej (i wymagane przez app przeglądu) uzyskując przycisk gdzieś na „przywrócenie poprzednich zakupów” i nazywają

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

Jest także lepiej UX aby użytkownik mógł zostać poproszony o podanie identyfikatora Apple ID i hasła po naciśnięciu przycisku "przywróć zakupy", a nie o niewyjaśnionej przy uruchamianiu aplikacji.

4

Prosta odpowiedź na twoje pytanie to NIE, nie jest konieczne.

Oto szczegółowe wyjaśnienie dla ciebie: Szczegółowe wyjaśnienie.

  1. Według Apple Dokumentacji here, Apple wydał dwie metody sprawdzania wpływy, są one podane jedynie jako wytyczne, aby zapobiec nieautoryzowanych kopii aplikacji z systemem. Aby uzyskać więcej wskazówek, jabłko wskazuje na wytyczne dotyczące oceny jabłek.
  2. W wytycznych przeglądu here Apple nie wspomina o niczym związanym z weryfikacją pokwitowań jako obowiązkową.

Jeśli weryfikacja paragonu jest obowiązkowa, firma Apple dostarczyłaby prosty interfejs API w celu jej zatwierdzenia.

Titbit: Możesz zobaczyć wiele odrzuceń, jeśli chodzi o walidacje odbioru aplikacji. Ale wszystkie te problemy są spowodowane tym, że sprawdzanie poprawności paragonu nie odbywa się prawidłowo.

Ale moje osobiste zalecenia różnią się od powyższej odpowiedzi. Pierwszą rzeczą do rozważenia jest "Nigdy nie lekceważ hakerów". Sprawdzaj paragony kilka razy, oprócz rozpoczęcia aplikacji. Przeczytaj artykuł this, aby uzyskać więcej informacji.

+1

'Apple dostarczył prosty interfejs API' - nie może. Potwierdzenie paragonu tego "prostego api" można załatać, a tym samym obejść. Nie ma kodu sprawdzania poprawności dla paragonów, ale dobrą ochronę można uzyskać przez zaciemnienie logiki, a to powinno być inne od aplikacji do aplikacji i nie jest znane publicznie. W związku z tym nie może mieć interfejsu API Apple. –

0

To nie jest konieczne, ale korzystne dla następujących powodów:

  1. Będziesz zawsze uzyskać określony zestaw zakupionych produktów i nie wymaga od użytkownika, aby ręcznie przywrócić produktów.

  2. Masz (ograniczoną) ochronę przed oszustwami, zwłaszcza jeśli łączysz walidację lokalną i zdalną.

  3. O wiele łatwiej jest wyliczyć datę wygaśnięcia automatycznego odnawiania subskrypcji przy użyciu przepisu.