2010-11-03 31 views
7

que tienen una aplicación de iPhone el envío de notificaciones y todo está funcionando bien ... excepto a veces :)iphone y notificaciones: ¿número máximo de notificaciones?

Me explico: estoy usando un bastante simple script PHP para enviar las notificaciones (usando el método stream_context_create), pero algunos los usuarios me dijeron que no reciben algunas notificaciones. Aparentemente, puedo encontrar algunos casos en los que necesito enviar hasta 50,000 notificaciones en un minuto y creo que este podría ser el problema. Estoy usando una sola transmisión para enviar todas las notificaciones.

¿Alguno de ustedes se encontró con un problema así? ¿Debo dividirme en varias secuencias? ¿Hay alguna información sobre la cantidad máxima de notificaciones que puedo enviar en una transmisión?

Gracias :)

Edición 1

"velocidad" no es el tema aquí: Soy capaz de empujar a todos mis notificaciones de Apple dentro de un minuto (que puede tener algunos problemas en el futuro si mi número de usuarios crece, pero está bien ATM). El problema que veo aquí es que Apple puede considerarme spammer o algo así y no entrega todas mis 50,000 notificaciones:/¿Tienen alguna idea de cómo puedo estar seguro de eso?

+1

¿Ha considerado crear una secuencia de comandos de daemon y enviar notificaciones a una pila que el daemon maneja a un ritmo adecuado? Si sus notificaciones pueden llegar con un retraso de cinco minutos, creo que esta es una solución adecuada sin cambiar completamente el idioma/etc. –

+0

Acabo de editar mi publicación, me di cuenta de que mi pregunta no era realmente correcta – Vivi

+0

Bueno, sé que tuvimos los mismos problemas con los apns. Creo que lo resolvimos usando una cola y solo enviamos una cantidad limitada de notificaciones por segundo a Apple. No sé exactamente qué es este límite, pero es posible que desee examinar esto y experimentar un poco. – Rengers

Respuesta

5

Le pregunté a un representante de desarrolladores de Apple sobre esto y me dijeron que no había límites de tarifas y que el sistema nunca había omitido una notificación.

(Esto fue hace 12 meses, cuando el empuje era todavía relativamente nuevo, por lo que puede haber cambiado las políticas desde entonces)

+0

Solo un comentario: al enviar el contenido de la transmisión a Apple, cada vez que se detecta un token invalide, la conexión se detiene. Por lo tanto, asegúrese de que cada vez que envíe sus datos, fwrite() haya sido exitoso. – Vivi

1

Preferiría desarrollar el código para enviar las notificaciones en C. PHP, al ser un lenguaje de scripting, no puede (probablemente) garantizar la velocidad requerida para manejar 50K notificaciones por minuto. Además, es posible que necesite un servidor muy aprovisionado con CPU de última generación y mucha memoria. De hecho, para cumplir con la QOS que necesita, debe poder enviar aproximadamente 14 notificaciones por segundo. Dudo que PHP sea capaz de hacer frente a esta tasa.

En el pasado tenía mi propio proveedor y mi QOS era mucho menor que la que necesita. Luego, decidí cambiarme a un proveedor de servicios comerciales, Urban Airship. He encontrado que este servicio funciona como un encanto. Ninguno de los usuarios ha denunciado una notificación faltante. Tienes que pagar por ello, pero manejar estas cosas por ti mismo puede ser una molestia increíble.

+0

Acabo de editar mi publicación, me di cuenta de que mi pregunta no era realmente precisa – Vivi

0

Si hay un fallo en la corriente de notificación (es decir, mala token), a continuación, un par de fichas procediendo es extrañado. Esta ha sido mi experiencia, así que envío un token a la vez. No más fracasos, aparte del único token malo.

0

Me he encontrado exactamente con el mismo problema, pero con muchos menos impulsos por transmisión. En mi caso, empujé todos mis mensajes, alrededor de 250, en la misma transmisión y no se entregó ninguno. Parece que un token malo parece causar el error, pero hasta ahora no estoy seguro de qué constituye un token malo.

He leído en otra parte que presionar mensajes utilizando los tokens de distribución en un entorno de recinto de seguridad y presionar mensajes utilizando tokens de entorno limitado en el entorno de distribución puede provocar un error, pero he mezclado tokens en ambos entornos y no mensajes perdidos, pero solo estaba presionando algunos mensajes en una secuencia en ese momento.

Resumen breve: Estoy presionando un mensaje por secuencia, y funciona bien. Toma el orden de segundos para enviar 250 mensajes, lo que parece terriblemente ineficiente, pero es solo una pequeña molestia para mí.

Cuestiones relacionadas