Ho provato moltissimo a creare una semplice e semplice app iOS in grado di ricevere notifiche push. La mia unica ragione per farlo è stabilire una procedura che alcuni altri membri del team possano utilizzare e non siano stati in grado di trovare una versione aggiornata e funzionante di tali istruzioni altrove sul Web. Il nostro negozio è abbastanza nuovo per gli sviluppatori iOS, personalmente sono completamente inesperto con gli sviluppatori iOS e Xcode. Mi sono imbattuto in decine di tutorial, articoli e post su problemi di Apple e altrove e mi sento come se potessi essere quasi lì ...
Qui è dove devo farlo (nota che sto usando Xcode 4.3 e provando inizialmente a distribuire solo su iOS 5.1, e mi accorgo che alcune cose potrebbero essere cambiate di recente rispetto alle versioni precedenti di Xcode, ma ancora una volta sono nuovo a tutti questo - e trovandolo completamente confuso e contorto):
1) Ho un profilo di provisioning sul mio iPhone con Push abilitato
2) Nel mio progetto di test Xcode ho selezionato quel profilo di provisioning come identità di firma (in Impostazioni build> Firma codice)
3) Ho il mio identificatore di bundle in Riepilogo e Informazioni> Proprietà target iOS personalizzate impostato correttamente * (Penso ??)
4) Ho registerForRemoteNotificationTypes richiamato nel didFinishLaunchingWithOptions del mio delegato
5) Ho didRegisterForRemoteNotificationsWithDeviceToken e didFailToRegisterForRemoteNotificationsWithError nel mio delegato, impostato per registrare rispettivamente il token o l'errore del dispositivo
6) Ho Abilitato i diritti controllato in Riepilogo.
7) Proprio sotto che il File Entitlements selezionato è Tinker6 (il nome del mio progetto di test), che è stato generato automaticamente quando ho selezionato Enable Entitlements
8) Nel file Tinker6.entitlements ho il seguente (che ho raccolto è corretto in base a diversi post in tutto il Web, ma che non riesco a trovare nulla di definitivo dalla stessa Apple su):
aggiornato
9) Inoltre, ho provato tutto senza un file di diritti e ho ottenuto sostanzialmente lo stesso risultato.
10) I contenuti del mio file mobileprovision includono correttamente i diritti (ho mescolato il numero e il dominio ma strutturalmente lo stesso):
<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>12355456A7.*</string>
</array>
/ fine aggiornamento
Quando provo a eseguirlo sul mio dispositivo, ottengo il seguente errore nell'output Xcode:
2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error:
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment'
entitlement string found for application" UserInfo=0x24a3b0
{NSLocalizedDescription=no valid 'aps-environment' entitlement string
found for application}
Ho provato a impostare get-task-allow su NO, aps-environment alla produzione, tutte e quattro le possibili combinazioni, stessa cosa.
Come posso superare questo? Dov'è la documentazione definitiva su questo?
- segue un ulteriore background -
* Per quanto riguarda l'ID bundle, non sono ancora chiaro su come debba essere impostato in relazione agli ID app e ID profilo nel profilo di provisioning. Nel portale di provisioning sotto ID app ho questo (di nuovo, ho decodificato il numero e il dominio):
E il set di due bundle id è impostato Ho questo:
Non sono affatto sicuro che siano corretti o se uno o entrambi debbano essere impostati su 12355456A7.com.whatever.tinker, anche se ho provato quelli precedenti nel processo senza successo ...
Nota Mi rendo conto che ci sono molti post con titoli simili, tuttavia sembrano tutti non aggiornati in base ai nomi dei file e così via, e il fatto che nessuna delle soluzioni sembri essere utile. Spero che il maggior livello di dettaglio che ho fornito garantisca una risposta di qualità. Probabilmente assegnerò una ricompensa il più presto possibile e se darai una risposta di alta qualità che porta a una soluzione, ti assegnerò la ricompensa e promuoverò la tua risposta tramite Twitter e il mio blog. Soprattutto se pubblichi un post davvero buono "ecco gli esatti 500 passi necessari per far funzionare una semplice app di notifica push che includa il provisioning e quant'altro" sul tuo blog o altro.