devicetoken 问题


「Not get devicetoken,获取不到 devicetoken 」

说明:偶尔的报错是网络问题,可以忽略,只要实际的操作最终可以成功即可,如果连续 5 次报错,没有获取到 token 和 registrationID,集成失败,那么请根据以下排查步骤进行

从 JPush 3.0.9 版本开始,取不到 token 的情况下也可以取到 registrationID,但收不到通知消息,所以不能以取到 registrationID 为判断标准

iOS 13 系统取不到 token 的问题请务必看到最后一点说明

xcode 8 注意打开 Push Notification !!

  1. 请检查你的 pushconfig 里的 Appkey 与官网-应用信息中的 AppKey 是否一致

  2. Bundle ID 有 3 处需要检查是否一致:

    • 你的应用详情中的 Bundle ID ;
    • 你的 info.plist 中的 Bundle ID ;
    • 你的 profile 文件中的 AppID 对应的 Bundle ID
  3. 还有 xcode-buildsetting-codesigning 里的 provisions profile 后面是否是你创建的相应的 profile 文件名

  4. 看一下手机的通知中心是否不允许接收通知

  5. 代码中是不是多处获取 devicetoken(比如说使用环信),一处获取 devicetoken 就可以了

  6. 切换网络!不要用内网,VPN 之类的可能会导致不允许连接 Apple 服务器

  7. 换一个 iOS 设备进行测试如果可以,而这个不行,请去 Apple 账号下 Certificates,Identifiers & Profiles 选择 Devices ,将不能获取到 deviceToken 的设备 Remoke 掉,再重新注册该 Devices。

  8. 如果你使用的是 unity 插件,unity2017 可能把推送功能关闭了,手动在代码中打开:将 UNITY_REMOTE_NOTIFICATIONS 设为 1。

  9. 如果测试环境是 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 打包的注意事项,参考开发者的分享

更多排查文档说明点我!!!!!

  1. iOS 13 系统目前经过测试,系统本身可能存在问题,少部分手机会存在取不到 token 的问题,该问题 SDK 无法解决,大家可以用原生推送集成后测试是否可以取到 token,取不到就是系统的问题,可以尝试如下方案:

    • 给手机插入 SIM 卡后再测试
    • 卸载重装、重启 App、关机重启后测试
    • 生产环境的包测试
    • 换别的 iOS 13 系统的手机测试

如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ