在设备中运行我的应用程序时,我们以不同的方式获取设备令牌,但生成ipa相同的应用程序并安装到同一设备但我们获得了不同的设备令牌。
以下是我们使用的代码:
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"];
请指导我们,这种行为背后的原因可能是什么。
答案 0 :(得分:1)
从您的代码段看起来,您存储在userDefaults中的内容似乎没有被设备令牌的新值替换。您在设备控制台中获得的是正确的设备令牌。它反映了您的NSLog(@"tempStr %@", tempStr);
,Xcode中显示的那个直接来自用户
默认值。
[standardUserDefaults setObject:tempStr forKey:@"DeviceToken"];
更新:通常,设备令牌的格式如下。
- (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"]; }