首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将设备令牌(NSData)转换为NSString?

如何将设备令牌(NSData)转换为NSString?
EN

Stack Overflow用户
提问于 2012-02-21 13:48:39
回答 21查看 95.9K关注 0票数 174

我正在实现推送通知。我想将我的APNS令牌保存为字符串。

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

代码的第一行打印null。第二个命令打印令牌。如何将我的newDeviceToken作为NSString获取?

EN

回答 21

Stack Overflow用户

发布于 2014-07-27 18:17:02

如果有人正在寻找在Swift中做到这一点的方法:

Swift 3引入了具有值语义的Data类型。要将deviceToken转换为字符串,可以执行以下操作:

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

使用NSData的旧答案

代码语言:javascript
复制
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)")
}
票数 251
EN

Stack Overflow用户

发布于 2012-02-21 13:51:30

有人帮我做了这件事,我只是路过

代码语言:javascript
复制
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {

    const unsigned *tokenBytes = [deviceToken bytes];
    NSString *hexToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
                         ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
                         ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
                         ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];

    [[MyModel sharedModel] setApnsToken:hexToken];
}
票数 159
EN

Stack Overflow用户

发布于 2013-05-07 13:01:22

你可以用这个

代码语言:javascript
复制
- (NSString *)stringWithDeviceToken:(NSData *)deviceToken {
    const char *data = [deviceToken bytes];
    NSMutableString *token = [NSMutableString string];

    for (NSUInteger i = 0; i < [deviceToken length]; i++) {
        [token appendFormat:@"%02.2hhX", data[i]];
    }

    return [token copy];
}
票数 150
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9372815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档