iPhone registerForRemoteNotificationTypes ne génère pas d'erreur mais ne déclenche pas le délégué qui donne le jeton de périphérique
Je développe une application iPhone qui a besoin de notifications push. J'ai suivi les instructions pour la création de certifications et la modification de l'ID de l'application. Je ne suis pas totalement sûr que je l'ai fait correctement, mais je n'ai suivi les instructions. Une idée de comment je peux vérifier pour voir si c'est OK?
Quand j'ai couru dans l'émulateur j'ai eu un message d'erreur disant que l'émulateur n'a pas en charge les notifications push. C'était un peu attendu.
BTW: j'ai semble à cette question il y a quelques temps. Il semble toujours être une prison-téléphone brisé. Mon téléphone n'est PAS à la prison brisée.
Mais quand je debug sur l'iPhone, le didRegisterForRemoteNotificationswithdevicetoken méthode n'est jamais tiré. Je serai ravi de t'aider. Mon code qui suit.
-(void)applicationDidFinishLaunching:(UIApplication *)application
{
rootController.delegate = self;
[window addSubview:rootController.view];
[window makeKeyAndVisible];
[[UIApplication sharedApplication]
registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound)];
}
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *str =
[NSString stringWithFormat:@"%@",deviceToken];
NSLog(str);
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err
{
NSString *str = [NSString stringWithFormat: @"Error: %@", err];
NSLog(str);
}
source d'informationauteur Rick Leinecker
Vous devez vous connecter pour publier un commentaire.
Habituellement si
didRegisterForRemoteNotificationsWithDeviceToken
n'est jamais appelée, c'est parce que vous êtes à l'aide d'un profil de configuration qui n'est pasAPS-entitled
. Si vous app est une production de l'app, il doit être signé avec un profil de distribution pour la pousse à travailler. Si c'est une application de développement, vous devez vous connecter avec un profil de développement.EDIT: Il est également utile de noter que la
provisioning profile
devez utiliser explicitement un id de lot. Pousse envoyé à rien signé avec un générique de profil ne seront pas livrés.J'ai eu le même problème.
Pour moi, c'était le paramètre de notification pour l'Application avait tout éteint.
Si dans les paramètres iOS app notifications sont désactivées, cette méthode ne sera pas appelée.
Une fois que je me suis tourné sur un type de notification, il a commencé à travailler.
Settings App->Notification Settings->[My App]
Découvrez TN2265qui a des conseils pour le débogage de notification push problèmes. J'ai eu exactement ce problème aujourd'hui et il s'est avéré que le WiFi était désactivé sur votre iPod Touch. Puisque vous avez dit que vous travaillez à partir d'un iPhone. ce n'est probablement pas, mais il vaut la peine de vérifier la note technique pour d'autres possibilités.
Vérifier vos paramètres de pare-feu.
De Scott K la Réponse de:
Selon la documentation d'Apple "Dépannage des Notifications Push," "Si ni délégué de rappel d'application:didRegisterForRemoteNotificationswithdevicetoken: ni l'application:didFailToRegisterForRemoteNotificationswitherror: est appelé, ce qui signifie que cette connexion n'est pas encore été establihed."..."Le système peut ne pas disposer d'une connexion Internet..aiplane mode."
Je vais voir ce comportement en tant que bien, mais PAS à cause du manque de connectivité à l'internet, mais parce que, comme IrFan a souligné, les notifications sont désactivées pour l'application, dès que vous activez les notifications, la méthode des feux.
Solution
1) Ne dépendent PAS l'une de ces délégué méthodes jamais appelé.
2) Si, et quand, vous recevez un délégué de rappel, la loi sur elle.
3) le Manque de connectivité réseau, les notifications push être désactivé pour l'application, les points d'accès n'est pas activé, ou ? va provoquer les délégués à ne PAS être appelé.
Si vous êtes à la compilation à l'aide de l'iOS8+ SDK (par exemple xcode 6+), puis le obsolète iOS7 méthodes de l'API sont ignorées silencieusement et vous n'aurez pas d'erreur.
Vous besoin de quelque chose comme cela si vous voulez soutenir iOS7 et 8:
Si vous rencontrez des problèmes avec
aps-environment
absent de votre profil, vous aurez au moins obtenir une erreur utile rappel avecdidFailToRegisterForRemoteNotificationsWithError
J'ai fait face à la même question dans iOS 11.3 de l'appareil dans le cas où aucun délégué méthodes ont été appelé. Ainsi, selon la documentation d'Apple :-
https://developer.apple.com/library/content/technotes/tn2265/_index.html
Plus loin,
J'ai essayé la connexion à un autre réseau et à nouveau de démarrer l'exécution du registre de notification de l'opération et le tour est joué!, il a travaillé comme un charme. Donc, je pense qu'il y a un problème dans l'enregistrement de la notification d'appel ni de la délégué méthodes.