Domanda

Ho un app che mi richiede di compiere un'azione dopo un certo periodo di tempo. Ad esempio, se un utente non è stato all'interno della app in poche settimane, quando l'utente avvia finalmente l'applicazione, devo chiedere loro di mettere in un codice speciale che è stato dato a loro quando hanno installato questa applicazione. (Questo è un app in-house e mi viene richiesto di fare questo a causa di problemi di sicurezza)

Sto usando il metodo [data NSDate] per recuperare la data in cui l'utente si collega e salvarlo in un database. Io paragono questa data salvato la prossima volta si aprono l'applicazione e vedere quanto tempo il suo stato dal loro ultimo accesso. Il problema è che [data NSDate] dà il tempo che viene effettuata mediante le impostazioni di tempo che possono essere modificate manualmente dall'utente nelle impostazioni dell'applicazione nativa. Come si può probabilmente dire, questo provoca un sacco di problemi per la mia situazione. Se l'utente è supponiamo di essere messo il codice speciale dopo 3 settimane di inattività, può causare l'applicazione per mostrare questa schermata modificando il tempo in app impostazioni native o, peggio, allontanarsi da impostando il tempo di una data precedente che sarà entro 3 settimane dalla sua attività.

C'è un modo per ottenere il "tempo di sistema" al posto del "tempo di utente"? Ho guardato in mach_absolute_time (), ma questo diventa di ripristino dopo il riavvio del dispositivo. Poiché il tempo di inattività sarò confrontando contro è abbastanza grande, è probabile dispositivo sarebbe stato riavviato da allora. Ho anche pensato di utilizzare la connessione di rete per ottenere il tempo dal server al di fuori della app, ma molti utenti non avranno accesso al wifi in cui usano i loro iPads. Questo sarà il mio ultimo soluzione risorsa, se non riesco a trovare niente altro. A causa della loro posizione durante l'uso, sto cercando di usare tutto sul dispositivo stesso.

I Am che si affaccia qualcosa di semplice qui? questo sembra troppo semplice di un problema di non avere una risposta. Per favore mi guida verso la giusta direzione. Grazie in anticipo.

È stato utile?

Soluzione

Perché non interrogare un server remoto per il momento - un sacco di server NTP circa o semplicemente fare una semplice richiesta HTTP ad uno script php sul proprio server. Naturalmente, se la vostra applicazione è probabilmente mai essere collegato a Internet che potrebbe essere un problema, ma una volta che si ha un tempo di festa 3 ° è abbastanza facile intuire se l'utente ha giocato con l'orologio.

Altri suggerimenti

Se questo è un app inhouse (quindi non si è vincolati da processo di approvazione Mele), si potrebbe segnare la vostra applicazione, come fare alcune cose di fondo (VoIP o la ricezione di aggiornamenti di posizione), in modo che l'applicazione sarà sempre attiva e si 'd essere in grado di aggiornare una sorta di un contatore 'inutilizzato'. Voip applicazione sarà anche essere riavviato dal sistema operativo dopo il riavvio del dispositivo.

Ma, naturalmente, che sarà drenare la batteria un po '.

In entrambi: fare avere il tempo effettivo una caratteristica essenziale della vostra applicazione. In questo modo gli utenti avranno la necessità di mantenere il tempo della corrente del dispositivo e non possono tornare indietro di tre settimane

In alternativa: segnare il codice come scaduto e salvare queste informazioni prima che le informa app l'utente. Questo fermerà più all'utente di fissare un indietro nel tempo. La maggior parte sarà provare una o due volte, vediamo che i soggiorni app disabili e si arrenderà.

È inoltre possibile salvare il timestamp dell'ultima esecuzione riuscita e se questo è più di un ragionevole lasso di tempo in futuro (ricordate l'estate / inverno) quindi prendere in considerazione un "tentativo di hack". Mettere un controllo CRC (o qualunque idea oscura si arriva con) su quel timestamp e salvarlo troppo e si smetterà di un gran numero di script kiddies.

Non si può mai fermare l'hacker irriducibili che cercano attivamente per ogni trucco si potrebbe avere messo in app. Basta concentrarsi sulla utente "medio".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top