ejecutar He creado una aplicación de chat utilizando XMPP framework..when que salir de la aplicación (entrar en el modo de fondo) Quiero recibir el message..and de chat también es necesario para mostrar el icono placa ... ¿Cómo puede ¿Hago esto?iPhone App de XMPP fondo
Respuesta
Efectivamente, puedes ejecutar una aplicación basada en el Marco de XMPP en el fondo en iOS4 llamándolo una aplicación de VoIP. (Sin embargo,, Apple lo rechazará de la App Store a menos que también lo haga VoIP).
Es necesario configurar la bandera de VoIP en su aplicación (nombreaplic) -info.plist archivo, y luego en
(void)xmppStream:(XMPPStream *)sender socketWillConnect:(AsyncSocket *)socket
que necesitará para establecer las banderas secuencias de socket para incluir kCFStreamNetworkServiceTypeVoIP
:
CFReadStreamSetProperty([socket getCFReadStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty([socket getCFWriteStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
Luego, su aplicación se activará brevemente cuando llegue un nuevo mensaje XMPP. Para su correcto manejador
(void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
, que se quiere crear una notificación local para el mensaje si están en segundo plano (puede realizar un seguimiento del estado de 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).
EDIT
versiones más recientes del Marco XMPP (en concreto, GCDAsyncSocket) ahora apoyan una llamada para hacer esto más fácil, por lo que sólo se puede 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 programas que se pueden ejecutar en segundo plano sin límite, estos programas de VoIP son, los que juegan música, y aquellos que hacen un seguimiento de 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 las tareas que se ejecutan en segundo plano aquí: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
Su otra opción Conjeturaría es tener el programa de chat funciona poniéndose en contacto con un servidor, y de tener que las respuestas de cola del servidor cuando un usuario está fuera de línea y luego entregarlos la próxima vez que inicien sesión. Al no ser un programador 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.
EDIT 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, más un montón de otras características funky que también son solo Kiosco.
-Ash
primer lugar muchas gracias para usted replay..i no quiero empujar esta aplicación para AppStore.usando el archivo IPA para su distribución. Leí el enlace que le proporcionó y agregué el VOIP en info.plist. Necesito más cambios en el código ... porque todavía no funciona en el backkground. – Raj
Creo que ya leyó el documento al que te indiqué; necesita hacer algo más que simplemente agregar VOIP a info.plist para que funcione. Consulte más abajo en la página "Implementación de una aplicación VOIP" – Ash
Mi aplicación está configurada como una aplicación basada en la ubicación, pero después de 3 horas en segundo plano se desconecta de mi servidor XMPP. Además de configurar info.plist como ubicación, ¿hay algo más que establecer en xmppframework para que nunca se desconecte? – subharb
En el último marco XMPP se no es necesario modificar los archivos de framework.
a hacer esto: 1 .Agregue esto a su método connect clave
#if !TARGET_IPHONE_SIMULATOR
{
self.xmppStream.enableBackgroundingOnSocket = YES;
}
#endif
2. Agregar VoIP a su información de archivo plist:
pero rechazo de manzana de esta manera ...... – Raju
- 1. ¿Cómo integrar el marco XMPP para iPhone?
- 2. Biblioteca XMPP para iOS (iPhone/iPad)
- 3. iPhone App Store Pregunta
- 4. iPhone App de desplazamiento HTML5 Pregunta
- 5. iPhone - navigationbar Fondo personalizado
- 6. Iphone/iPad Fondo de imagen
- 7. Wordpress Blog iPhone App Reader
- 8. iphone app enviar correo electrónico
- 9. iPhone App> ¿Agregar reconocimiento de voz?
- 10. iphone - NSTimers en el fondo
- 11. Color de fondo de Iphone UIButton
- 12. tamaño de la imagen de fondo iphone
- 13. Fondo de UITableView de posición fija iPhone
- 14. iPhone inicie sesión en Google App Engine
- 15. iPhone In App Purchase - response.products still empty?
- 16. iOS: Universal App - Release tan solo iPhone
- 17. Aplicación privada para iPhone, sin App Store?
- 18. iPhone Web App desactivar el caché
- 19. iPhone AVAudioPlayer detener música de fondo
- 20. descargas simultáneas de fondo en el iphone
- 21. iPhone - UIButton - imagen de fondo para discapacitados
- 22. iPhone - Configuración de fondo en UITableViewController
- 23. redirect iphone app to apple store
- 24. XMPP framework - Cómo obtener mensajes de grupo
- 25. no se puede conectar al servidor xmpp usando node-xmpp
- 26. Cómo enviar un mensaje usando XMPP Framework
- 27. Fondo transparente en UITableView agrupado - iPhone
- 28. fondo fijo en el iPhone Safari
- 29. Buenos tutoriales sobre XMPP?
- 30. Servidor XMPP para Python
gracias Jeff, esto está funcionando bien para mí ... muchas gracias :-) – Raj
control no va al método "socketWillConnect: (AsyncSocket *) socket". Por favor, ayuda – iphonedev23
El control debe ir a socketWillConnect: siempre que hayas llamado addDelegate: en tu objeto XMPPStream. Tenga en cuenta que la llamada socketWillConenct: ahora espera un parámetro GCDAsyncSocket * en lugar de AsyncSocket * (a partir de XMPPFramework 3) –