2011-10-23 8 views
11

Mi sto strappando i capelli cercando di far funzionare le notifiche push! Sto seguendo this tutorial praticamente senza alcun risultato. Ho cancellato xcode diverse volte, ho rifatto l'intero certificato di sviluppo di Apple, ho ripulito il mio portachiavi di login alcune volte. Questo ha aiutato alcuni problemi, ma alla fine sono ancora bloccato.notifiche push Apple - nessun 'aps-environment' valido ha provato tutte le soluzioni che ho visto sul web?

quello che penso ho bisogno di fare (dalla lettura di esperienze di altre persone con questo): 1) Il mio cert openssl e necessità chiave di essere a parlare con il server di Apple 2) L'ID app con questo OpenSSL cert ha un provisioning profilo associato ad esso. 3) La build (in xcode) deve avere il profilo di provisioning appropriato associato 4) L'identificativo di build (in xcode) deve avere lo stesso testo dell'ID dell'applicazione con il profilo di provisioning 4) ???

Per quanto posso dire, tutto questo è ok:

  1. mio certificato SSL + parlare chiave ben al server di Apple (ignorare l'errore, ho ancora ottenere un prompt alla fine):

MacBook-Pro:apple_dev_certification nflacco$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -key xxx.pem -cert xxx.pem Enter pass phrase for xxx.pem: CONNECTED(00000003) depth=1 /C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C verify error:num=20:unable to get local issuer certificate .....

2,3,4) Quando creo un nuovo progetto, esso non ottiene mai l'ip di applicazione (impostazioni di build-> info-bundle identifier). Se il mio profilo di provisioning corrisponde a "com.xxx", l'app sarà sempre "com.xxx.FOO", quindi viene selezionato il profilo di provisioning del team IOS predefinito. Corro l'applicazione in quel modo, e ottengo:

2011-10-22 22:42:45.086 VVV[3552:707] Failed to get token, error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x16d140 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}

4 segue) voglio usare il mio profilo di provisioning che utilizza la mia app id con la spinta abilitato, quindi a cambiare l'identificativo applicazione per 'com.xxx', e selezionare il profilo appropriato nell'opzione di firma del codice nel menu di costruzione. Installarlo sul mio iPhone, stessa cosa :(

Le uniche cose che mi vengono in mente:?

  • mio profilo di provisioning non è correggere ho fatto uno nuovo parecchie volte , cancellato il tutto esistente quelli in Xcode organizzatore, ma questo non ha aiutato .
  • codice è ancora sempre firmato con il team profilo invece del mio nuovo uno? c'è un modo per garantire questo?

Tutte le idee su cosa dovrei fare qui? Questo non può essere così complicato. Dovrei semplicemente pulire la mia HD e reinstallarla da zero e spero che funzioni?

+0

Quindi il problema è che l'applicazione non riesce a registrare per la spinta? Sono confuso dal momento che stai citando un sacco di fattori non correlati come i certificati SSL. –

+0

Sì, è corretto. Ho appena menzionato le altre cose per confermare che il certificato funziona effettivamente con gli APN e la firma del codice per confermare il corretto profilo di provisioning è utilizzata per l'app. – nflacco

risposta

14

Sai di cosa si trattava? Il mio ID app.

foo.bar viene considerato come foo.bar.* (Che non è consentito)

bisogna avere foo.bar.xxx

enter image description here

+1

cosa intendi con questa risposta? cosa dovrei rinominare o cambiare –

0

Penso che per push è necessario un file Entitlements.plist che abbia una chiave aps-environment, con un valore di "produzione". Ho appena finito di farlo funzionare (di nuovo) per la mia app. Altre risposte qui mi hanno aiutato a far apparire la finestra Organizer dopo che ho fatto l'archivio, ma poi ho ricevuto il tuo errore.

Ho dovuto anche chiudere Xriavviare XCode con una certa frequenza, toccare impostazioni che in realtà non cambiano, eliminare il vecchio certificato pre-push e aggiungerne uno nuovo, ecc. Ecc. Molte delle impostazioni in XCode non lo hanno In realtà cambiano, ma sembra che toccarli li abbia fatti iniziare a funzionare.