2015-12-18 24 views
9

Sto costruendo il lato server per un'applicazione calendario. Il lato client è solo iOS. Il piano originale era che l'app sapesse delle modifiche agli eventi di iCal, quindi informerà il server. Ma potrebbe essere un problema con i promemoria (tramite Parse Push). Ad esempio, se l'evento è stato inoltrato, il promemoria dovrebbe arrivare prima.Ascolta le modifiche agli eventi iCal dal server

È possibile ricevere notifiche dagli eventi iCal dal lato server? Ad esempio, quando gli utenti creano/aggiornano/eliminano un evento iCal, desidero sapere da un server di afferrare queste informazioni. È possibile? O tutto deve essere fatto tramite un'app nativa in esecuzione?

Il mio server è attualmente su parse.com. Ma potrei usare un server separato per dire NodeJS se necessario.

risposta

5

Poiché iCal è dipendente dall'utente/dispositivo, a meno che l'utente non abbia sincronizzato i suoi eventi del calendario con iCloud. E nel secondo caso in cui l'utente ha attivato la sincronizzazione degli eventi del calendario, è completamente insicuro che l'utente finale condivida i suoi dettagli su altri server.

Come creare 1 API al back-end, che aggiornerà/eliminerà le richieste da App per gli eventi del calendario e aggiornerà gli eventi di notifica Parse nel processo in background. Per questo è anche possibile scrivere apis Parse personalizzati sia in NodeJS che in qualsiasi altro stack tecnologico.

E nelle applicazioni, è possibile sincronizzare gli eventi con iCal utilizzando Kit evento:

https://developer.apple.com/library/mac/documentation/DataManagement/Conceptual/EventKitProgGuide/ReadingAndWritingEvents.html#//apple_ref/doc/uid/TP40004775-SW1

3

prima, è necessario in grado di lasciare iOS svegliarsi la vostra applicazione in esecuzione in background, che richiede di classificare la tua app in una delle modalità indicate in Apple Background Execution, penso che il "Background fetch" sia appropriato nel tuo caso, quindi nel tuo application:performFetchWithCompletionHandler: potresti controllare il database di Calendar per gli eventi modificati e preformare gli aggiornamenti necessari sul server.

+0

Ciò consentirebbe all'app di svegliarsi e eseguire un'operazione di recupero o alcune operazioni in background in background, ma la notifica push ricevuta sull'app deve essere attivata da un particolare evento da un server. Questo evento, idealmente, è un cambiamento nei promemoria iCal dell'utente/eventi del calendario. Che sfortunatamente potrebbe accadere senza l'app personalizzata/di terze parti che la legge tramite l'eventkit e fa una sincronizzazione dall'app nativa del Calendario. –

+0

@JesseArmand il problema sarà dove ricevere la notifica di modifica dell'evento, c'è l'evento di modifica del calendario di Apple a cui puoi iscriverti mentre l'app iOS nativa è in esecuzione in primo piano, ma non notificherà l'app in background, ecco perché proporre lo sfondo approccio per controllare periodicamente il database del calendario. – Allen

+0

Il recupero dello sfondo deve essere attivato da qualcosa, non può essere eseguito automaticamente come un processo cron in un ambiente server. Quel trigger a cui mi riferivo è necessario per far sì che ciò accada. –

1

credo che questo sia la soluzione migliore: https://stackoverflow.com/a/23997912/1967872

Nell'implementazione del metodo storeChanged: indicato in tale risposta, si dovrebbe scorrere tutti gli eventi, di rilevare le modifiche e le sottopone al il server.