2012-06-11 23 views
26

Ci sono un sacco di domande su didRegisterForRemoteNotificationsWithDeviceToken, ma tutte pongono una domanda molto diretta a cui non riesco a trovare una risposta esatta.Quando viene chiamato didRegisterForRemoteNotificationsWithDeviceToken?

Per un'app correttamente configurata per le notifiche in tutti gli altri modi e dotata di una corretta connettività di rete: quando viene richiamato didRegisterForRemoteNotificationsWithDeviceToken? Alcune scelte possibili potrebbero essere:

  1. Ogni volta che l'applicazione si avvia
  2. Solo dopo la richiesta iniziale per l'utente di accettare le notifiche push
  3. Qualcos'altro?

risposta

24

Il delegato applicazione chiamerà il metodo Dopo la registrazione di notifica remota dopo aver chiamato questo metodo nella UIApplication:

(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

Secondo: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html

When you send this message, the device initiates the registration process with Apple Push Service. If it succeeds, the application delegate receives a device token in the application:didRegisterForRemoteNotificationsWithDeviceToken: method; if registration doesn’t succeed, the delegate is informed via the application:didFailToRegisterForRemoteNotificationsWithError: method. If the application delegate receives a device token, it should connect with its provider and pass it the token.

Ora, di elaborare ulteriormente, normalmente un'app chiamerà lo registerForRemoteNotificationTypes nel tuo didFinishLaunchingWithOptions: (NSDictionary *) launchOptions nel delegato dell'applicazione. Pertanto, l'applicazione : didRegisterForRemoteNotificationsWithDeviceToken viene in genere chiamata dopo l'avvio dell'applicazione.

Modifica: L'applicazione: didRegisterForRemoteNotificationsWithDeviceToken viene ancora chiamata per la registrazione dei successivi dopo il primo.

+1

Abbiamo trovato quello che sembra essere un bug di iOS (come del v. 6), in cui il sistema operativo vi dirà che l'utente ha rifiutato tutte le notifiche anche quando questo non è vero. Questo succede solo al primo avvio: se si chiama [[UIApplication sharedApplication] enabledRemoteNotificationTypes] in didRegisterForRemote ..., si dice che sono tutti disattivati. Non lo sono, e se si invia una notifica push, l'app la otterrà.E i successivi lanci restituiranno il risultato corretto; il problema è che la maggior parte delle app viene eseguita in background, quindi non si sa quando o se si verificherà il secondo avvio. – Oscar

+2

Sei sicuro di aver fatto callRegisterForRemoteNotifications anche se sei già registrato? Sto cercando di implementare la notifica push nella mia app, e registerForRemoteNotifications ha funzionato magnificamente la prima volta, ma ora né i callback di successo o di errore vengono eseguiti nei tentativi successivi. – Bryan

+0

@Bryan: come lo risolvi? – jAckOdE

8

Quando l'app viene eseguita per la prima volta, chiederà all'utente se consentirà le notifiche remote. Se dicono di sì, verrà attivatoRegisterForRemoteNotificationsWithDeviceToken in quel momento e ogni volta che verrà attivata questa funzione quando l'app viene aperta per la prima volta. Se dicono di no, non verranno licenziati a meno che non siano entrati nelle impostazioni e abbiano consentito le notifiche sull'app.

0

Ci possono essere molti motivi, controllare alcuni motivi

  • Se si esegue l'applicazione nel simulatore, il applicazione: didFailToRegisterForRemoteNotificationsWithError: metodo sarà chiamato come le notifiche push non sono supportati nel simulatore .

  • Controllare la connessione Internet di Deice se non la si collega.

Per maggiori informazioni controllare Link

Problemi correlati