2012-06-30 15 views
22

Estoy haciendo una aplicación de chat para iPhone, pero no estoy seguro de cómo los mensajes de conversación deberían aparecer al instante.iOS chat APNS, tomas de corriente o intervalo de tiempo

He leído toneladas de resultados de Google sobre este tema. También la vez en:
- http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
- http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

enfoque APN:
una notificación invisible será empujado al iPhone que indica que un nuevo mensaje está listo para ser leído. Entonces la aplicación hará una solicitud de mensajes no leídos. Entonces, en lugar de sondear manualmente nuevos mensajes, dejaré que APNS me ayude con eso. ¿Pero no estoy seguro? enfoque

sockets:
Establecimiento de una conexión de socket que está abierto para compartir datos. Cuando se encuentran mensajes nuevos en db, automáticamente enviará los datos a la aplicación. ¿Pero qué pasa con el rango de IP, firewall, consumo de energía, otras cosas? de nuevo no estoy seguro :(

enfoque de sondeo:
Hacer un intervalo de tiempo en el que una encuesta entre solicitud, el consumo de energía es mi enemigo aquí

Mi pregunta:.
- ¿Qué enfoque es ? mejor
- Otras sugerencias
-. realmente necesito algunas ventajas e inconvenientes de las personas con experiencia en este tema

ejemplos es una siempre está bien.
Gracias

+2

El sondeo le ofrece confiabilidad, mejor demora y control de tiempo de espera, y como ventaja adicional, podrá elegir cómo presentar sus datos. Con Push Notifications, no tienes garantías de que tu mensaje se haya entregado correctamente. Apple no lo garantiza. Por lo tanto, no confío en que Apple entregue mensajes de chat a mis usuarios. – jweyrich

+2

Creo que malinterpretaste la pregunta. APNS no debe enviar los mensajes de chat por sí mismo, solo debería ... "empujar"/"invocar" la aplicación para que algunos nuevos mensajes no leídos estén listos para ser leídos. –

+0

¿Qué no está seguro sobre el método APNS? Las notificaciones automáticas no requieren una ejecución en segundo plano, lo que es una gran ventaja porque una aplicación en estado suspendido ahorra batería. – jweyrich

Respuesta

6

Creo que su principal preocupación es cómo recibir mensajes nuevos mientras su aplicación está en segundo plano. Porque no es como si tuviera una aplicación de mensajería abierta todo el día cuando puedo recibir notificaciones con aplicaciones como WhatsApp.

Mejor que las tomas TCPIP puede usar websockets. Como es HTTP, no hay problemas de firewall, PERO eso requiere una conexión permanente con la aplicación en el primer plano que drena la batería.

Y como solo la música, la ubicación o la IP de voz pueden ejecutarse en segundo plano, no puede sondear a menos que la aplicación esté abierta. Tenga en cuenta que si se registra para esas tareas en segundo plano y hace algo más, Apple notará y rechazará su aplicación.

Por lo tanto, use APNS. Eso es lo que hace WhatsApp.

+0

Buenos puntos. Incluso si me quedo con APNS, sigo creyendo que el futuro está en alguna forma ... conexiones persistentes (enchufes u otras cosas), donde no tiene que actualizar manualmente. Gracias por el ejemplo de WhatsApp. –

+0

Solo estoy realmente preocupado por la parte de primer plano. ¿Debo entender por su respuesta que WhatsApp depende únicamente de las notificaciones push para saber que tiene que extraer nuevos mensajes, incluso cuando la aplicación se ejecuta en primer plano? – figha

Cuestiones relacionadas