uni-app 开通unipush2.0且勾选离线推送 已配置厂商参数 后台故障排查cid时 设备phonetype类型为小程序 且未获取devicetoken

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app 开通unipush2.0且勾选离线推送 已配置厂商参数 后台故障排查cid时 设备phonetype类型为小程序 且未获取devicetoken

类别 信息
产品分类 uniapp/App
PC开发环境 Mac
PC系统版本 macOS 14.1.1
手机系统 Android
手机系统版本 Android 14
手机厂商 模拟器
手机机型 pixel
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 CLI
CLI版本 5.0.0

操作步骤:

  • 制作自定义基座,或者云打包,运行至模拟器或者手机

预期结果:

  • phonetype 显示为安卓,可以获取到devicetoken

实际结果:

  • 获取到的cid查询不到devicetoken,phonetype 显示为小程序

bug描述:

{
  "push": {
    "unipush": {
      "version": "2",
      "offline": true,
      "hms": {},
      "icons": {
        "small": {
          "hdpi": "src/static/push/36_36.png",
          "ldpi": "src/static/push/18_18.png",
          "mdpi": "src/static/push/24_24.png",
          "xhdpi": "src/static/push/48_48.png",
          "xxhdpi": "src/static/push/72_72.png"
        }
      }
    }
  }
}


7 回复

看你配的离线只有华为,这个cid是华为手机获取的么? 参考下 https://ask.dcloud.net.cn/article/40291


回复 reverspring: 你是标准基座下获取的 cid 吧

回复 reverspring: 我也遇到这个问题了,请问你解决了吗?

我也遇到同样的问题的,我配了小米的,用的也是云打包的基座,按照文章 https://ask.dcloud.net.cn/article/40291的检查流程 检查厂商错误码如图

resultcode是0–成功,但是就是拿不到device Token
请问有什么解决方案和思路吗?

楼主是因为没有打自定义基座导致的,详细描述你的问题

在使用 UniApp 的 UniPush 2.0 进行推送时,如果遇到设备 phonetype 类型为小程序且未获取到 devicetoken 的情况,可以按照以下步骤进行排查和解决:

1. 确认 UniPush 2.0 配置正确

  • 确保在 UniApp 后台已经正确开通了 UniPush 2.0 服务,并且勾选了离线推送功能。
  • 确保已经正确配置了厂商参数(如华为、小米、OPPO、VIVO 等),并且这些参数已经通过审核。

2. 检查设备类型

  • phonetype 为小程序,意味着当前设备是通过小程序环境运行的。UniPush 2.0 在小程序环境下可能无法获取到 devicetoken,因为小程序本身并不支持原生推送功能。
  • 确保你是在原生 App 环境中测试推送功能,而不是在小程序环境中。

3. 检查获取 devicetoken 的代码

  • 在 UniApp 中,获取 devicetoken 的代码通常是这样的:

    uni.getPushClientId({
      success: (res) => {
        console.log('cid:', res.cid);
        console.log('devicetoken:', res.deviceToken);
      },
      fail: (err) => {
        console.error('获取推送信息失败:', err);
      }
    });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!