2011-10-12 14 views

risposta

43

Come ho postato ieri, come risposta alla stessa domanda: (prev. answer)

ho problemi simili. Dopo aver fatto alcune prove ho raggiunto le seguenti conclusioni:

  1. Se app (che è stato compilato con development provision profile) è installato di tale dispositivo ha development token e si dovrebbe inviato spinte a tale dispositivo utilizzando development certificate.

  2. Se app (che è stato compilato con distribution provision profile) è installato di tale dispositivo ha production token e si dovrebbe inviato spinte a tale dispositivo utilizzando production certificate.

e, se la vostra applicazione non è ancora pubblicato, credo che APNS non accetterà production certificate, quindi probabilmente non sarà in grado di inviare spinta per le applicazioni ad-hoc.

Cosa si può fare? Ad esempio, l'app inviata ai tester che è stata compilata con development certificate.

AGGIORNAMENTO: Ho imparato questa domanda ancora una volta e trovato alcune informazioni interessanti:

  1. Scarica tutte le Ad-hoc provision profile.
  2. Aprire il profilo di fornitura da 1. con l'editor di testo.
  3. Cerca linee <key>aps-environment</key> <string>production</string>
  4. Controllare il valore della chiave aps-environment. È uguale a production?
  5. Se sì, è necessario inviare alle app ad hoc push notification con production certificate.

    Se il valore è development, è necessario inviare alle app ad hoc la notifica push con development certificate.

  6. Aprire ora il portale di provisioning iOS ->App IDs. Seleziona la tua app.
  7. Verificare se Production Push SSL Certificate è abilitato.

Se ciò non è stato di aiuto, provare ad aggiornare il profilo di provisioning ad hoc.

+0

Credo che u non sono chiari con quello che ho detto, funziona per profilo di sviluppo, ma non per distribution.I ad hoc Sono anche utilizzando 'applicazione pushmebaby' per notification.Thanks generano –

+0

Ti capisco chiaramente Leggi il mio secondo punto: 2. Se la tua app non è pubblicata in AppStore, non sono sicuro che tu possa utilizzare il certificato di produzione. – Nekto

+0

Ho anche provato con il certificato di sviluppo e il profilo di assegnazione ad hoc ma ancora non ha mostrato nulla. –

1

Le notifiche push sono talvolta un mal di testa e sono costituite da molti elementi.Se ti manca qualcosa in arrivo, il tuo PNS non funzionerà e sarà molto difficile capire perché. Come regola generale, visualizzare la seguente lista di controllo:
- Il certificato push e la chiave privata sono stati generati correttamente con l'ID app corretto (lo stesso a cui è collegato il profilo di fornitura).
- Sia il certificato che la chiave privata sono presi dallo stesso certificato PNS scaricato.
- Entrambi i file sono stati concatenati correttamente in un file .pem.
- L'applicazione gestisce le notifiche push non appena arrivano, mentre l'app è attiva.

In ogni caso, si consiglia di seguire un buon tutorial, ad esempio: http://mobiforge.com/developing/story/programming-apple-push-notification-services parola per parola. In bocca al lupo!

+0

Grazie per il tutorial, ho seguito tutti i passaggi. Non ho bisogno del file .pem perché sto usando l'app "pushmebaby' che richiede solo certificati. –

0

Come ho capito, non è possibile inviare notifiche ad un build Ad Hoc con un certificato di sviluppo. Come puoi immaginare questo scenario è ok FINO a che tu rilasci l'app. Una volta che l'app è stata rilasciata, l'invio di notifiche alla build ad hoc contenente il Cert di produzione le invierà anche ai proprietari delle app. Il modo in cui ho risolto questo problema era:

  1. Creare una nuova app in Apple che è la stessa linea di base dell'app in itunes.
  2. Creare una nuova chiave di produzione e certificato per questa app "fantasma".
  3. Costruisci la nuova app con la nuova chiave di produzione e verifica con quella build.

Ora è possibile creare un'app per testare specificamente le notifiche. Non è una soluzione elegante ma funziona.

+0

Non so perché sia ​​stato downvoted, la creazione di un bundle separato è un meccanismo legittimo per il beta test con piattaforme come HockeyApp. – Leon

1

Mi sono imbattuto nella stessa cosa e ho passato un po 'di tempo a cercare di capirlo. Ho generato un nuovo certificato di produzione, creato un profilo di provisioning Ad-Hoc (in modo che potessi testare con la notifica push durante la produzione) e nulla funzionava affatto.

Ho risolto lo script push (lato server) di conseguenza (utilizzando i nuovi file .pem generati e connettendo a ssl: //gateway.push.apple.com: 2195). La sceneggiatura mi diceva che la notifica era stata recapitata ma il mio dispositivo non lo stava effettivamente ricevendo.

Risulta che il problema era davvero sciocco! Apparentemente i token dispositivo cambiano quando si utilizza l'applicazione con il nuovo certificato (o quello o tramite Ad-Hoc). Posso solo ipotizzare il motivo per cui sono cambiati, ma tutto quello che so è che una volta che ho preso il token corretto e ho usato il mio script di test per inviare una notifica al dispositivo, ho capito!

+0

+1. Ho anche dovuto usare ssl: //gateway.push.apple.com: 2195 (necessario per rimuovere sandbox) e ho dovuto usare il token dispositivo per il certificato di produzione. – Geek

0

Ho appena superato un problema molto simile e si è rivelato essere qualcosa che probabilmente avrebbe dovuto essere ovvio ma lo posterò qui solo nel caso in cui qualcun altro sia così stupido come me.

Sto usando MoonAPNS e potrei ricevere le notifiche di sviluppo ma non la produzione. Dopo diversi giorni di girare a vuoto sono tornato in questa linea:

PushNotification push = new PushNotification(true, p12file, p12password); 

Avendo già disattese true parametro, un debug attraverso il codice del server ha mostrato questo stava tramontando se utilizzare o meno il server Sandbox - D' Oh! Passato a false e tutto andava bene.

Morale della trama: non dimenticare di indirizzare le notifiche sul server non Sandbox!

1

Oltre alla indovinare da Nekto ...

e, se la vostra applicazione non è ancora pubblicato, penso che APNS non accetterà certificato di produzione, quindi probabilmente non sarà in grado di inviare spingere alle tue app ad-hoc.

Nel frattempo posso confermare che è possibile ricevere notifiche push su app ad-hoc, anche se l'app non è ancora stata pubblicata.

0

Ho avuto lo stesso problema e dopo un sacco di testicoli finalmente ho avuto qual è il problema.

Questo perché il server apns di produzione Apple non consente più il file P12 che contiene i dati della chiave privata. Ma il server di sviluppo APN accetta il file P12 che mai se contiene la chiave privata.

Così quando si esporta il file P12 dal portachiavi è sufficiente selezionare il file del certificato di produzione senza la chiave privata e si riceveranno le notifiche sulla propria app ad hoc (anche se non pubblicate).

1

Ci sono delle liste di controllo più severe da tenere a mente durante il test di pushnotification per l'ambiente di sviluppo. Molti di questi sono già menzionati sopra. Ma questa è una cosa CHE HA RISOLTO IL MIO PROBLEMA e vorrei condividere. Spero che aiuti qualcuno. E questo è:

Si prega di essere a conoscenza del token-ID del dispositivo, che è diverso per lo sviluppo & & Ambiente di produzione.

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
     NSString *deviceTokenStr = [[[[deviceToken description] 
             stringByReplacingOccurrencesOfString: @"<" withString: @""] 
            stringByReplacingOccurrencesOfString: @">" withString: @""] 
            stringByReplacingOccurrencesOfString: @" " withString: @""]; 
     UIAlertView *alert= [[UIAlertView alloc]initWithTitle:deviceTokenStr message:Nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [alert show]; 
} 
Problemi correlati