我有ios项目i xcode,我需要从Appdelegate获取设备令牌以查看控制器,这里是App委托代码:
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
然后,在视图控制器中:
[super viewDidLoad];
[[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
当我第一次尝试它时,它正在工作,但下次app破解...当我从视图控制器中删除该代码时,它可以工作,所以它一定是错的......你能帮助我吗?
答案 0 :(得分:2)
首先,从手机/模拟器中删除您的应用
因为NSUserDefaults可能会为您的密钥保存错误的数据。
然后将这些代码替换为
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
if(deviceToken){
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
在viewDidLoad中,
- (void)viewDidLoad
{
[super viewDidLoad];
id token = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
if(token){
NSLog(@"I have got the token");
}else NSLog(@"no token");
}