2011-09-03 18 views
5

Tengo una aplicación para iphone que tiene un proceso de 30 segundos que hace algunos IO de red. Básicamente, aunque la aplicación está en segundo plano, quiero que este proceso se ejecute cada hora (en realidad una vez al día, pero si falla, quiero que vuelva a ejecutar en un tiempo de horas).Cómo ejecutar un proceso ~ 30sec en segundo plano cada hora (aplicación iphone)

Con las funciones de fondo de ios 4, ¿es esto posible? ¿Si es así, cómo? ¿Cuáles son las limitaciones con las que me enfrentaré?

¡Muchas gracias!

+1

Investigué mucho y encontré que " notificaciones automáticas silenciosas "hizo el truco para mí. Consulte http: // stackoverflow.com/questions/35987366/ios-enterprise-app-how-can-i-make-sure-my-app-runs-in-the-background –

Respuesta

6

Tome un vistazo a la documentación de Apple acerca de ejecutar código en el fondo.

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

Hay diferentes maneras de abordar las tareas backgrounded. Las únicas aplicaciones que pueden tener procesos completamente retrocedidos son las aplicaciones de "audio", "voip" y "ubicación", y esto debe declararse en Info.plist.

Si su aplicación no es de este tipo, probablemente le resulte difícil hacer lo que quiera fácilmente. Existen métodos que le permiten mantener su aplicación activa en segundo plano durante un período de tiempo finito (también en ese enlace), pero con el tiempo su aplicación se cerrará.

Las notificaciones locales solo solicitarán al usuario que abra la aplicación. ¿Realmente desea tener una alerta emergente en el teléfono cada 30 segundos?

+0

Parece que no hay forma de hacer lo que quiero. Gracias por hacérmelo saber. – Chris

+0

El enlace en esta respuesta está muerto. Puede encontrar información sobre el procesamiento de fondo en los documentos actuales de iOS en http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Opsimath

0

que creen que el uso de las notificaciones locales ayudará .... verificación siguiente ....

  1. http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
  1. Una aplicación puede crear y programar una notificación locales , y el sistema operativo luego lo entrega en la fecha y hora programadas. Si lo entrega cuando la aplicación no está activa en primer plano, muestra una alerta, identifica el icono de la aplicación o reproduce un sonido, lo que se especifique en el objeto UILocalNotification. Si la aplicación se ejecuta en primer plano, no hay alerta, credencialización o sonido; en su lugar, se llama a la aplicación: método didReceiveLocalNotification: si el delegado lo implementa.

  2. El delegado puede inspeccionar las propiedades de la notificación y, si la notificación incluye datos personalizados en su diccionario userInfo, puede acceder a esos datos y procesarlos en consecuencia. Por otro lado, si la notificación local solo identifica el icono de la aplicación, y el usuario en respuesta inicia la aplicación, se invoca el método application: didFinishLaunchingWithOptions: pero no se incluye ningún objeto UILocalNotification en el diccionario de opciones.

+0

La notificación local le permite mostrar un mensaje de alerta desde el trampolín, actualizar la insignia del icono de la aplicación número, o reproduce un sonido. Pero nunca te da ninguna posibilidad de hacer E/S de red. –

+0

hola, gracias por la información. Escribí arriba basado en lo siguiente. 1. aplicación: didReceiveLocalNotification: Consulte la discusión. dijeron que podría ser lo que contenga ese objeto UILocalNotification. 2. En la parte general de UILocalNotification: "El delegado puede inspeccionar las propiedades de la notificación y, si la notificación incluye datos personalizados en su diccionario userInfo, puede acceder a esos datos y procesarlos en consecuencia" .... Así que pensé en userinfo dict puede tener una URL para llamar y puede llamarla y procesar datos si el proceso puede completarse dentro del tiempo específico permitido para el proceso en segundo plano. – Mohammad

1

Estaba haciendo un tipo de investigación similar, eche un vistazo a this SO answer en caso de que no haya logrado encontrarlo antes. Las aplicaciones como DataMan o Data Usage deben tener algún tipo de ejecución de código periódica en segundo plano, así que no estoy 100% convencido de que lo que estás pidiendo es imposible ...

+0

Parece intrigante, pero soy bonita ¡Seguro que ese tipo de solución hacky me sacará de la tienda de aplicaciones pronto! – Chris

Cuestiones relacionadas