uni-app 部分手机机型获取不到unipush的cid
uni-app 部分手机机型获取不到unipush的cid
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 14.4.1 | HBuilderX |
操作步骤:
- 登录时获取cid
- 获取不到,并报err
预期结果:
所有机型都能够正常获取cid
实际结果:
部分机型获取不到cid,目前已知的差异是Android版本不同,但是有客户反馈有些Android13的设备也会出现同样的异常
bug描述:
有海外客户表示他们的部分机型无法登录,经排查是由于plus.push.getClientInfoAsync进入了err,提示的是
{"code":-1,"message":"failed,check appkey or appid"}
我们国内的机型几乎不会出现问题,大多是Android13,但是在这台Android14样机中复现,后面经过离线打包抓取日志,发现会卡在
Attempt to load writable dex file: /data/user/0/包名/files/libs/tdata_GOc266.jar
Attempt to load writable dex file: /data/user/0/包名/files/libs/tdata_yGr514.jar
更多关于uni-app 部分手机机型获取不到unipush的cid的实战教程也可以访问 https://www.itying.com/category-93-b0.html
补充说明:使用的是unipush1.0
更多关于uni-app 部分手机机型获取不到unipush的cid的实战教程也可以访问 https://www.itying.com/category-93-b0.html
找到原因了吗
在使用 uni-app 开发应用时,如果遇到部分手机机型无法获取到 UniPush 的 cid
(Client ID),可能是由于以下几个原因导致的。以下是一些可能的原因及解决方法:
1. 手机系统权限问题
部分手机系统(如小米、华为、OPPO、VIVO 等)可能会限制后台应用的推送权限,导致无法正常获取 cid
。
解决方法:
- 检查并确保应用的通知权限已开启。
- 引导用户手动开启应用的自启动权限和后台运行权限。
- 对于小米手机:进入 设置 -> 应用管理 -> 权限 -> 自启动权限,开启应用的自启动权限。
- 对于华为手机:进入 设置 -> 电池 -> 启动管理,关闭应用的自动管理并手动开启允许后台活动。
- 对于 OPPO 和 VIVO 手机:进入 设置 -> 电池 -> 后台冻结,关闭应用的后台冻结。
2. UniPush 配置问题
UniPush 的配置可能不正确,导致无法正常获取 cid
。
解决方法:
- 检查
manifest.json
中的 UniPush 配置是否正确。{ "app-plus": { "distribute": { "sdkConfigs": { "push": { "unipush": { "appid": "你的UniPush AppID", "appkey": "你的UniPush AppKey", "appsecret": "你的UniPush AppSecret" } } } } } }
- 确保在 DCloud 开发者后台正确配置了 UniPush 的相关信息。
3. 网络问题
获取 cid
需要网络连接,如果网络不稳定或无法访问 UniPush 服务器,可能导致获取失败。
解决方法:
- 确保设备网络连接正常。
- 检查是否开启了 VPN 或代理,导致无法访问 UniPush 服务器。
4. 手机系统版本问题
部分手机系统版本可能对推送服务支持不完善,导致无法获取 cid
。
解决方法:
- 测试不同系统版本的手机,确认是否为系统版本问题。
- 如果确认是系统版本问题,建议引导用户升级系统或反馈给手机厂商。
5. UniPush SDK 版本问题
使用的 UniPush SDK 版本可能较旧,存在兼容性问题。
解决方法:
- 更新 UniPush SDK 到最新版本。
- 在
manifest.json
中配置最新的 UniPush 参数。
6. 代码逻辑问题
可能是代码中获取 cid
的逻辑存在问题,导致无法正确获取。
解决方法:
- 确保在合适的地方调用
uni.getPushClientId
方法。 - 检查回调函数是否正确处理了获取到的
cid
。uni.getPushClientId({ success: (res) => { console.log('获取到的 cid:', res.cid); }, fail: (err) => { console.error('获取 cid 失败:', err); } });