为什么当应用程序直接在设备中运行并创建ipa文件时,设备令牌生成方式不同?

时间:2015-01-06 06:36:18

标签: ios iphone apple-push-notifications

在设备中运行我的应用程序时,我们以不同的方式获取设备令牌,但生成ipa相同的应用程序并安装到同一设备但我们获得了不同的设备令牌。

Screenshot

enter image description here

以下是我们使用的代码:

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"];

请指导我们,这种行为背后的原因可能是什么。

1 个答案:

答案 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"];   }