J'ai un problème lié au jeton d'appareil APNS. Avant d'utiliser Xcode 10.2 et iOS 12.1. À ce moment, j'obtenais le jeton d'appareil dans la méthode déléguée
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
Je m'inscris à APNS comme ceci et cela fonctionnait bien.
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
if(!error){
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
}];
Désormais, une fois iOS 13 installé sur mon appareil iPhone et en utilisant Xcode 11, la méthode déléguée didRegisterForRemoteNotificationsWithDeviceToken n'est plus appelée. Impossible de comprendre ce problème. J'ai déjà fait des recherches à ce sujet, je sais qu'il y a des changements dans l'obtention du jeton à partir de la méthode déléguée mais dans mon cas, la méthode déléguée n'est même pas appelée. Encore une fois, cela fonctionne bien pour iOS 12.
Réponses:
Redémarrez simplement votre iPhone. C'est aussi simple que cela et dans 90% des cas, cela résoudra votre problème.
la source
Connectez-vous sur https://appleid.apple.com/ , puis ouvrez l'url " https://developer.apple.com/account/ios/identifier/bundle " ou " https://developer.apple.com/account/resources / certificats / liste ".
Tout d'abord, créez deux nouveaux certificats: (1) Versions de développement Apple Development Sign de vos applications iOS, macOS, tvOS et watchOS. Pour une utilisation dans Xcode 11 ou version ultérieure. (2) Apple Distribution Signez vos applications pour les soumettre à l'App Store ou pour une distribution Ad Hoc. Pour une utilisation avec Xcode 11 ou version ultérieure.
Recherchez ensuite le menu "Identifiants" via l'url " https://developer.apple.com/account/resources/identifiers/list ". Modifiez vos identifiants de votre application, assurez-vous que le certificat SSL de développement et le certificat SSL de production sont ajoutés aux notifications push.
Ensuite, ouvrez le menu "Profils" via l'url " https://developer.apple.com/account/resources/profiles/list ". Assurez-vous que les certificats en tant que type de DistributionFor qui seront utilisés dans Xcode 11 ou tard, et enregistrez
Enfin, téléchargez le fichier de profil d'approvisionnement et les fichiers de certificats CA créés sur votre MAC, qui seront ajoutés à XCode et à l'application de porte-clés en double-cliquant séparément sur les fichiers.
De plus, n'oubliez pas de redémarrer votre téléphone portable et assurez-vous d'avoir correctement configuré la notification à distance.
la source
J'ai également rencontré le même problème. J'ai essayé de nombreux scénarios. J'ai réussi après avoir effectué les étapes ci-dessous:
registerForRemoteNotifications
méthode dans le thread principal.Dans mon cas, j'obtenais un jeton d'appareil, mais il y a un retard dans la réponse (je pense en raison de l'enregistrement des notifications à distance dans un fil d'arrière-plan). Mais après avoir bougé
[[UIApplication sharedApplication] registerForRemoteNotifications]
dans le fil principal, tout fonctionne bien.Voici mon code:
J'espère que cela vous aidera.
la source
Je viens de résoudre ce problème de cette façon en suivant les étapes ci-dessous.
Ajoutez un peu d'impression dans la méthode didRegisterForRemoteNotificationsWithDeviceToken et maintenez les périphériques connectés.
Ensuite, cela fonctionne bien.
J'espère que cela aide quelqu'un.
la source
Il est lié à DeviceSupport manquant dans votre installation XCode, pour la version de plate-forme utilisée par votre appareil de déploiement.
Dans mon cas, la plate-forme 13.1 était manquante. Pour résoudre, ajoutez simplement le DeviceSupports dans le dossier
Vous pouvez télécharger DeviceSupport manquant à partir de: https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport
la source
Essaye ça.
Ça a marché pour moi.
la source