Fondo de ejecución de la aplicación iphone XMPP

Creé una aplicación de chat usando el marco XMPP … cuando salgo de la aplicación (en el modo de fondo) quiero recibir el mensaje de chat … y también necesito mostrar el icono de insignia … ¿Cómo puedo hacer esto?

De hecho, puede ejecutar una aplicación XMPP Framework en segundo plano en iOS4 llamándolo una aplicación VoIP. ( Sin embargo , Apple lo rechazará de la tienda de aplicaciones a menos que también lo haga realmente VoIP ).

Debe configurar el indicador de VoIP en el archivo de su aplicación (nombre de aplicación) -info.plist, y luego en

(void)xmppStream:(XMPPStream *)sender socketWillConnect:(AsyncSocket *)socket 

Tendrá que establecer los indicadores de flujo de socket para incluir kCFStreamNetworkServiceTypeVoIP :

  CFReadStreamSetProperty([socket getCFReadStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); CFWriteStreamSetProperty([socket getCFWriteStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); 

Luego, su aplicación se despertará brevemente cuando llegue un nuevo mensaje XMPP. En tu normal

 (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message 

controlador, querrá crear una notificación local para el mensaje si está en segundo plano (puede hacer un seguimiento del estado del fondo a través de UIApplicationDidEnterBackgroundNotification y UIApplicationWillEnterForegroundNotification ). El manejador local de notificaciones puede establecer el número de la insignia de la aplicación, etc. (como lo haría con una notificación push).

EDITAR

Las versiones más recientes de XMPP Framework (específicamente, GCDAsyncSocket) ahora admiten una llamada para hacer esto más fácil, por lo que puede simplemente tener:

 - (void)xmppStream:(XMPPStream *)sender socketWillConnect:(GCDAsyncSocket *)socket { // Tell the socket to stay around if the app goes to the background (only works on apps with the VoIP background flag set) [socket performBlock:^{ [socket enableBackgroundingOnSocket]; }]; } 

Hay un número limitado de progtwigs que se pueden ejecutar en segundo plano sin límite, como los progtwigs VOIP, los que reproducen música y los que rastrean la ubicación del usuario. Si no está haciendo ninguno de estos legítimamente, entonces está limitado a diez minutos de funcionamiento en segundo plano. Tenga en cuenta que Apple rechazará aplicaciones que prueben trucos tontos como reproducir sonidos “vacíos” para mantener la aplicación en vivo.

Puede encontrar información sobre la ejecución de tareas en segundo plano aquí: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

Mi otra opción, supongo, es hacer funcionar el progtwig de chat contactando un servidor, y hacer que la cola del servidor responda cuando un usuario está fuera de línea, y luego entregarlos la próxima vez que inicie sesión. Al no ser un progtwigdor de red, no sé qué tan factible es, pero creo que es la única manera de hacerlo indefinidamente si solo está ofreciendo chat de texto. La mejor opción sería hacer su aplicación VOIP habilitada usando la guía anterior.

EDITAR A partir del lanzamiento de iOS 5.0, también es posible obtener aplicaciones registradas como aplicaciones de Kiosco para descargar información mientras están en segundo plano, además de otras funcionalidades funky que también son Kiosco solo.

-Ceniza

En el último XMPP Framework no necesita modificar los archivos de framework.

Simplemente haz esto: 1. Agrega esto a tu método de conexión

 #if !TARGET_IPHONE_SIMULATOR { self.xmppStream.enableBackgroundingOnSocket = YES; } #endif 

2. Agregue la clave de VoIP a su archivo de información plist:

enter image description here