友盟获取devicetoken===nsdata转成nsstring为空问题的解决( IOS为什么获取不到设备的 DeviceToken)
转载
首先,请确保用的是真机测试,而不是模拟器。
然后,请确定您的证书是否导入正确 确认App首次运行有没有弹出打开通知的对话框
如果没有的话,请确定:
首先确认App是第一次安装运行没有弹出(系统只提示一次)
可以把App删除后,再重新build运行一次
如果确实是第一次安装运行且没有弹出,请仔细按照证书配置的要求重新生成一遍Provisioning Profiles。
您还可以先通过 didFailToRegisterForRemoteNotificationsWithError:(NSError *)err
{
NSString *error_str = [NSString stringWithFormat: @"%@", err];
NSLog(@"Failed to get token, error:%@", error_str);
}
确定下是什么错误。 如果有的话,请确定获取device token的方法是正确的。
方法1:在 didRegisterForRemoteNotificationsWithDeviceToken 中添加如下语句
NSLog(@"%@",[[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""]);
方法2:在 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中 开启UMessage的Log,然后寻找deviceToken的字段
//for log
[UMessage setLogEnabled:YES];
以上任一方式都可在控制台获取一个长度为64的测试设备的DeviceToken串
|
如果还是不行IOS首先用以下代码判断有木有错误: didFailToRegisterForRemoteNotificationsWithError:(NSError *)err
{
NSString *error_str = [NSString stringWithFormat: @"%@", err];
NSLog(@"Failed to get token, error:%@", error_str);
}
同时:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
[UMessage registerDeviceToken:deviceToken];
NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken success");
NSLog(@"%@",[[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""]);
}
其中[UMessage registerDeviceToken:deviceToken];不能注释掉。 如果还是不行的话,可以再次对app进行卸载重装。
|