2011-12-24 6 views
10

Sto cercando di implementare le notifiche push per la mia applicazione iOS 5 dalla guida di Ray Wenderlich: http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12.iOS: come registrarsi per le notifiche push?

Ho inserito il seguente nel mio metodo didFinishLaunchingWithOptions nel mio AppDelegate:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
    (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

Quando si esegue l'applicazione sul mio dispositivo (non simulatore) il popup/avviso che mi dice di accettare le notifiche push non viene visualizzato . Ho inserito un debug-point sulla linea, e posso vedere che viene chiamato lo registerForRemoteNotificationTypes.

Perché non sta succedendo nulla?

risposta

7

Forse, elimina la tua app e riprova. Quella finestra di dialogo appare solo una volta. Ma non sono sicuro che quella finestra apparirà di nuovo quando reinstallerai quell'app.

È anche possibile accedere all'app delle impostazioni nel centro notifiche, verificare se l'app è presente nell'elenco.

È inoltre possibile aggiungere un punto di interruzione e verificare se execRegisterForRemoteNotificationsWithDeviceToken viene eseguito.

+0

Ho provato a eliminare l'app dal dispositivo senza esito positivo. L'app non si trova nel centro di notifica. Inoltre il 'didRegisterForRemoteNotificationsWithDeviceToken' o' didFailToRegisterForRemoteNotificationsWithError' non viene mai chiamato. – dhrm

+0

Hai impostato l'identificatore di pacchetto corretto? Stai usando un ID app jolly? – YuAo

+3

Grazie per la risposta. Il problema era che dovevo rigenerare il mio profilo di provisioning dopo aver abilitato le notifiche push per il certificato. – dhrm

3

Ho avuto questo problema esatto (con lo stesso tutorial non meno), e ho scoperto che stavo firmando il codice con il profilo di provisioning sbagliato. In particolare, ho attivato solo le notifiche push "Produzione" per la mia app (dal momento che non volevo creare certificati due volte ecc.) Ma le mie Impostazioni di compilazione in Xcode utilizzavano "Sviluppo iPhone" come "Identità di firma del codice" predefinita per "Release", piuttosto che "iPhone Distribution" come avrebbe dovuto essere. Questa sembrava essere l'impostazione predefinita nella mia app di test.

Speriamo di poter fermare qualcun altro perdere tempo sullo stesso problema.

+0

Stesso tutorial, stesso problema. Sto eseguendo il debug build legato al dispositivo, e ho l'identità di firma di sviluppo ... Quando dici "Ho attivato solo" Produzione "notifiche push per la mia app", potresti approfondire cosa significa? –

1

Da iOS 8 c'è un nuovo metodo per questo. Direttamente dal UIApplication.h:

- (void)registerForRemoteNotifications NS_AVAILABLE_IOS(8_0); 

chiamata a questo si traduca in application:didRegisterForRemoteNotificationsWithDeviceToken: o application:didFailToRegisterForRemoteNotificationsWithError: di essere chiamato sul delegato applicazione.

Nota: queste richiamate verranno eseguite solo se l'applicazione è stata registrata correttamente per le notifiche utente con registerUserNotificationSettings: o se è abilitata per Aggiornamento app in background.