Iphone appareil de jeton NSData ou NSString
Je suis la réception de l'iPhone jeton en forme de NSData
objet.
Quand j'ai testé mon notifications en fonction de script, j'ai seulement copié cet objet à partir du journal et les notifications s'est bien passé. Cependant, lorsque j'essaie maintenant de faire automatiquement, je suis à l'envoi de l'appareil jeton comme ASCII chaîne codée sous forme de variable
self.deviceToken = [[NSString alloc] initWithData:webDeviceToken encoding:NSASCIIStringEncoding];
La chaîne que je suis arriver a certains funky personnages et ressemble à ce "å-0¾fZÿ÷ʺÎUQüRáqEªfÔk«"
Lors de script côté serveur envoie la notification à ce titre, je ne peux pas recevoir quoi que ce soit.
Ai-je besoin pour décoder quelque chose et comment?
Le regardz
- J'ai trouvé une autre solution, ici, ressemble plus à l'avenir, alors la "description" de la méthode. stackoverflow.com/questions/1959600/...
- C'est bizarre, je pense que ce NSData* ne devrait pas être de type spécial d'objet, j'ai donc essayé d'utiliser NSUTF8StringEncoding et obtenir un résultat différent. C'est unimagable pour moi de convertir NSData à NSString avec description méthode! Certains apple documendation liés?
Vous devez vous connecter pour publier un commentaire.
Ok, j'ai trouvé une solution. Si quelqu'un a le même problème, oublier le codage ASCII, il suffit de faire la chaîne avec les lignes suivantes:
Si quelqu'un est à la recherche d'un moyen de le faire dans Swift:
Edit: Pour Swift 3
Swift 3 présente le
Data
type, avec une valeur sémantique. Pour convertir ledeviceToken
à une Chaîne, vous pouvez le faire comme suit:hexadecimalStringDescription()
J'ai trouvé cette solution mieux que iOS pouvez modifier l'utilisation de la description dans les versions futures, donc à l'aide de la description de la propriété sur les données peuvent ne pas être fiables à l'avenir.
Nous pouvons directement utiliser ce par la création de hex Jeton à partir des données jeton octets.
}
Nous pouvons également stocker l'appareil jeton dans notre NSUserdefaults et l'utiliser plus tard pour l'envoyer à notre serveur.
Je ne pense pas que c'est une bonne solution, comme vous l'avez de reconstituer la chaîne avant d'envoyer les notifications aux serveurs Apple. L'utilisation de l'encodage Base64 pour la transmission de chaînes ou quelque chose de similaire.
Une autre façon de la conversion périphérique de jeton en hexa décimal chaîne
Pour Swift 3 :
Autre Méthode
Créer extension de Données pour obtenir hexstring
Et appel de cette extension dans le