现象
下班前出一个测试包,打算开开心心心回家,被测试同事喊住,APNS推送开启不了!!! 一顿操作后得出结果:Device Token 获取不到
即:application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(nonnull NSData *)deviceToken 失效
问题查找
- 当前手机设备:iPhone 6sp iOS15.1
- 首先排查:证书——没问题,配置项——没问题,后台权限——已开启
- 最后就是网络了,检查是内网,切换到外网,结果还是没走。
- what fuck!!!
- 换个手机试下?
- 切换设备:iPhone 6 iOS 12.5.4
- 运行,可以正常获取到,难道是系统的原因?
- 切换设备 iPhone 11 iOS 15.1
- 运行,可以正常获取到,这。。。。
- 切回6sp,运行其他APP 同样获取不到Device Token
- 这是什么情况?6sp出问题了,之前可是好好的!!!这样回复测试估计要被打。。。本着探索的精神,继续研究。。。
开始尝试其他骚操作: 1、卸载APP重新请求通知权限——通知权限弹窗正常弹出,点击同意,还是没走
麻了~~~~
继续骚操作 2、重启大法:启动后,满怀期待,就准备拎包走人(似乎没带包),结果还是不走
3、有事找度娘:度了一地鸡毛,都是讲证书、配置、通知权限开启,并没有卵用
4、度娘搞不懂那就上stackoverflow:功夫不负有心人。
果然是:你所经历的都是别人经历过的。
下面是回答
大意上说的是:这个问题会出现在测试环境上
问题是:给测试的是ADHoc环境哦,这样还是获取不到,难道上线测? 那肯定不能够?有问题了肯定就有解决方法
问题原因(猜测)
到这里也就大概可以猜测问题原因:由于设备长期处于内网,导致在获取DeviceToken的时候,连接不上APNs 获取不到服务认证,由于是测试环境,可能会存在一些数据缓存。所以即使立刻切换成外网依旧获取不到DevicToken。
处理方式:先让手机出去外网环境,放置一段时间,然后卸载APP,再关机,稍后重启,再运行APP。OK,all the best。
最后提醒各位小伙伴,遇到这种情况还是要先检查证书、配置项、通知权限和网络情况哦~~~