1. ホーム
  2. ios

[解決済み] Swift 3 - デバイストークンが '32BYTES' としてパースされるようになりました。

2023-02-09 04:15:11

質問

私はちょうど Xcode 7 から 8 GM にアップデートし、Swift 3 互換性の問題の中で、私のデバイストークンが機能しなくなったことに気づきました。彼らは今、'32BYTES'を読むだけです。

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
    print(deviceToken) // Prints '32BYTES'
    print(String(data: deviceToken , encoding: .utf8)) // Prints nil
}

アップデート前は、単に NSData をサーバーに送信することができましたが、今は実際にトークンを解析するのに苦労しています。

私はここで何を見逃しているのでしょうか。

編集: NSDataに変換するのをテストしてみたところ、期待通りの結果が出ています。だから今、私は新しいデータ型について混乱しています。

    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
}

どのように解決するのですか?

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let token = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
    print(token)
}