devicetoken 问题
「Not get devicetoken,获取不到 devicetoken 」
说明:偶尔的报错是网络问题,可以忽略,只要实际的操作最终可以成功即可,如果连续 5 次报错,没有获取到 token 和 registrationID,集成失败,那么请根据以下排查步骤进行
从 JPush 3.0.9 版本开始,取不到 token 的情况下也可以取到 registrationID,但收不到通知消息,所以不能以取到 registrationID 为判断标准
iOS 13 系统取不到 token 的问题请务必看到最后一点说明
xcode 8 注意打开 Push Notification !!
请检查你的 pushconfig 里的 Appkey 与官网-应用信息中的 AppKey 是否一致
Bundle ID 有 3 处需要检查是否一致:
- 你的应用详情中的 Bundle ID ;
- 你的 info.plist 中的 Bundle ID ;
- 你的 profile 文件中的 AppID 对应的 Bundle ID
还有 xcode-buildsetting-codesigning 里的 provisions profile 后面是否是你创建的相应的 profile 文件名
看一下手机的通知中心是否不允许接收通知
代码中是不是多处获取 devicetoken(比如说使用环信),一处获取 devicetoken 就可以了
切换网络!不要用内网,VPN 之类的可能会导致不允许连接 Apple 服务器
换一个 iOS 设备进行测试如果可以,而这个不行,请去 Apple 账号下 Certificates,Identifiers & Profiles 选择 Devices ,将不能获取到 deviceToken 的设备 Remoke 掉,再重新注册该 Devices。
如果你使用的是 unity 插件,unity2017 可能把推送功能关闭了,手动在代码中打开:将 UNITY_REMOTE_NOTIFICATIONS 设为 1。
如果测试环境是 OK 的,打包后报错,检查打包后是否缺少这个文件 archived-expanded-entitlements.xcent
此时可能还会报这个错误,参考本帖,开发者使用 cordova 插件时曾出现过:No valid 'aps-environment' entitlement string found for application 'com.rccchina.ProjectLeads': (null).
找到 TARGET -> Build Setting -> Code Signing Identity -> Code Signing Entitlements *****Entitle-release.plist 看看有没有 aps-environment 字段,没有补上,建议阅读本文,可以从 demo 中找到 Entitlements.plist 拖入你自己的工程。
<plist version="1.0"> <dict> <key>aps-environment</key> <string>production</string> </dict> </plist>
cordova 打包的注意事项,参考开发者的分享
iOS 13 系统目前经过测试,系统本身可能存在问题,少部分手机会存在取不到 token 的问题,该问题 SDK 无法解决,大家可以用原生推送集成后测试是否可以取到 token,取不到就是系统的问题,可以尝试如下方案:
- 给手机插入 SIM 卡后再测试
- 卸载重装、重启 App、关机重启后测试
- 打生产环境的包测试
- 换别的 iOS 13 系统的手机测试
如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)
点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ
0条评论