Reputation: 966
I am able to get a device token from Amazon SNS using code in my iOS app. In order to create an endpoint for my application on the SNS side, I need this device token to be in the form of a text. I have tried to initialize a String object with every possible encoding available. None of the encoding options result in the correct format of the device token as it should look according to the example in Amazon SNS's documentation. It should look like this:
29z6j5c4 df46f809 505189c4 c83fjcgf 7f6257e9 8542d2jt 3395kj73
Here is my code in my AppDelegate class where I receive the device token and print every possible string encoding:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
application.registerForRemoteNotifications()
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
print(String(data: deviceToken, encoding: .ascii))
print(String(data: deviceToken, encoding: .iso2022JP))
print(String(data: deviceToken, encoding: .isoLatin1))
print(String(data: deviceToken, encoding: .isoLatin2))
print(String(data: deviceToken, encoding: .japaneseEUC))
print(String(data: deviceToken, encoding: .macOSRoman))
print(String(data: deviceToken, encoding: .nextstep))
print(String(data: deviceToken, encoding: .nonLossyASCII))
print(String(data: deviceToken, encoding: .shiftJIS))
print(String(data: deviceToken, encoding: .symbol))
print(String(data: deviceToken, encoding: .unicode))
print(String(data: deviceToken, encoding: .utf16))
print(String(data: deviceToken, encoding: .utf16BigEndian))
print(String(data: deviceToken, encoding: .utf16LittleEndian))
print(String(data: deviceToken, encoding: .utf32))
print(String(data: deviceToken, encoding: .utf32BigEndian))
print(String(data: deviceToken, encoding: .utf32LittleEndian))
print(String(data: deviceToken, encoding: .utf8))
print(String(data: deviceToken, encoding: .windowsCP1250))
print(String(data: deviceToken, encoding: .windowsCP1251))
print(String(data: deviceToken, encoding: .windowsCP1252))
print(String(data: deviceToken, encoding: .windowsCP1253))
print(String(data: deviceToken, encoding: .windowsCP1254))
}
Here are the print results:
Optional("ã*Î\u{1E}]NªÙ´\u{0E}\u{0E}±=T1ËêM¾DîT\u{1C}>p®|ð")
Optional("ã*Î\u{1E}]NªÙ´\u{0E}\u{0E}±=T1ËêM¾DîT\u{1C}>p®|ð")
Optional("ã*Î\u{1E}]NªÙ´\u{0E}\u{0E}±=T1ËêM¾DîT\u{1C}>p®|ð")
Optional("ă*Î\u{1E}]NŞŮ´\u{0E}\u{0E}ą=T1ËęMžDîT\u{1C}>pŽ|đ")
nil
Optional("„*Œ\u{1E}]N™Ÿå¥\u{0E}\u{0E}±=T1ÀÍáMæDÓT\u{1C}>pçÆ|ö")
Optional("ª*˛\u{1E}]N“äÌ·\u{0E}\u{0E}–=T1¸ŒÇM¬DôT\u{1C}>pÍfi|öÜ")
nil
nil
nil
Optional("츞嵎貴ฎ넽吱쯪蝍비᰾炍깼")
Optional("츞嵎貴ฎ넽吱쯪蝍비᰾炍깼")
Optional("츞嵎貴ฎ넽吱쯪蝍비᰾炍깼")
Optional("⫣Ỏ九�뒌ฎ㶱ㅔ䶇䒾哮㸜走粮髰")
nil
nil
nil
nil
Optional("ă*Î\u{1E}]NŞŮŚ´\u{0E}\u{0E}±=T1Ëę‡MľDîT\u{1C}>pŤ®|đš")
Optional("г*О\u{1E}]NЄЩЊґ\u{0E}\u{0E}±=T1Лк‡MѕDоT\u{1C}>pЌ®|рљ")
nil
nil
nil
Upvotes: 1
Views: 72