Как преобразовать токен устройства типа Data из Amazon SNS в форму, которую можно указать в настройке для создания конечной точки в SNS? - PullRequest
0 голосов
/ 30 ноября 2018

Я могу получить токен устройства из Amazon SNS, используя код в моем приложении для iOS.Чтобы создать конечную точку для моего приложения на стороне SNS, мне нужен этот токен устройства в виде текста.Я попытался инициализировать объект String со всеми возможными кодировками.Ни один из параметров кодирования не приводит к правильному формату токена устройства, как это должно выглядеть в соответствии с примером в документации Amazon SNS.Это должно выглядеть следующим образом:

29z6j5c4 df46f809 505189c4 c83fjcgf 7f6257e9 8542d2jt 3395kj73

Вот мой код в моем классе AppDelegate, где я получаю возможный токен устройства и печатаю все возможные токены устройствакодировка:

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))

}

Вот результаты печати:

Необязательно ("ã * Î \ u {1E}] NªÙ´ \ u {0E} \ u {0E}± = T1ËêM¾DîT \ u {1C}> p® | ð ")

Необязательно (" ã * Î \ u {1E}] NªÙ´ \ u {0E} \ u {0E} ± = T1ËêM¾DîT \ u{1C}> p® | ð ")

Необязательно (" ã * Î \ u {1E}] NªÙ´ \ u {0E} \ u {0E} ± = T1ËêM¾DîT \ u {1C}> p® | ð ")

Необязательно (" ă * Î \ u {1E}] NŞŮ´ \ u {0E} \ u {0E} ą = T1ËęMžDîT \ u {1C}> pŽ | đ ")

ноль

Необязательно ("„ * Œ \ u {1E}] N ™ Ÿå ¥ \ u {0E} \ u {0E} ± = T1ÀÍáMæDÓT \ u {1C}> pçÆ | ö ")

Необязательно (" ª * ˛ \ u {1E}] N “äÌ · \ u {0E} \ u {0E} - = T1¸ŒÇM¬DôT \ u {1C}> pÍ if |öÜ ")

ноль

ноль

ноль

Необязательно ("  츞 嵎 ꫙ 貴 ฎ 넽 吱 쯪 쯪 비  깼   "))

Необязательно (" 츞 嵎 ꫙) 넽 吱 쯪 蝍 비 ᰾ 炍)) ")

Необязательно ("  츞 嵎 ꫙ 貴 ฎ 쯪 쯪 쯪     ")

Необязательно (" ⫣")

ноль

ноль

ноль

ноль

Необязательно ("ă * Î \ u {1E}] NŞŮŚ´ \ u {0E} \ u {0E} ± = T1Ëę ‡ MľDîT \ u {1C}> pŤ® | "š")

Необязательно ("г * О \ u {1E}] NЄЩЊґ \ u {0E} \ u {0E} ± = T1Лк ‡ MѕDоT \ u {1C}> pЌ® | рљ")

ноль

ноль

ноль

1 Ответ

0 голосов
/ 01 декабря 2018

Я беру объект Data и использую его метод base64EncodedString ().

...