2012-12-21 5 views
6

Jak to działa? - Aplikacja jest subskrypcją usługi działającej na wielu platformach. W przypadku iPhone'a początkowy zakup zapewni Ci 30 dni pełnej funkcjonalności, a następnie po 30 dniach nie będziesz mógł wykonywać zadań dopóki nie kupisz subskrypcji z zakupem aplikacji.Wykryj pierwszą instalację w systemie iOS NOT NSUserDefaults

Co potrzebuję - Muszę wiedzieć, czy to był pierwszy raz, abym mógł dodać informacje o użytkownikach do bazy danych. Lub dlatego, że jest to platforma krzyżowa, być może zapłacili już za subskrypcję, więc muszę dodać 30 dni do już istniejącej subskrypcji użytkownika.

Co robię teraz - Obecnie jestem przechowywania identifierForVendor w zdalnej bazy danych oraz w NSUserDefaults jest bool sprawdził 1. Jeżeli jest to pierwsze uruchomienie i 2. jeżeli jest to pierwszy bieg do pozwól użytkownikowi dodać się do bazy danych przez 30 dni pełnego wykorzystania lub dodać 30 dni do swojej obecnej subskrypcji.

Problem - Problem polega na tym, że jeśli użytkownik usunie aplikację, a następnie ponowne zainstalowanie go na NSUserDefaults zostaną usunięte zbyt, a identifierForVendor zmieni i że pozwoli użytkownikowi dodać kolejne 30 dni na ich abonamentu za darmo po prostu usuwając i ponownie instalując aplikację.

Idealne rozwiązanie Pierwotnie chciałem zrobić abonament dla aplikacji, ale nie wiedziałem, jak sprawdzić rachunek po zakupie aplikacji i wstawić użytkownika do zdalnej bazy danych. Również nie wiem, jak skonfigurować subskrypcję, która nie jest zakupem w aplikacji. Zastanawiałem się również nad uwolnieniem aplikacji, a następnie mogą skorzystać z zakupu w aplikacji, aby kupić usługę, ale aplikacja jest bezużyteczna bez możliwości połączenia się ze zdalnym serwerem w celu zebrania danych.

Bottom Line chciałbym wykonać jedną z następujących czynności

  1. złożenia zapisu na pierwszym zakupie (muszę być w stanie wykryć, czy zakup jest ważny, więc mogę wejść do informacji o użytkowniku do zdalnej bazy danych)
  2. Złóż aplikację za darmo, a następnie użyj w Zakupie aplikacji, aby dodać subskrypcję (Czy można mieć darmową aplikację, która nic nie zrobi, dopóki nie zasubskrybujesz?)
  3. Pozostaw to, co jest teraz (ale znajdź bardziej trwałe rozwiązanie dla identyfikatoraForVendor i identyfikatoraForAdv ertising nie zadziała, ponieważ można go wyłączyć)
+3

Dlaczego nie przechowywać rzeczy w pęku kluczy? To powinno być trwałe. –

+1

http://stackoverflow.com/questions/13602125/how-to-find-the-app-downloaded-date-in-appstore/13602197#13602197 –

+0

Zdecydowanie polecam dokładne zapoznanie się z wytycznymi sklepu Apple App Store. Model subskrypcji, który opisujesz, jest mało prawdopodobne. – duskwuff

Odpowiedz

2

To ci bardzo pomoże. Zasadniczo jest to wrapper dla Keychain wzorowany na NSUserDefaults. Bardzo mi to pomagało. Przechowywanie rzeczy w pęku kluczy powoduje, że pozostają one poza kolejnymi reinstalacjami aplikacji.

https://github.com/carlbrown/PDKeychainBindingsController

Projekt ten ma na celu za pomocą Mac OS X i iOS Breloki tak proste jak NSUserDefaults.

Jest to KVO zgodny Cocoa wrapper wokół Mac OSX i iOS Breloki, i wzór dla tej owijki jest NSUserDefaults, więc Chodzi o to, że dla typowych przypadkach normalnie chce zadzwonić:

[NSUserDefaultsController sharedUserDefaultsController] należy stanie wywołać

[PDKeychainBindingsController sharedKeychainBindingsController] A dla typowych przypadkach zwykle nazwałby:

[NSUserDefaults standardUserDefaults] Powinieneś być w stanie wywołać

[PDKeychainBindings sharedKeychainBindings]

Powiązane problemy