Obtenez de l'appareil jeton pour le push notification
Je suis en train de notifications push. J'ai écrit le code suivant pour récupérer un appareil jeton.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//Override point for customization after application launch.
//Add the view controller's view to the window and display.
[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];
NSLog(@"Registering for push notifications...");
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
return YES;
}
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken];
NSLog(@"This is device token%@", deviceToken);
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSString *str = [NSString stringWithFormat: @"Error: %@", err];
NSLog(@"Error %@",err);
}
Je suis en mesure d'exécuter l'application sur un périphérique, mais pas en mesure d'obtenir l'id de périphérique de la console.
Je n'ai pas de problèmes avec la certification et les profils de configuration.
- Avez-vous suivi toutes les étapes? Si vous n'êtes pas avoir un problème avec la certification et de la fourniture ainsi que le code, alors vous devez faire quelque petite erreur. Comme..dites-moi, vous exécutez l'application sur un périphérique réel d'attacher la même avec votre système? Aussi êtes-vous remarquer que vous obtenez le dispositif de jeton dans le journal de la console ou pas? Avez-vous d'activer les notifications Push sur iPhone?
- Je ne suis pas en mesure d'obtenir de l'appareil jeton sur le journal de la console.
- Je suis en cours d'exécution de l'application sur le périphérique réel avec toute erreur.
- Avez-vous activer l'APN comme indiqué dans le lien sur l'iPhone?
- oui j'ai activé l'APN..mais le dispositif de jeton n'est pas en mesure d'aller chercher sur cosole
- - (void)application:(UIApplication *)application didRegisterForRemoteNotificationswithdevicetoken:(NSData *)devToken { } méthode ne fonctionne pas du tout. quand je vois dans les paramètres de mon application est de permettre de notification push qui signifie qu'il est inscrit mais ne suis pas en mesure de voir le dispositif de jeton sur la console.
- Faire 1 chose : vérifier ce lien : mobiforge.com/developing/story/... Ensuite, suivez toutes les étapes en conséquence. Votre problème doit résoudre
- Ce que tu veux dire par la console? Simulateur? BTW notification push coutume de travail sur simulateur
- Essayez également de l'impression de la valeur de str
- Unclocked iphone sont en mesure d'obtenir de l'appareil jeton?
- oui..le mien est également débloqué et j'obtiens le même.
Vous devez vous connecter pour publier un commentaire.
REMARQUE: ci-dessous La solution ne fonctionne plus sur iOS 13+ appareils - il sera de retour à ordures de données.
Veuillez utiliser le code suivant à la place:
Solution qui a travaillé avant l'iOS 13:
Objective-C
Swift 3.0
Pour obtenir un Jeton Appareil, vous pouvez faire en quelques étapes:
1) Activer l'APN (Apple Push Notification Service) pour à la fois Développeur, Certification et de Distribuer de Certification, puis re-télécharger ces deux fichiers.
2) Retélécharger à la fois le Développeur de Provisionnement et de Distribuer le fichier de configuration.
3) Dans Xcode, interface: configuration de la mise en service pour le PROJET et des OBJECTIFS avec deux fichier de provisionnement ont de téléchargement.
4) Enfin, vous devez ajouter le code ci-dessous dans AppDelegate fichier de Jeton de l'Appareil
(remarque: exécutez l'application dans le réel de l'appareil).
Code suivant est utilisé pour la restauration de l'appareil jeton.
description
.Et la Swift version de la Wasif réponse:
Swift 2.x
Mise à jour pour Swift 3
description
sur des données binaires (voir la réponse)Si vous n'obtenez toujours pas de dispositif de jeton, essayez de placer le code suivant afin d'enregistrer votre appareil pour le push notification.
Il travaillera également sur ios8 ou plus.
À l'aide de
description
que beaucoup de ces réponses suggèrent est le mauvaise approche - même si vous l'obtenir pour fonctionner, il va se casser dans iOS 13+.Au lieu de cela, vous devez vous assurer que vous utilisez les données binaires, et non pas simplement une description de celui-ci. Andrey Gagan adressé à l'Objectif C très bien, mais heureusement, c'est beaucoup plus simple à swift:
Swift 4.2 travaille dans iOS 13+
À partir de iOS 13 Apple a changé
[deviceToken description]
de sortie. Maintenant, c'est comme cela{length=32,bytes=0x0b8823aec3460e1724e795cba45d22e8...af8c09f971d0dabc}
qui est incorrect pour appareil jeton.Je suggère l'utilisation de cet extrait de code pour résoudre un problème:
Il va travailler pour iOS13 et inférieur.
description
a toujours tort. Et ce n'est qu'une solution possible pour convertir le jeton à une chaîne. Une solution beaucoup plus simple est de convertir leNSData
à unNSString
en utilisant la norme de l'encodage base64.Objective-C pour iOS 13+, avec l'aimable autorisation de Wasif Saood la réponse de
Copiez et collez code ci-dessous dans AppDelegate.m pour imprimer l'appareil APN jeton.
Obtenir de l'appareil jeton dans Swift 3
Dans votre AppDelegate, dans le
didRegisterForRemoteNotificationsWithDeviceToken
méthode:Mis à jour pour Swift:
Dans un paramètre de construction jeu de signature de code Disposition de Profil si vous avez APN Permettent de certificat, alors vous aurez certainement l'id de jeton. et supprimer
Disposition Profil : Automatique
et mis à
Disposition du Profil : Votre disposition de profil de certificat.
Afin d'obtenir le dispositif de jeton utilisez le code suivant, mais vous pouvez obtenir le dispositif de jeton en utilisant uniquement le périphérique physique. Si vous avez obligatoirement envoyer l'appareil jeton puis lors de l'utilisation du simulateur, vous pouvez mettre la condition ci-dessous.