デバイストークン (NSData) を NSString に変換するにはどうすればいいですか? 質問する

デバイストークン (NSData) を NSString に変換するにはどうすればいいですか? 質問する

プッシュ通知を実装しています。APNS トークンを文字列として保存したいと思います。

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken
{
    NSString *tokenString = [NSString stringWithUTF8String:[newDeviceToken bytes]]; //[[NSString alloc]initWithData:newDeviceToken encoding:NSUTF8StringEncoding];
    NSLog(@"%@", tokenString);
    NSLog(@"%@", newDeviceToken);
}

コードの最初の行は null を出力します。2 行目はトークンを出力します。newDeviceToken を NSString として取得するにはどうすればよいですか?

ベストアンサー1

Swift でこれを実行する方法を探している人がいたら:

Swift 3Dataでは、値のセマンティクスを備えた 型が導入されました。 をdeviceTokenString に変換するには、次のようにします。

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

古い回答NSData:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    let tokenChars = UnsafePointer<CChar>(deviceToken.bytes)
    var tokenString = ""

    for i in 0..<deviceToken.length {
        tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]])
    }

    print("tokenString: \(tokenString)")
}

おすすめ記事