Czy konieczne jest zweryfikowanie / odświeżenie paragonu app store podczas uruchamiania w systemie iOS?

The Apple docs on receipt validation mówią, aby przeprowadzić weryfikację paragonu natychmiast po uruchomieniu. Sprowadza się to do sprawdzania danych na ścieżce zwracanej przez [[NSBundle mainBundle] appStoreRecieptURL], odświeżania przez SKReceiptRefreshRequest, jeśli jej tam nie ma, i walidacji. Wspomniane dokumenty odnoszą się zarówno do iOS, jak i macOS.

Czy to rzeczywiściekonieczne na iOS? Jeśli tak, to dlaczego? Jest to, aby uniemożliwić użytkownikom korzystanie z mojej aplikacji na urządzeniu jailbroken, lub bez zakupu go w app store (w takim przypadku prawdopodobnie nie obchodzi mnie, czy moja aplikacja jest darmowa)? A może ma to wpływ na inne operacje, takie jak przywracanie lub Walidacja zakupów w aplikacji? Na przykład, czy dane paragonu muszą już tam być, aby potwierdzić transakcję zakupu w aplikacji?

Uwaga: nie używam subskrypcji w aplikacji. Mam zakupy w aplikacji, ale nie używam paragonów od nich po ich weryfikacji i zarejestrowaniu zakupu po stronie serwera.

Author: Tom Hamming, 2016-10-06

5 answers

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

Krótko mówiąc, wdrożenie walidacji jest wyłącznie decyzją finansową i nawet jeśli walidujesz przepisy, zaleca się, aby nie wyłączać zawartości w przypadku niepowodzenia, ponieważ Walidacja może zawieść również w standardowym środowisku w dowolnym momencie( np. w przypadku braku połączenia), a taka nadmierna reakcja może zrujnować konsumentów" doświadczenie.


Ogólnie rzecz biorąc, Walidacja raczej ma sens na OSX w praktyce, gdy możesz wyłączyć zawartość w przypadku awarii, niezależnie od przyczyny; ale jeśli uważasz, że masz więcej konsumentów niż sugerują twoje dochody lub ilość skradzionych treści przekracza Twój margines, może warto zrobić to również na iOS.


Uwaga: ogólnie można przeczytać więcej o technicznych szczegółach walidacji paragonów w firmy Apple Dokumentacja .

 7
Author: holex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-25 14:42:10

Prosta odpowiedź na twoje pytanie brzmi Nie, Nie Jest to konieczne .

Oto szczegółowe wyjaśnienie dla Ciebie.

  1. zgodnie z dokumentacją Apple tutaj , apple podało dwie metody walidacji paragonów, są one podane jako wskazówki, aby zapobiec uruchomieniu nieautoryzowanych kopii aplikacji. Aby uzyskać więcej wskazówek, firma apple zwróciła uwagę na wytyczne Apple review guidelines.
  2. w wytycznych przeglądu tutaj , Apple nie wymienia niczego związanego z weryfikacją paragonów jako obowiązkowego.

Jeśli w ogóle Walidacja paragonu jest obowiązkowa, Apple dostarczyłoby proste API do jej walidacji.

Titbit: możesz zobaczyć wiele odrzuceń, jeśli chodzi o walidacje paragonów w app store. Ale wszystkie te problemy są, ponieważ Walidacja paragonu nie jest wykonywana prawidłowo.

Ale moje osobiste zalecenia będą się różnić od powyższej odpowiedzi. Pierwszą rzeczą, którą należy wziąć pod uwagę, jest "Nigdy nie lekceważ hakerów". Potwierdź paragony kilka razy od momentu uruchomienia aplikacji. Przeczytaj Ten artykuł, aby uzyskać więcej informacji.

 4
Author: Prav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-24 16:10:42

Zasadniczo potwierdzasz Paragon tylko w celu zapobiegania piractwu użytkowników, którzy nie kupili Twojej aplikacji lub jeśli używasz subskrypcji automatycznego odnawiania.

Podczas gdy można przesłuchać Paragon dla informacji IAP, jego faktycznie łatwiej (i wymagane przez przegląd aplikacji) dać przycisk gdzieś "przywrócić poprzednie zakupy" i zadzwonić

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Jest to również lepszy UX dla użytkownika, aby ewentualnie zostać poproszony o ich Apple ID i hasło po naciśnięciu " Przywróć zakupy" przycisk zamiast niewyjaśnionego przy starcie aplikacji.

 3
Author: Daniel Broad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-19 12:19:46

Powody, dla których podałbym to:

  1. Użytkownik może zmienić swój produkt, jeśli używasz grup subskrypcji spoza aplikacji.
  2. subskrypcja automatycznego odnawiania może zostać odnowiona poza Twoją aplikacją.
  3. aplikacja nie odbiera transakcji zainicjowanych poza aplikacją, dopóki aplikacja nie zostanie ponownie uruchomiona.
  4. Użytkownik może dokonywać zakupów na innym urządzeniu, używając tego samego appleID, będąc poza aplikacją na bieżącym urządzeniu.

W naszym appDelegate:application didFinishLaunchingWithOptions inicjalizujemy klasę, która wywołuje [[SKPaymentQueue defaultQueue] addTransactionObserver: self]; aby monitorować zakupy zainicjowane z poziomu aplikacji.

 2
Author: iCyberPaul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-18 13:06:55

Nie jest to konieczne, ale korzystne z następujących powodów:

  1. Zawsze otrzymasz określony zestaw zakupionych produktów i nie wymagasz od użytkownika ręcznego przywracania produktów.

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

  3. Znacznie prostsze jest obliczenie daty wygaśnięcia dla automatycznego odnawiania subskrypcji przy użyciu przepisu.

 0
Author: DrMickeyLauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-28 07:43:11