2012-05-20 25 views
14

¿Cómo puedo mantener mi aplicación ejecutándose en segundo plano? ¿Tendría que hacer jailbreak a mi iPhone para hacer esto? Solo necesito esta aplicación para verificar algo de Internet cada intervalo establecido y notificar cuando sea necesario, para mi propio uso.iOS: mantener la aplicación ejecutándose en segundo plano

+0

Hola Denis espero que hayas recibido tu respuesta. En caso afirmativo, entonces ¿puede marcar su respuesta respectiva como verdadera y hasta por votación también ... – Mrunal

Respuesta

17

Sí, no es necesario hacer jailbreak. Consulte la sección "Implementación de tareas en segundo plano de larga duración" de este documento desde Apple.

de Doc de Apple: Declarar admitidos Tareas en segundo plano de su aplicación

Soporte para algunos tipos de ejecución en segundo plano debe ser declarado previamente por la aplicación que los utiliza. Una aplicación declara compatibilidad con un servicio utilizando su archivo Info.plist. Agregue la clave UIBackgroundModes a su archivo Info.plist y establezca su valor en una matriz que contenga una o más de las siguientes cadenas: (vea el documento de Apple del enlace mencionado anteriormente)

+4

¿Funcionará este método 24 x 7, para siempre? – takrishna

+1

@takrishna, si está escribiendo esta aplicación para su propio uso, establezca el valor de UIBackgroundModes "voip" (Voz sobre IP). Ese es el tipo de aplicación más fácil de mantener viva para siempre en segundo plano. (Pero no lo envíe a la tienda de aplicaciones, a menos que realmente sea una aplicación VOIP). – ToolmakerSteve

+0

Para una aplicación de tienda de aplicaciones, si no tiene un servidor para enviar periódicamente "notificaciones remotas" a su teléfono, su única otra opción es "búsqueda de fondo". http://stackoverflow.com/a/37311611/199364 – ToolmakerSteve

-1

Ya se puede hacer esto en las applicationDidEnterBackground Método

+0

Pensé que la aplicación se terminará automáticamente después de algún tiempo, ¿no? Disculpe mi ignorancia si estoy equivocado. Soy muy nuevo en la programación de iOS. – Dennis

+0

a menos que iOS necesite esa memoria para otra aplicación, no lo será, y mientras esté haciendo algo en segundo plano – user1320885

+5

No. Las aplicaciones no pueden ejecutarse en segundo plano durante más de 10 minutos, excepto en algunas situaciones (VOIP, reproduciendo audio, etc.) – Greg

5

Use notificaciones locales para hacer eso. Pero esto no se controlará todo el tiempo. Deberá establecer una hora en la que verifique su evento específico, puede acortarlo al disminuir su intervalo de tiempo. Leer más acerca de la notificación local para saber cómo lograr esto en:

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

+0

No, si la aplicación está en segundo plano, todo lo que hará una notificación local es mostrar esa notificación al usuario. No puede hacer ningún trabajo real a menos que el usuario haga clic en la notificación para poner la aplicación en primer plano. – ToolmakerSteve

3

Sé que esta no es la respuesta a su pregunta , pero creo que es una solución.

Esto supone que estás intentando verificar algo o obtener datos de Internet de forma regular?

Cree un servicio que verifique en Internet cada intervalo establecido para lo que sea que desee saber, y cree una notificación push para alertarlo, si el servidor está inactivo o lo que sea que esté intentando monitorear ha cambiado estado. Solo una idea.

1

Sí, puedes hacer algo como esto. Para eso, debe configurar la entrada en info.plist para decirle al sistema operativo que mi aplicación se ejecutará en segundo plano. Lo hice mientras quería pasar la ubicación del usuario después de una marca de tiempo particular al servidor. Para eso he configurado "Modos de fondo requeridos" en "Registros de aplicación para actualizaciones de ubicación".

Puede escribir un controlador de tipo UIBackgroundTaskIdentifier.

Cuestiones relacionadas