个推小助手
个推小助手
  • 发布:2023-01-30 15:25
  • 更新:2023-09-25 17:31
  • 阅读:13783

uni-push2.0 常见问题

分类:uni-app

uni-push2.0 常见问题

一、基础问题

1.uni-push2.0 和 uni-push1.0 有什么区别

uni-push1.0:支持 app(Android 和 ios),不支持小程序端、web 端,可以用个推服务端 api 推送
uni-push2.0:支持 app(Android 和 ios)、小程序端、web 端。服务端不支持用个推 api 推送,只能用 dcloud 提供的 服务端(云函数)推送

2.uni-push2.0 应用信息的 MasterSecret 怎么没了

uniCloud 的 服务端(云函数)推送 推送免鉴权,不需要 MasterSecret。详情:服务端推送消息

3.uni-push2.0 中 java、php、python 之类的语言怎么用,必须要要用云函数吗

在 uniCloud 的云函数中,加载扩展库 uni-cloud-push,直接调用相关 API,无需额外的服务端配置。而传统服务器开发者需要把这个 云函数URL化 后变成 http 接口,再由原来的 php 或 java 代码调用这个 http 接口。

4.云函数收费问题

阿里云版 uniCloud 商业版会收费,详情请查看 免费版和商用版

5.自定义铃声

参考文档:https://ext.dcloud.net.cn/plugin?id=7482&from_wecom=1
对于离线的自定义铃声,必须申请自分类权益(小米&华为),oppo、vivo不支持自定义铃声

6.设置角标问题

h5设置: https://www.html5plus.org/doc/zh_cn/runtime.html?from_wecom=1#plus.runtime.setBadgeNumber
云函数api:https://uniapp.dcloud.net.cn/uniCloud/uni-cloud-push/api.html#uni-cloud-push

7.是否需要云打包?

首次集成push:必须云打包。
修改 android 多厂商参数:必须云打包。
修改 iOS 推送证书:不需要云打包。

8.推送频次限制

推送条数限制:没有限制
单推(to Single)频次限制:没有限制
批量推(to List)频次限制:200万次/天
群推(to APP)频次限制:100次/天,每分钟不能超过5次

二、Android 消息推送问题

安卓厂商离线推送是否要求上架应用商店?

安卓消息推送流程说明

  • 默认情况下:
    • 当CID在线(即app在前台打开运行)时,消息通过个推通道下发到客户端。
    • 当CID离线(即app在后台、锁屏、进程关闭)时,有开启对应厂商离线功能的,消息将通过个推侧请求对应厂商侧的服务端,实际的消息是经由厂商服务器下发至客户端。对于没有开启对应厂商功能的,消息将存在个推的离线库中,等待CID在线,再通过个推通道下发到客户端。
  • 注意:安卓的消息推送,走了厂商通道的消息就不会再通过个推通道推送至客户端,反之亦是如此,即消息只会推送一次

安卓在线收不到通知

  • 手机通知权限是否正常打开,部分安卓8以上的手机通知权限中需要打开【Default】渠道的通知权限。
  • 当应用在线时,不会创建“通知栏消息”,此时客户端会立即监听到消息内容。
    • 监听到消息内容后,根据业务需要自己判断是否要创建“通知栏消息”,需要就调用创建本地消息API uni.createPushMessage手动创建通知栏消息。
    • 服务端执行推送时,传递参数force_notification:true,客户端就会自动创建“通知栏消息”(此时你监听不到消息内容),当用户点击通知栏消息后,APP才能监听到消息内容。

安卓离线收不到通知

步骤一:确认CID是否绑定厂商token

在【Uni Push】-【配置管理】-【故障排查】-【 检测CID的状态及信息:】中输入CID查询,看是否会返回厂商token(device token)。


若返回了具体厂商token,请按以下中各厂商部分说明排查。若查询CID未返回token,请看下方步骤二

目前各厂商对消息有额度限制,例如华为单设备单应用每天只能收到 2 条营销类消息,超过后则当天收不到离线。详见 厂商通道限额&QPS说明 ,如果要提升额度,可以参考限额说明文档,向厂商申请系统、私信消息。

  • 华为
    • 标题长度限制40个字,内容长度限制1024个字。
    • emui10的华为手机,检查手机通知权限设置,将【营销通知】的权限也打开,不要默认静默,静默的话是需要下拉通知栏才能看到。
    • 手机通知栏消息是否有存满,清除已存的通知栏消息看下新的消息是否能展示。
  • VIVO
    • 标题长度限制20个字,内容长度限制50个字。
    • 检查通知权限,vivo机型默认关闭
    • vivo【运营消息】,一个设备一天只能收到5条离线消息
    • 1个自然日内相同文案的运营消息给同个设备发,vivo会在客户端做去重处理,导致消息不展示
    • vivo要求:通知文案中不能带 “包含测试、test字符”、“纯数字”、“纯表情”、“符号”或者“符号+数
      字”、“表情+数字”、“表情+符号”
    • vivo需要上架至应用市场才能使用离线厂商推送。
  • 小米
    • 标题长度限制50个字,内容长度限制128个字。
    • 检查手机通知权限设置,小米有不重要通知功能,部分消息可能会存在通知栏不重要通知里
    • 服务端推送时,推送代码要加上离线时间设置,不能为空。
    • 小米需要上架至应用市场才能使用离线厂商推送。
  • OPPO
    • 标题长度限制32个字,内容长度限制200个字。
    • 检查手机通知权限是否打开,oppo是默认关闭的,将通知权限下的【Default】通道权限也打开。
    • 手机系统时间是否正常
  • 魅族
    • 标题长度限制32个字,内容长度限制100个字。
    • 检查消息是否存入了魅族手机右上角【魅族消息盒子】中。
    • 清除缓存:手机【系统设置】-【应用管理】-【所有应用】点击右上角【显示系统服务应用】找到【推送服务】和【您自己的 App】,如下图,分别进行“清除数据”,然后重启手机。

步骤二:查询CID未返回token,调试查询厂商code码

  • 对应厂商平台上的推送服务状态是否是开启状态。

  • 在Dcloud后台【Uni Push】-【厂商推送设置】中保存好厂商参数,并用自有证书提交云打包,且需要打正式包,再获取cid去查询是否有返回。

    厂商错误码调试方法如下:

  • 需要先安装调试环境,参考安装教程

  • 手机连接电脑,手机需开启开发者调试模式,此时不用打开app

  • Windows执行示例:如下图,回车执行后打开app

  • Mac执行示例:如下图,回车执行后打开app

  • 此时注意查看返回的厂商Code码,如上图中HW的错误码为907135702,点击下方链接搜索查询官方描述。

  • 若未返回任何带有厂商标识的日志,说明厂商推送服务还未置于您app应用内,请重新检查厂商服务开通、配置、云打包相关步骤。

华为(包含荣耀)机型需要额外检查:

  • 需要在华为开发者后台配置正确的 sha256 指纹证书
  • 云打包用自有证书打正式签名包
  • 华为开发者后台包名跟客户端包名需要保持一致
  • 厂商推送设置-华为厂商,必须上传agconnect-services.json
  • 在华为平台是否开通了华为推送服务
  • 保存完参数,需要重新提交云端打包

三、iOS消息推送问题

iOS消息推送流程说明

  • 当CID在线(即app在前台打开运行)时,消息通过个推通道下发到客户端。默认不处理的话是没有任何展示的,透传消息个推只负责传递。
  • 当CID离线(即app在后台、锁屏)时,消息将通过个推侧请求对应厂商侧的服务端。
  • 注意:与安卓消息流程不同的是,Ios走了厂商离线通道,在消息有效期内,app打开在前台时,透传内容还将通过个推通道传递给客户端; 此时可在客户端透传回调中的参数PushMessage对象中获取aps属性值来判断是否是APNs下发的消息 ,参考推送开发指南

iOS在线收不到消息

当应用在线时,不会创建“通知栏消息”,此时客户端会立即监听到消息内容。

  • 监听到消息内容后,根据业务需要自己判断是否要创建“通知栏消息”,需要就调用创建本地消息API uni.createPushMessage手动创建通知栏消息。
  • 服务端执行推送时,传递参数force_notification:true,客户端就会自动创建“通知栏消息”(此时你监听不到消息内容),当用户点击通知栏消息后,APP才能监听到消息内容。

iOS离线收不到消息

步骤一:确认CID是否绑定苹果devicetoken

在【Uni Push】-【配置管理】-【故障排查】-【 检测CID的状态及信息:】中输入CID查询,看是否会返回苹果devicetoken。


若返回了具体苹果devicetoken,请按以下说明排查,若还未解决,提供CID和任务ID给个推技术支持

注意:返回的devicetoken后面是否带着【developement】字样;若带着,则说明客户端环境是属于苹果的开发环境,苹果推送对开发环境的支持不稳定,建议使用正式环境去进行推送测试。

步骤二:查询CID未返回devicetoken

  • 切换手机连接网络,卸载重装试下。
  • 使用其他手机安装测试。
  • 重新进行云打包。

证书测试一下返回无效、连接报错

  • 证书环境问题:通用证书支持开发与正式环境推送;开发证书只支持开发环境推送。
  • iOS证书的生成,请参考 证书生成文档

四、错误提示问题

1、Hbuliderx打包报错,提示包名找不到


查询一下自己上传的service.json文件,和打包时候选择的Android包名是否一致,如果不一致需要修改为一致信息

2、ios新建的证书会报证书环境错误

需要正确上传推送证书


注意:
打包的时候用的开发者证书 后台ios配置需要配的是推送证书
下载ios证书必须是ios的会员,非会员是不能下载的

3、unipush 打包提示用户错误


这种报错都是clientid用户错误,需要获取正确的跟应用匹配的cid。可使用自有证书提交云打包后,下载安装再去获取正确的CID进行推送测试。

4、unipush 打包提示应用appid未关联当前服务空间

检查填写的app_id信息,要用unipush 的UNI开头的那个id

5、厂商推送设置配置提示‘验证错误’

  • 原因是填写了错误的厂商参数,需要去对应的 厂商平台 核实参数是否一致,且注意填写时不能包含空格。
  • 如果确认参数完全一致,可以更换浏览器后再进行填写保存,推荐使用 Google 浏览器。

6、unipush点击运行到基座 毫无反应,弹窗也都没有

点顶部菜单栏帮助-查看运行日志看下:


这种一般都是真机调试版本不对,对应调试的版本和插件版本不一致,当前运行调试的版本没有这个api。检查一下插件的版本和真机版本,更新真机版本解决问题。

7、获取cid提示no push platform报错问题:

没有unipush节点,检查插件工具manifest源码视图里面modules的push配置或者sdkConfigs配置。

8、uniapp在app.vue中接收在线消息时,ios机型点击消息闪退

receive 回调里判断下msg.type是否为空,可能是空指针异常导致闪退。

9、url化后调用提示“应用appId:AppId的unipush服务,未关联当前服务空间

服务空间,unipush那需要关联,项目里也需要关联

10、报错提示 mongo_cell_decision_not_found

注意:扩展库依赖 3 张 opendb 表:opendb-tempdata,opendb-device,uni-id-device。公测版 uniCloud,执行扩展库会自动创建。如果你使用的是 uniCloud 正式版需要自己在 uniCloud 的 web控制台 创建这3张表。

创表路径:


11、获取cid失败,提示:getPushClientId: fail uniPush is not enabled

NVUE项目不行,需要去掉纯nvue选框 https://ask.dcloud.net.cn/question/152548

12、调用报错提示:duplicate message content

这种情况一般就是对应的传参数cid信息没有传对,需要url化调用的参数和 云函数配置的参数对比一下。

如果cid参数没有传对,dcloud的会默认当成全推处理,全推的消息默认十分钟不能推重复内容

1 关注 分享
k***@qq.com

要回复文章请先登录注册

3***@qq.com

3***@qq.com

你好,用了插件 DCloud-PushSound 自定义声音换音频没生效,第一次云打包还是可以的,换了一个铃声,相同的文件名,只是换了声音内容,打包出来变成插件包默认的哆啦A梦的铃声,官方回一下啊,qq 群,插件里都没有人回的
2023-09-25 17:31
1***@qq.com

1***@qq.com

在 uniCloud 的云函数中,加载扩展库 uni-cloud-push,直接调用相关 API,无需额外的服务端配置。而传统服务器开发者需要把这个 云函数URL化 后变成 http 接口,再由原来的 php 或 java 代码调用这个 http 接口。 这个有没有demo ,纯后端完全不知道要做什么
2023-09-20 17:51
2***@qq.com

2***@qq.com

7、获取cid提示no push platform报错问题
修改了manifest,一定要重新制作基座
2023-08-08 19:04
无赖君子

无赖君子

ios 在app打开时 force_notification: true 会收到两条重复的通知
2023-07-29 18:09
1***@qq.com

1***@qq.com

你好 三星手机设备 离线消息推送需要怎么弄的
2023-06-19 15:21
1***@qq.com

1***@qq.com

小米也不需要上架应用的吧
2023-06-19 15:17
2***@qq.com

2***@qq.com

我这是什么意思,也没有错误码,也收不到离线推送,在故障排查也没有token(device token)

C:\Users\hp>adb logcat | findstr "Assist_"
05-11 11:03:18.439 27001 27074 E Assist_honor: com.igexin.assist.control.honor.ManufacturePushManager
05-11 11:03:18.439 27001 27074 D Assist_HW: huawei plugin version = 3.1.1, huawei sdk version = 6.5.0.300
05-11 11:03:18.440 27001 27074 D Assist_HW: pkgInfo.versionCode 61000311 apiVersionCode = 19
05-11 11:03:18.440 27001 27074 E Assist_huawei: isSupport huawei = true
05-11 11:03:18.440 27001 27074 D Assist_HW: huawei plugin version = 3.1.1, huawei sdk version = 6.5.0.300
05-11 11:03:18.440 27001 27074 D Assist_HW: Register hmspush, pkg = gxzk.chw.app
05-11 11:03:18.441 27001 27074 D Assist_HW: pkgInfo.versionCode 61000311 apiVersionCode = 19
05-11 11:03:18.605 27001 27079 I Assist_HW: get hms token:
05-11 11:03:18.704 27001 27055 D Assist_HW: pkgInfo.versionCode 61000311 apiVersionCode = 19
05-11 11:12:38.887 27867 27924 E Assist_honor: com.igexin.assist.control.honor.ManufacturePushManager
05-11 11:12:38.887 27867 27924 D Assist_HW: huawei plugin version = 3.1.1, huawei sdk version = 6.5.0.300
05-11 11:12:38.888 27867 27924 D Assist_HW: pkgInfo.versionCode 61000311 apiVersionCode = 19
05-11 11:12:38.888 27867 27924 E Assist_huawei: isSupport huawei = true
05-11 11:12:38.888 27867 27924 D Assist_HW: huawei plugin version = 3.1.1, huawei sdk version = 6.5.0.300
05-11 11:12:38.888 27867 27924 D Assist_HW: Register hmspush, pkg = ××××(隐藏)
05-11 11:12:38.888 27867 27924 D Assist_HW: pkgInfo.versionCode 61000311 apiVersionCode = 19
05-11 11:12:39.032 27867 27933 I Assist_HW: get hms token:
05-11 11:12:39.143 27867 27867 I Assist_HW: onNewToken :AQAAAACy0xKRAADlGIGEsxh6bz7eawKVSJSrD6ucmJ8ekzz-jJEJagu5mZedYpbSa5h3btXna3vaiXGp7IRqxJfvFz4LL4BTxcsAkkCPSr2rhc_dww
05-11 11:12:39.144 27867 27902 E Assist_MessageManger: other token = HW_AQAAAACy0xKRAADlGIGEsxh6bz7eawKVSJSrD6ucmJ8ekzz-jJEJagu5mZedYpbSa5h3btXna3vaiXGp7IRqxJfvFz4LL4BTxcsAkkCPSr2rhc_dww
05-11 11:12:39.147 27867 27867 I Assist_HW: onNewTokenAndBundle :AQAAAACy0xKRAADlGIGEsxh6bz7eawKVSJSrD6ucmJ8ekzz-jJEJagu5mZedYpbSa5h3btXna3vaiXGp7IRqxJfvFz4LL4BTxcsAkkCPSr2rhc_dww
05-11 11:12:39.147 27867 27902 E Assist_MessageManger: other token = HW_AQAAAACy0xKRAADlGIGEsxh6bz7eawKVSJSrD6ucmJ8ekzz-jJEJagu5mZedYpbSa5h3btXna3vaiXGp7IRqxJfvFz4LL4BTxcsAkkCPSr2rhc_dww
05-11 11:12:39.253 27867 27922 D Assist_HW: pkgInfo.versionCode 61000311 apiVersionCode = 19
05-11 11:12:40.873 27867 27922 D Assist_HW: pkgInfo.versionCode 61000311 apiVersionCode = 19
05-11 11:21:51.512 27867 27922 D Assist_HW: pkgInfo.versionCode 61000311 apiVersionCode = 19
2023-05-11 11:31
Javin

Javin

我项目和https://dev.dcloud.net.cn/pages/app/push2/info都关联了服务空间而且确认是相同的服务空间,但是还是会报 应用appId:x x x x x的uniPush服务,未关联当前服务空间;前往配置:https://dev.dcloud.net.cn/pages/app/push2/info"好头疼
2023-05-01 23:18
云网世纪

云网世纪

推送后,app端消息消息块怎么自动换行呢? \n试了不行
2023-03-17 11:48
Chuxy_Once

Chuxy_Once

公测版需要自己创建三张表 ,具体怎么创建表呢? 创建表的表结构是什么?
2023-02-21 19:55