2010-11-03 7 views
7

Ho un app iPhone l'invio di notifiche e tutto funziona bene ... tranne a volte :)iphone e notifiche: numero massimo di notifiche?

Mi spiego: sto usando uno script PHP piuttosto semplice da inviare le notifiche (utilizzando il metodo stream_context_create), ma un po ' gli utenti mi hanno detto che non ricevono alcune notifiche. Apparentemente, potrei incontrare alcuni casi in cui devo inviare fino a 50.000 notifiche entro un minuto e penso che questo potrebbe essere il problema. Sto utilizzando un singolo stream per inviare tutte le notifiche.

Qualcuno di voi ha riscontrato un problema simile? Devo dividere in più stream? C'è qualche informazione sul numero massimo di notifiche che posso inviare in un flusso?

Grazie :)

Modifica 1

"Speed" non è il problema qui: io sono in grado di spingere tutte le notifiche di Apple all'interno di un minuto (forse ho alcuni problemi in futuro se il mio numero di utenti cresce ma è OK ATM). Il problema che vedo qui è che Apple potrebbe considerarmi uno spammer o qualcosa del genere e non fornisce tutte le mie 50.000 notifiche:/Ragazzi avete idea di come posso essere sicuro?

+1

Avete considerato di creare uno script daemon e di inviare notifiche su una pila che il daemon gestisce a un ritmo adeguato? Se le tue notifiche possono arrivare con un ritardo di cinque minuti, penso che questa sia una soluzione appropriata senza cambiare completamente lingua/ecc. –

+0

Ho appena modificato il mio post, ho capito che la mia domanda non era molto accurata – Vivi

+0

Beh, so che abbiamo avuto gli stessi problemi con apns. Penso che l'abbiamo risolto utilizzando una coda e inviando solo un numero limitato di notifiche al secondo ad Apple. Non so esattamente cosa sia questo berretto ma potresti voler esaminare questo e sperimentare un po '. – Rengers

risposta

5

Ho chiesto a un rappresentante dello sviluppatore Apple su questo e mi è stato detto che non c'erano limiti di velocità e che il sistema non aveva mai abbandonato una notifica.

(questo è stato 12 mesi fa, quando spinta era ancora relativamente nuovo, in modo che possono essere cambiate le politiche da allora)

+0

Solo un commento: quando si invia il contenuto del flusso ad Apple, ogni volta che viene rilevato un token invalido, la connessione viene interrotta. Quindi assicurati che ogni volta che invii i tuoi dati che il file fwrite() abbia avuto successo. – Vivi

1

Preferisco sviluppare il codice per inviare le notifiche in C. PHP, essendo un linguaggio di scripting, non può (probabilmente) garantire la velocità richiesta per gestire le notifiche 50K al minuto. Inoltre, potresti aver bisogno di un server molto potente con CPU di ultima generazione e molta memoria. Infatti, per soddisfare il QOS richiesto, devi essere in grado di inviare circa 14 notifiche al secondo. Dubito che PHP sia effettivamente in grado di far fronte a questo ritmo.

In passato avevo il mio provider e il mio QOS era molto inferiore a quello richiesto. Poi ho deciso di passare a un fornitore di servizi commerciali, Urban Airship. Ho trovato questo servizio funziona come un fascino. Mai nessuno degli utenti ha segnalato una notifica mancante. Devi pagare per questo, ma la gestione di questa roba da solo potrebbe rivelarsi una seccatura incredibile.

+0

Ho appena modificato il mio post, mi sono reso conto che la mia domanda non era veramente accurata – Vivi

0

Se si verifica un errore nel flusso di notifica (cioè male token), poi un paio di gettoni procedendo ci è mancato. Questa è stata la mia esperienza, quindi invio un token alla volta. Niente più fallimenti, a parte l'unico token negativo.

0

Ho incontrato esattamente lo stesso problema, ma con molto meno push per flusso. Nel mio caso, ho trasmesso tutti i miei messaggi, circa 250, sullo stesso flusso e nessuno sarebbe stato consegnato. Sembra che un token errato sembri causare l'errore, ma finora non sono sicuro di cosa costituisca un token non valido.

Ho letto altrove che l'invio di messaggi utilizzando i token di distribuzione in un ambiente sandbox e l'invio di messaggi tramite token sandbox nell'ambiente di distribuzione può causare errori in uno stream, ma ho generato token misti in entrambi gli ambienti e non messaggi persi, ma stavo solo spingendo alcuni messaggi in un flusso alla volta.

Per farla breve: sto spingendo un messaggio per flusso e funziona correttamente. Prende l'ordine di secondi per spingere 250 messaggi, il che sembra terribilmente inefficiente, ma è solo un piccolo inconveniente per me.