2012-05-20 10 views
14

Come mantenere la mia applicazione in esecuzione in background? Devo eseguire il jailbreak del mio iPhone per fare questo? Ho solo bisogno di questa app per controllare qualcosa da internet ogni intervallo impostato e avvisare quando necessario, per mio uso personale.iOS: Mantieni l'applicazione in esecuzione in background

+0

Ciao Denis spero che tu abbia la tua risposta. Se sì, allora puoi contrassegnare la tua rispettiva risposta come vera e votata ... – Mrunal

risposta

17

Sì, non è necessario effettuare il jailbreak. Consulta la sezione "Implementazione di attività in background di lunga durata" di questo documento da Apple.

Da doc di Apple: Dichiarare Attività in background supportati della tua App

supporto per alcuni tipi di esecuzione di fondo deve essere dichiarato in anticipo l'applicazione che li utilizza. Un'app dichiara il supporto per un servizio utilizzando il suo file Info.plist. Aggiungi la chiave UIBackgroundModes al tuo file Info.plist e imposta il suo valore su una matrice contenente una o più delle seguenti stringhe: (vedi il documento Apple dal link citato sopra.)

+4

Questo metodo funziona 24 x 7 - per sempre? – takrishna

+1

@takrishna, Se stai scrivendo questa app per uso personale, imposta UIBackgroundModes su "voip" (Voice over IP). Questo è il tipo più semplice di app da mantenere in vita per sempre in background. (Ma non inviarlo all'app store, a meno che non sia davvero un'app VOIP.) – ToolmakerSteve

+0

Per un'app store, se non si dispone di un server per inviare periodicamente "Notifiche remote" al telefono, l'unica altra opzione è "Recupera sfondo". http://stackoverflow.com/a/37311611/199364 – ToolmakerSteve

-1

Si può già farlo nel metodo applicationDidEnterBackground

+0

Ho pensato che l'app verrà automaticamente chiusa dopo una certa durata, non è così? Perdonami la mia ignoranza se sbaglio. Sono molto nuovo alla programmazione iOS. – Dennis

+0

a meno che iOS non abbia bisogno di quella memoria per un'altra app, non lo sarà, e fintanto che si sta facendo qualcosa in background – user1320885

+5

No. Le applicazioni non possono essere eseguite in background per oltre 10 minuti, tranne alcune situazioni particolari (VOIP, riproduzione audio, ecc.) – Greg

5

utilizzare le notifiche locali per farlo. Ma questo non controllerà ogni volta. Dovrai impostare un orario in cui controllerai il tuo evento specifico, potresti accorciarlo riducendo la tua fascia oraria. Per saperne di più sulla notifica locale per sapere come raggiungere questo a:

http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction/Introduction.html

+0

No, se l'app è in background, tutto ciò che una notifica locale farà è mostrare tale notifica all'utente. Non è possibile eseguire alcun lavoro effettivo a meno che l'utente non faccia clic sulla notifica per portare l'app in primo piano. – ToolmakerSteve

3

So che questa non è la risposta alla tua domanda , ma penso che sia una soluzione.

Si presume che si stia tentando di controllare qualcosa o ottenere dati da Internet su base regolare?

Creare un servizio che controlli su Internet ogni intervallo impostato per tutto ciò che si desidera conoscere e creare una notifica push per avvisare di esso, se il server è inattivo, o qualunque cosa si stia tentando di monitorare è cambiato stato. Solo un'idea

1

Sì, puoi fare qualcosa del genere. Per questo è necessario impostare la voce in info.plist per dire a OS che la mia app verrà eseguita in background. Ho fatto questo mentre volevo passare la posizione dell'utente dopo un particolare indicatore orario al server. Per questo ho impostato "Modalità sfondo richieste" impostato su "Registri app per aggiornamenti posizione".

È possibile scrivere un gestore di tipo UIBackgroundTaskIdentifier.

Problemi correlati