前言:问题最终的解决办法很简单,主要是记录分析解决问题的过程
今天下午在模拟器上适配iPhoneX时一切正常,切换真机运行时突然所有的页面都加载不出来,同时极光推送打印一大堆log(忘记截图),什么DNS解析失败,udp scoket失败,巴拉巴拉一大串,主要意思就是服务器连接失败。由于所有页面都加载不出来,检查网络请求,发现所有请求都是超时:Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." 。当时第一反应就是公司服务器挂掉了(捂脸,想的好多)!赶紧拿出自己手机打开线上app,发现线上的没问题(额,好像服务器没挂)。
既然服务器没挂,开始排查问题。首先再次切换到模拟器运行,依然正常运行没有问题,由于Xcode模拟器不支持推送,而测试机上运行的时候有一大堆的失败log,基本确定是推送的问题。
-
首先考虑可能是SDK的bug,是不是需要升级到最新版本,查看SDK版本,目前已经是最新版,不是需要升级解决的问题。再次对照文档的集成步骤查看,代码也没有问题,由于推送功能处没有修改,而且一直是正常使用的,想着可能是Xcode抽风,把测试机上的版本卸载掉重新运行。然而运行后问题并没有解决,但是极光打印的失败log变了,这次直接没有走
didRegisterForRemoteNotificationsWithDeviceToken:
谷歌了一下不走
didRegisterForRemoteNotificationsWithDeviceToken:
方法的原因,看到有因为集成环信重写这个方法而没走极光注册device token导致问题的,而我项目中没有集成其他功能重写这个方法。检查了推送证书也没有过期,再次检查了项目中推送的相关配置也没有问题。最后检查网络问题,公司的3个Wi-Fi账号全部切换尝试一遍问题依然存在,第四次打开自己的4G网络,把测试机和Mac都连上个人热点,再次运行,问题解决了!再切换回公司内网也没问题了。。