swift 3.0 Data to Ssortingng?

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {} 

Je veux que deviceToken enchaîne

mais:

 let str = Ssortingng.init(data: deviceToken, encoding: .utf8) 

str est nil

swift 3.0

Comment puis-je laisser des data à la ssortingng ?

entrez la description du lien ici

ne fonctionne pas et la réponse est il y a quelques mois, je l’avais essayé: entrer la description de l'image ici

et imprimer: entrer la description de l'image ici

s’il vous plaît !!! Essayez d’abord, puis répondez

Je suis venu chercher la réponse à la question Swift 3 Data to Ssortingng et je n’ai jamais eu de bonne réponse. Après quelques bêtises, je suis arrivé avec ceci:

 var testSsortingng = "This is a test ssortingng" var somedata = testSsortingng.data(using: Ssortingng.Encoding.utf8) var backToSsortingng = Ssortingng(data: somedata!, encoding: Ssortingng.Encoding.utf8) as Ssortingng! 

voici mon extension de données. ajoutez ceci et vous pouvez appeler data.ToSsortingng ()

 import Foundation extension Data { func toSsortingng() -> Ssortingng { return Ssortingng(data: self, encoding: .utf8)! } } 
 let str = deviceToken.map { Ssortingng(format: "%02hhx", $0) }.joined() 

J’ai trouvé le moyen de le faire. Vous devez convertir des Data en NSData :

 let characterSet = CharacterSet(charactersIn: "<>") let nsdataStr = NSData.init(data: deviceToken) let deviceStr = nsdataStr.description.trimmingCharacters(in: characterSet).replacingOccurrences(of: " ", with: "") print(deviceStr) 

Ceci est beaucoup plus facile avec Swift 3 et les versions ultérieures en utilisant:

 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let token = deviceToken.reduce("") { $0 + Ssortingng(format: "%02x", $1) } DispatchQueue.global(qos: .background).async { let url = URL(ssortingng: "https://example.com/myApp/apns.php")! var request = URLRequest(url: url) request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.httpMethod = "POST" request.httpBody = try! JSONSerialization.data(withJSONObject: [ "token" : token, "ios" : UIDevice.current.systemVersion, "languages" : Locale.preferredLanguages.joined(separator: ", ") ]) URLSession.shared.dataTask(with: request).resume() } } 

Pour étendre la réponse de weijia.wang:

 extension Data { func hexSsortingng() -> Ssortingng { let nsdataStr = NSData.init(data: self) return nsdataStr.description.sortingmmingCharacters(in: CharacterSet(charactersIn: "<>")).replacingOccurrences(of: " ", with: "") } } 

l’utiliser avec deviceToken.hexSsortingng()

Selon le document officiel d’Apple, le jeton de périphérique ne peut pas être décodé. Donc, je pense que la meilleure chose à faire est de le laisser faire.

LIEN: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html dans la section Architecture de sécurité

entrer la description de l'image ici