您的位置:首页 > 移动开发 > IOS开发

ios APNS 消息一直接收不到解决办法

2016-11-19 15:31 507 查看

   下午的时候,我们的测试环境一直接收不到APNS的消息(早上的时候收到了两条)。经过处理最后解决了问题,记录下,其他码龙朋友看到的话,也可以参考参考下。



具体有如下几条来排除问题的方案:
1.首先确保打开当前APP的消息推送允许设置。(Iphone设置里面打开,允许APP接收推送消息)



2. 打印下deviceToken看看是否有值,或者直接在下面注册成功的函数里面打个断点,看程序进不进来,单步调试下。
  (一般来说,只要deviceToken有值,就说明APNS已经注册成功了。否则的话,要去研究并且添加下APNS注册函数。
同时应该注意,有deviceToken返回,也不一定实时收到APNS的推送消息(因为我们牛逼的greatewall,或者网络丢包)。多推几条信息,就可以收到,一般来说APNS到达率还是可以的。)


我的程序没有deviceToken打印出来,在下面这个函数里面打断点也没有进来。


3.确保当前登陆的手机号唯一登陆APP,一个手机号多个APP登陆的话,有可能也会收不到。


4.重新推出APP,重新登录下。(意味着重新注册下APNS)


5.实在还是没有deviceToken的话,把当前的APP删除,重新装一下。---我是用这种办法,有了deviceToken,然后有了APNS的推送

注册成功后,Apple会返回一个全球唯一的deviceToken给手机客户端,然后通过下面的函数,就可以捕获。

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
//发送token给服务端
if (deviceToken)
{
currentDeviceToken = [[[[deviceToken description]stringByReplacingOccurrencesOfString:@"<" withString:@""]stringByReplacingOccurrencesOfString:@">" withString:@""]stringByReplacingOccurrencesOfString:@" " withString:@""];

//        UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"" message:currentDeviceToken delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
//        [alterView show];
NSLog(@"deviceToken:________%@",currentDeviceToken);
}
}


注册失败,会通过下面的函数来返回注册失败的错误原因
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"注册推送失败:%@",error);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐