在设备中运行我的应用程序时,我们获得的设备 token 不同,但生成 ipa 相同的应用程序并安装到同一设备,但我们获得不同的设备 token 。
这是我们使用的代码:
NSString *tempStr = [NSString stringWithFormat:@"%@",deviceToken];
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *apnID = [tempStr stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"tempStr %@", tempStr);
if(tempStr.length ==0)
{
// for simulator
tempStr = @"123";
}
[standardUserDefaults setObject:tempStr forKey:@"DeviceToken"];
请指导我们,这种行为背后的原因可能是什么。
最佳答案
从您的代码片段来看,您存储在 userDefaults 中的代码片段似乎没有被设备 token 的新值替换。您在设备控制台中获得的是正确的设备 token 。它反射(reflect)了你的 NSLog(@"tempStr %@", tempStr);
并且直接在 Xcode 运行中显示的那个来自用户
默认值。
[standardUserDefaults setObject:tempStr forKey:@"DeviceToken"];
更新:一般Device token格式如下。
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{
NSLog(@"My token is: %@", deviceToken);
NSString *strDeviceToken=[NSString stringWithFormat:@"%@",deviceToken];
strDeviceToken=[strDeviceToken stringByReplacingOccurrencesOfString:@"<" withString:@" "];
strDeviceToken=[strDeviceToken stringByReplacingOccurrencesOfString:@">" withString:@" "];
strDeviceToken=[strDeviceToken stringByReplacingOccurrencesOfString:@" " withString:@""];
if(strDeviceToken.length ==0){
// for simulator
strDeviceToken = @"123";
}
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
[standardUserDefaults setValue:strDeviceToken forKey:@"DeviceToken"]; }
关于ios - 当应用程序直接在设备中运行并创建 ipa 文件时,为什么设备 token 生成不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27793356/