Swift 3 - Device Tokens werden nun als '32BYTES' geparst
Ich habe gerade aktualisiert von Xcode 7 8 GM und inmitten der Swift 3-Kompatibilität Probleme, die ich bemerkt, dass mein Gerät Token haben aufgehört zu arbeiten. Jetzt nur noch Lesen '32BYTES'.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
print(deviceToken) //Prints '32BYTES'
print(String(data: deviceToken , encoding: .utf8)) //Prints nil
}
Vor dem update war ich in der Lage, senden Sie einfach die NSData zu meinem server, aber jetzt bin ich eine harte Zeit, die tatsächlich analysieren der token.
Was vermisse ich hier?
Edit: ich habe gerade die Prüfung der Konvertierung zurück zu NSData und ich sehe die erwarteten Ergebnisse. So, jetzt bin ich nur verwirrt über die neuen Daten geben.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
print(deviceToken) //Prints '32BYTES'
print(String(data: deviceToken , encoding: .utf8)) //Prints nil
let d = NSData(data: deviceToken)
print(d) //Prints my device token
}
Kommentar zu dem Problem
Ändern zu
NSData
druckt einfach die Beschreibung
der NSData
. Sie noch nicht einen string aus. InformationsquelleAutor der Frage user1537360 | 2016-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort Rok Gregorič
Ich hatte das gleiche problem. Dies ist meine Lösung:
InformationsquelleAutor der Antwort Oleg
Hier ist mein Swift 3 Erweiterung erhalten Sie eine Basis-16-codierten hex-Zeichenfolge:
InformationsquelleAutor der Antwort phatmann
Den device-token hat nie einen string und schon gar nicht eine UTF-8-codierte Zeichenfolge. Es ist Daten. Es sind 32 bytes, undurchsichtige Daten.
Die einzige gültige Weise zu konvertieren, die undurchsichtige Daten in eine Zeichenfolge zu codieren, die es - normalerweise durch einen base64-Codierung.
In Swift 3/iOS 10, verwenden Sie einfach die
Data base64EncodedString(options:)
Methode.InformationsquelleAutor der Antwort rmaddy
Versuchen Sie dies:
InformationsquelleAutor der Antwort user
versuchen, diese
InformationsquelleAutor der Antwort bluenowhere
Dieser war nicht angegeben, wie eine offizielle Antwort (habe es in einem Kommentar), aber ist das, was ich letztendlich auch Tat, um meinen token wieder in Ordnung.
InformationsquelleAutor der Antwort Bill Burgess
InformationsquelleAutor der Antwort PacoG
Die beste und einfachste Weg.
InformationsquelleAutor der Antwort Maselko
Habe ich nur dieses,
gab es das Ergebnis identisch,
InformationsquelleAutor der Antwort satheeshwaran
Get-device-token mit der richtigen format.
InformationsquelleAutor der Antwort Basir Alam