2013-05-03 17 views
5

Chciałbym dowiedzieć się, kiedy użytkownik po raz pierwszy kupił moją aplikację ... do tej pory nie znalazłem czystego sposób i UDID wydawało się być jedyną opcją.Jak się dowiedzieć, KIEDY użytkownik kupił aplikację/zainstalował ją po raz pierwszy (możliwe bez identyfikatora UDID?)

Idealnie byłoby otrzymanie mogę uzyskać poprzez StoreKit ale tak daleko .. nada

czy coś mi umknęło? Czy ktoś ma pomysł?


Sytuacja jest taka, że ​​mam abonament i PIERWSZY numer (od momentu zakupu aplikacji powinien być bezpłatny). Gdybym ponownie zainstalować w późniejszym czasie .. mam zawsze uzyskać oryginalną problem)

przykład: kupić aplikację w 10.2010 zainstalować i uruchomić go i uzyskać kwestię subskrypcji od 10.2010 za darmo (bez in-app zakup) Teraz usuwam aplikację I Zainstaluj ją 1.2013, a subskrypcję dostaję tylko 10.2010 za darmo! NOT Nowa nowa

+0

Zapisz flagę w pęku kluczy. –

+0

keychain jest również delikatny, nie? ... czy jest zachowywany przez kasowanie aplikacji? i co jeśli po prostu przywrócę telefon ^^ –

+0

Jest nieulotny i ma kopię zapasową. –

Odpowiedz

5

Możesz po prostu zapisać flagę w pęku kluczy. Zawartość pęku kluczy jest zachowywana w przypadku ponownych instalacji aplikacji.

zdobyć pierwszy czas instalacji aplikacji, sprawdź, kiedy po raz pierwszy aplikacja binarna zostało zapisane na dysku:

if (flag_in_keychain_not_present()) { 
    // installed for the first time 
    set_flag_in_keychain(); 

    struct stat st; 
    stat([NSBundle mainBundle].executablePath.UTF8String, &st); 
    time_t installed = st.st_mtime; 
} 
+0

Czy znalazłeś dokumentację, która stwierdza: "Zawartość pęku kluczy jest zachowywana w przypadku ponownych instalacji aplikacji". ? Wydaje się, że tak jest, ale nie mogę znaleźć żadnej dokumentacji, która mówi, że jest oczekiwanym zachowaniem. –

+0

@AndreasPaulsson Uczciwie, będę szukać odpowiedniej dokumentacji. Szczerze mówiąc, nie wiem już, skąd to wiem, ale keychain ** jest ** wytrwały. –

+1

Uwaga! Powyższa odpowiedź pobiera, gdy plik binarny został napisany ... nie czas, który użytkownik zainstalował na urządzeniu.Jeśli instalujesz i debugujesz aplikację z XCode, to są one takie same, ale jeśli zainstalujesz aplikację za pośrednictwem TestFlight lub App Store, nie są! – litso

1

Nie używałem jeszcze Kit Store, ale powiedz mi, czy ja” m źle,

1) wymaga serwera w punkcie lub innego

2) kiedy używamy go do „kupuj” (nie abonament lub eksploatacyjnych) coś, co możemy odzyskać ten zakup na wszystkich urządzeniach z wykorzystaniem to samo konto iTunes

Moja uwaga, utwórz produkt w darmowym zakupie aplikacji, gdy przejdzie przez serwer po raz pierwszy zapisze go w bazie danych i następnym razem zostanie wywołany z tym samym kontem "włącz" problem odpowiadający pierwszemu bezpłatnemu zakupowi

Powiązane problemy