5

Come dice il titolo, ho un'app con APN incorporato. Funziona perfettamente in modalità Sandbox. Ma in modalità produzione, fallisce miseramente.La notifica push per iPhone funziona in sandbox ma non in modalità produzione

Sembra che abbia i certificati giusti sul server, perché non ricevo un errore dal servizio APNS. Tutto sembra funzionare bene. Sto usando ApnsPHP di Aldo Armiento. Ha una funzione integrata per sputare i risultati dal server APNS. Quando provo a utilizzare Sandbox con l'app dello store, ottengo - come previsto - un errore-token non valido (poiché i token da sandbox e la produzione sono diversi). Quando uso il certificato di produzione con l'app dal negozio, non ricevo un errore. Nulla, nada, zilch: sembra che abbia consegnato la notifica. Ahimè, non arriva sul mio telefono.

Quindi, a quanto pare, i certificati devono essere ok. Si connette al server, invia la notifica, tutto passa senza errori (prima avevo i certificati sbagliati, quindi so cosa succede se non sono corretti :)

Qualche idea su come scoprire dove si nasconde il bug ?

[Edit] ecco cosa torno dal APNS-Service:

Tue, 03 Jan 2012 03:13:55 +0100 ApnsPHP[13049]: INFO: Trying ssl://gateway.push.apple.com:2195... 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Connected to ssl://gateway.push.apple.com:2195. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Sending messages queue, run #1: 1 message(s) left in queue. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: STATUS: Sending message ID 1 [custom identifier: Message-Badge-000] (1/3): 107 bytes. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Disconnected. 

risposta

10

Ecco tre casi è possibile controllare a vostra fine: -

  1. Assicurarsi che hai usato il giusto certificato di produzione sul lato server. poiché è necessario creare due certificati diversi per la produzione e la sandbox. assicurati di utilizzare il certificato corretto sul server.

  2. in secondo luogo è possibile verificare di aver utilizzato il gateway e il numero di porta corretti sul lato server. Dal momento che il gateway per la produzione e la sandbox sono diversi. Il gateway utilizzato per la produzione è: - gateway.push.apple.com. e inoltre stai usando la password corretta sul server per il tuo certificato che hai usato sul tuo server.

  3. terzo è possibile controllare se la notifica sul dispositivo è abilitata o meno. Devi abilitarlo anche sul tuo iPhone. Assicurati che sia sul tuo dispositivo.

Fammi sapere se funziona per voi.

+0

Grazie - ma ho controllato tutto questo. Tutto è configurato come dovrebbe essere. E come detto, non ricevo errori dal servizio push, sembra che i messaggi siano passati ... molto strano. – Swissdude

+0

hai provato a creare nuovamente il certificato di produzione e metterlo sul tuo server? –

+1

Peccato per me :) era il certificato. Ho sviluppato per un'altra azienda e lo sviluppatore originale se n'è andato - il suo certificato in qualche modo sembra ancora attivo (l'ho sostituito con il mio, però). Quindi il certificato era valido ed era valido per l'app. Ma il file binario è stato compilato con la mia chiave privata, che deve aver fatto la confusione. Grazie per il vostro aiuto! – Swissdude

1

See risposta nella https://stackoverflow.com/a/11623162/496222

In breve: assicurarsi che entrambi i certificati SSL sono in un file PEM separato. Avere un singolo file PEM con sandbox e certificato di produzione causerà il fallimento di entrambi gli ambienti.

0

vedere anche se la notifica push App Id abilitato

7

Per me, faccio fatica questo per giorni. Utilizzando il certificato e la chiave di produzione corretti, e anche il gateway corretto per inviare il messaggio al mio iPhone in via di sviluppo, è stato inviato correttamente in modalità sandbox, ma non è riuscito con la modalità di produzione. È perché ci sono anche due tipi di token dispositivo, il token dispositivo iPhone test è token sandbox, non può essere utilizzato in modalità produzione. È meglio utilizzare il token di un altro dispositivo per testare gli APN di produzione.

La spiegazione dettagliata è here

Il problema più comune è un token dispositivo valido.Se il token proviene dall'ambiente sandbox , ad esempio quando si verifica una build di sviluppo in house, non è possibile inviarlo al servizio push di produzione. Ogni ambiente push emetterà un diverso token per lo stesso dispositivo o computer . Se si invia un token dispositivo all'ambiente sbagliato, il servizio push lo vedrà come token non valido e scarterà la notifica.

+0

Questo uomo ha capito bene ... Grazie per aver condiviso questa informazione. – bottus

0

Questo ha risolto il problema, verificare l'impostazione del valore corretto per kGGLInstanceIDAPNSServerTypeSandboxOption. Per la modalità di sviluppo impostata su SÌ e Per la modalità di produzione 'NO'.

+0

Penso che questo sembra essere per Google Cloud Messaging? https://developers.google.com/cloud-messaging/ios/client – Nick

Problemi correlati