2013-05-03 19 views
5

Vorrei sapere quando un utente ha acquistato la mia app per la prima volta ... finora non ho trovato modo e un UDID sembrava essere l'unica opzione.Come scoprire QUANDO un utente ha acquistato l'app/installato per la prima volta (possibile senza UDID?)

Idealmente ci sarebbe una ricevuta che posso ottenere via StoreKit ma finora .. nada

ho perso qualcosa? Qualcuno ha un'idea?


La situazione è che ho un abbonamento e il primo problema (dal momento in cui si acquista l'app deve essere gratuito). Se reinstallo in un secondo momento .. dovrei ottenere sempre il problema originale)

esempio: ho acquistare l'applicazione in 10.2010 I installarlo e lanciarlo e ottenere l'emissione di sottoscrizione da 10.2010 gratis (non in-app acquisto) Ora cancello l'app I Install 1.2013 e ottengo solo l'abbonamento dal 10.2010 gratuitamente! NOT Il nuovo

+0

Memorizza una bandiera nel portachiavi. –

+0

anche il portachiavi è fragile, no? ... è conservato tra le cancellazioni di app? e cosa succede se ripristino il telefono ^^ –

+0

Non è volatile e viene eseguito il backup. –

risposta

5

È possibile memorizzare una bandiera nel portachiavi. I contenuti del portachiavi sono conservati attraverso le reinstallazioni dell'app.

per ottenere il primo tempo di installazione della vostra applicazione, controllare quando per la prima volta il binario applicazione è stata scritta su disco:

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

Avete trovato documentazione che afferma "I contenuti del portachiavi sono conservati attraverso le reinstallazioni dell'app." ? Questo sembra essere il caso, ma non riesco a trovare alcuna documentazione che dice che è il comportamento previsto. –

+0

@AndreasPaulsson Abbastanza giusto, cercherò la documentazione pertinente. Onestamente, non so più come lo so, ma il portachiavi ** è ** persistente. –

+1

Attenzione! La risposta sopra si recupera quando il binario è stato scritto ... non il tempo in cui l'utente l'ha installato sul dispositivo.Se installi e esegui il debug dell'applicazione da XCode, sono la stessa cosa, ma se installi l'app tramite TestFlight o App Store non lo sono! – litso

1

non ho ancora usato Store Kit, ma dimmi se io' m sbagliato,

1) richiede un server in un punto o in un altro

2) quando l'usiamo per "comprare" (non un abbonamento o di un materiale di consumo) qualcosa che possiamo recuperare questo acquisto su tutti i dispositivi utilizzando lo stesso account iTunes

Il mio punto, creare un elemento gratuito di acquisto in app, quando passa attraverso il server la prima volta memorizzarlo in un database e la prossima volta che viene chiamato con lo stesso account "abilitare" il problema corrispondente al primo acquisto gratuito