Supponendo che ciò sia possibile, vorrei che la mia applicazione iOS, in background, esegua il polling di un server (ovvero, recupera il contenuto di un URL ogni 30 minuti e informa l'utente se contiene qualcosa "interessante"), essenzialmente in un modo simile al modo in cui il client di posta elettronica integrato funziona presumibilmente se non si stanno utilizzando le notifiche push.Modo corretto per eseguire il polling del server sullo sfondo
Ora, dalla mia lettura fino ad ora (io sono un programmatore esperto, ma nuova per iOS), penso che ci possono essere due potenziali modi per farlo:
- Metodo 1: In applicationDidEnterBackground :, avviare un'attività in background che esegue il polling periodico;
- Metodo 2: inviare la propria app a UILocalNotification senza testo visibile all'utente, ma che serve semplicemente a riattivare l'app in X minuti per eseguire il polling (e quindi inviare se stessa un'altra notifica per il tim successivo ecc.).
Vedo nella documentazione Apple di Scheduling, Registering, and Handling Notifications, in realtà sembrano avere un esempio di usign Metodo 1 (il loro esempio di "chat", Listato 2-2). Ma ciò che sorprende di questo metodo è che sembra semplicemente sedersi in un ciclo continuo facendo il sondaggio, senza il sonno intermedio; su piattaforme con cui ho più familiarità, sarebbe sconsigliabile e masterizzerebbe la CPU.
Così sottoparti della mia domanda sono essenzialmente: - è il metodo 2 possibile (o must un UILocalNotification provocano sempre un avviso visibile all'utente, che non è quello che voglio), e se così è il metodo consigliato per Fai questo? - Se il modo per farlo è il Metodo 1, è l'esempio di "chat" di Apple di stare in un loop continuo in realtà OK (ad esempio, iOS raziona la CPU in modo che non si tratti di un problema), e se no qual è il modo in iOS per dire al processo in background di "dormire per X secondi/minuti"? E se il ciclo continuo di Apple è OK per qualsiasi motivo, quale sarebbe quindi il modo di scandire gli intervalli tra il polling?
N.B. Apprezzo che essere in grado di eseguire in background è essenzialmente una funzionalità di iOS 4. Non mi dispiace se la mia app funzionerà solo su iOS 4.
Grazie - questo è in linea con quello che ho letto (sfortunatamente). Mi chiedo perché Apple mostri un esempio di polling di un server di chat in background in quel caso. Il problema principale con le notifiche push per me è che volevo mantenere le informazioni di accesso riservate del client sul client, ma sembra che questo non sia possibile. È interessante notare che il client di posta integrato dell'iPhone è autorizzato a violare questa regola, quindi? –
Utilizzare un diverso meccanismo di autenticazione/autorizzazione. Cose come OAuth o Whatnot. In secondo luogo, non sono sicuro di quale esempio stai indicando, ma la cosa principale che potrebbe mostrare sono i servizi basati sulla posizione in background e il client "chat". Non lo so. – jer