gpt4 book ai didi

ios - 保存 DeviceToken 供以后在 Apple 推送通知服务中使用

转载 作者:技术小花猫 更新时间:2023-10-29 10:41:18 26 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我从 Apple 获取设备 token ,我在 Delegate 文件中分配了一个公共(public)属性,如下所示:

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
self.dToken = [[NSString alloc] initWithData:deviceToken encoding:NSUTF8StringEncoding];
}

dToken 属性声明如下:

NSString *dToken;

@property (nonatomic,retain) NSString *dToken;

但是当我尝试从另一个文件中检索设备 token 时,我得到了空值。

+(NSString *) getDeviceToken
{
NSString *deviceToken = [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] dToken];

NSLog(@" getDeviceToken = %@",deviceToken); // This prints NULL

return deviceToken;

}

我做错了什么?

最佳答案

我建议你用这种方式将token转换成字符串:

self.dToken = [[[deviceToken description]
stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]
stringByReplacingOccurrencesOfString:@" "
withString:@""];

更新:正如许多人提到的那样,最好使用下一种方法将 NSData * 转换为 NSString *:

@implementation NSData (Conversion)
- (NSString *)hexadecimalString
{
const unsigned char *dataBuffer = (const unsigned char *)[self bytes];

if (!dataBuffer) {
return [NSString string];
}

NSUInteger dataLength = [self length];
NSMutableString *hexString = [NSMutableString stringWithCapacity:(dataLength * 2)];

for (int i = 0; i < dataLength; ++i) {
[hexString appendFormat:@"%02lx", (unsigned long)dataBuffer[i]];
}

return hexString;
}
@end

关于ios - 保存 DeviceToken 供以后在 Apple 推送通知服务中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7601011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com