2013-10-09 79 views
6

Desidero registrare gli eventi dell'app iOS su un server remoto.Come implementare la registrazione dell'app iOS sul server remoto con fallback sul log offline?

Quando il server è raggiungibile dal dispositivo, effettuo una chiamata API al server. Quando il dispositivo è offline, aggiungo il registro a un file di testo.

In ogni esecuzione, sto pianificando di verificare la raggiungibilità del server e se è raggiungibile viene avviato un thread in background che ruota il file di registro, carica il vecchio file di registro utilizzando la richiesta POST sul server ed elimina il vecchio registro file dal dispositivo. È una buona cosa da fare?

Tuttavia, se vi sono intervalli lunghi tra la disponibilità della connessione, in teoria il file di registro non in linea può diventare molto grande e difficile da caricare.

Quali sono le alternative per garantire che i registri (dalla modalità online e offline) raggiungano infine un server remoto?

risposta

0

Hai chiesto "è una cosa buona da fare"? La risposta dipende in gran parte da cosa è la tua app e da come utilizzerai i dati, quindi non sono sicuro che qualcuno possa rispondere per te ... Cancellare vecchi registri sul dispositivo? Sembra un'ottima idea se saranno grandi come suggerisci in seguito. Ti consiglio comunque di tenere a mente la privacy dei tuoi utenti. Saranno avvisati dei dati che si stanno raccogliendo su di loro? Fornirai un'opzione per l'opt-out?

C'è un'alternativa per il tuo scenario? No. Se si prevede di inviare i dati a un server alla fine e non si dispone di una connessione a Internet, è necessario memorizzarlo da qualche parte a livello locale. Come potrebbe esserci un'altra opzione? No, non c'è altra opzione. I grandi log occupano molta memoria.

0

Dai un'occhiata a questo NSLogger. Questo potrebbe essere utile.

0

Riguardo al salvataggio dei registri offline nei file su base giornaliera, ogni giorno ottiene il proprio file. In questo modo è possibile inviarlo in blocchi ed eliminare la necessità di leggere il contenuto di un enorme file di registro in memoria quando finalmente si ha una connessione e la si invierà al server.

1

Ho appena creato la mia soluzione: https://github.com/kennethjiang/Teleport-NSLog. Dai un'occhiata a "SimpleHTTPForwarder" per la funzione che ti serve.

Ma per farla breve, non controllo nemmeno la raggiungibilità. Il corriere si sveglia periodicamente e tenta solo ciecamente di inviare il log al backend. Se riesce, rimuove il file di registro locale. Altrimenti, se fallisce per qualsiasi motivo, come il timeout della connessione, salta questo turno e aspetta per il prossimo.

Poiché lo spedizioniere viene eseguito sempre in una coda seriale, non vi è alcun problema di concorrenza/condizioni di gara. Il codice è semplice e pulito!

2

Puoi dare un'occhiata a Bugfender, è un prodotto che abbiamo costruito per risolvere questo problema.

È facile da integrare ed è possibile scegliere da quali dispositivi si desidera ottenere i registri. Il nostro servizio funziona offline e online, abbiamo dedicato molto tempo a renderlo affidabile e facile da usare.

Problemi correlati