2011-09-03 5 views
5

Ho un'app per iphone che ha un processo di 30 secondi che fa qualche IO di rete. Fondamentalmente, mentre l'app è in background, voglio che questo processo venga eseguito ogni ora (in realtà una volta al giorno, ma se fallisce, voglio che venga eseguito nuovamente in un'ora).Come eseguire un processo ~ 30sec in background ogni ora (app per iphone)

Con le funzionalità di sfondo di ios 4, è possibile? Se é cosi, come? Quali sono i limiti che incontrerò?

Grazie mille!

+1

Ho fatto molte ricerche e ho scoperto che " notifiche push silenziose "ha fatto il trucco per me. Controlla http: // StackOverflow.it/questions/35987366/ios-enterprise-app-how-can-i-make-sure-my-app-run-in-the-background –

risposta

6

Date un'occhiata alla documentazione di Apple sull'esecuzione di codice in background.

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

ci sono diversi modi di affrontare compiti in background riuniti. Le uniche app che possono avere processi completamente in background sono app "audio", "voip" e "location" e questo deve essere dichiarato in Info.plist.

Se la vostra app non è di questo tipo, probabilmente avrete difficoltà a fare ciò che volete facilmente. Esistono metodi che ti consentono di mantenere viva la tua app in background per un periodo di tempo limitato (anche a quel link), ma alla fine la tua app verrà chiusa.

Le notifiche locali richiederanno all'utente solo l'apertura dell'app: vuoi davvero avere un avviso sul telefono ogni 30 secondi?

+0

Sembra che non ci sia modo di fare ciò che voglio. Grazie per avermi fatto sapere. – Chris

+0

Il collegamento in questa risposta è morto. Puoi trovare informazioni sull'elaborazione in background negli attuali documenti iOS su http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Opsimath

0

credo che l'utilizzo di notifiche locale vi aiuterà .... controllo seguente ....

  1. http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
  1. Un'applicazione in grado di creare e pianificare una notifica locale e il sistema operativo lo consegna alla data e all'ora del programma. Se lo consegna quando l'applicazione non è attiva in primo piano, visualizza un avviso, spilla l'icona dell'applicazione o riproduce un suono, qualunque cosa sia specificata nell'oggetto UILocalNotification. Se l'applicazione è in esecuzione in primo piano, non ci sono avvisi, badging o suoni; invece, l'applicazione: didReceiveLocalNotification: il metodo viene chiamato se il delegato lo implementa.

  2. Il delegato può ispezionare le proprietà della notifica e, se la notifica include dati personalizzati nel suo dizionario utente Info, può accedere a tali dati ed elaborarli di conseguenza. D'altra parte, se la notifica locale attiva solo l'icona dell'applicazione e l'utente in risposta avvia l'applicazione, viene richiamata l'applicazione: didFinishLaunchingWithOptions: metodo, ma nessun oggetto UILocalNotification è incluso nel dizionario delle opzioni.

+0

Notifica locale consente di visualizzare un messaggio di avviso dal trampolino di lancio, aggiornare il badge dell'icona dell'app numero o riprodurre un suono. Ma non ti dà mai alcuna possibilità di fare I/O di rete. –

+0

ciao, grazie per le informazioni. Ho scritto sopra basandomi sul seguito. 1. applicazione: didReceiveLocalNotification: fare riferimento alla discussione. hanno detto che potrebbe essere qualunque cosa contenga l'oggetto UILocalNotification. 2. In Panoramica parte di UILocalNotification: "Il delegato può ispezionare le proprietà della notifica e, se la notifica include dati personalizzati nel suo dizionario userInfo, può accedere a tali dati ed elaborarli di conseguenza." ... Quindi ho pensato userinfo dict può avere un URL da chiamare e può chiamarlo ed elaborare i dati se il processo può essere completato entro un tempo specifico consentito per il processo in background – Mohammad

1

Stavo facendo una specie di ricerca simile, dare un'occhiata a this SO answer nel caso non fossi riuscito a trovarlo prima. Applicazioni come DataMan o Data Usage devono avere una sorta di esecuzione periodica di codice in background, quindi non sono convinto al 100% che quello che chiedi sia impossibile ..

+0

Sembra intrigante, ma sono carina certo che una soluzione hacky mi avrebbe buttato fuori dall'app store pronto! – Chris

Problemi correlati