iOS APNS 部分设备获取不到 DeviceToken

1,639 阅读2分钟

现象

下班前出一个测试包,打算开开心心心回家,被测试同事喊住,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:功夫不负有心人。

果然是:你所经历的都是别人经历过的。

截屏2022-01-20 下午4.38.57.png

下面是回答

截屏2022-01-20 下午4.41.49.png 原文地址

大意上说的是:这个问题会出现在测试环境上

问题是:给测试的是ADHoc环境哦,这样还是获取不到,难道上线测? 那肯定不能够?有问题了肯定就有解决方法

问题原因(猜测)

到这里也就大概可以猜测问题原因:由于设备长期处于内网,导致在获取DeviceToken的时候,连接不上APNs 获取不到服务认证,由于是测试环境,可能会存在一些数据缓存。所以即使立刻切换成外网依旧获取不到DevicToken。

处理方式:先让手机出去外网环境,放置一段时间,然后卸载APP,再关机,稍后重启,再运行APP。OK,all the best。

最后提醒各位小伙伴,遇到这种情况还是要先检查证书、配置项、通知权限和网络情况哦~~~