uniapp ios添加日历提醒 uniapp定时推送提醒消息 您所在的位置:网站首页 uniapp离线推送监听通知栏 uniapp ios添加日历提醒 uniapp定时推送提醒消息

uniapp ios添加日历提醒 uniapp定时推送提醒消息

2024-01-05 18:18| 来源: 网络整理| 查看: 265

uniapp 集成推送功能1,在开发后台点击需要开通的应用–点击uniPush–配置对应的信息,默认情况下,Android的包名跟APPID的相同

uniapp ios添加日历提醒 uniapp定时推送提醒消息_自定义

uniapp ios添加日历提醒 uniapp定时推送提醒消息_推送_02

2,云打包时勾选APP模块配置–push(消息推送)–uniPush

uniapp ios添加日历提醒 uniapp定时推送提醒消息_vue_03

3,用户安装之后,即可使用开发者的后台–UniPush–创建推送–发送通知消息(需要有人安装打包好之后的APP才可以推送,如果没人安装过,将无法点击发送)

注: 直接运行项目到真机是不可行的,可通过IDE中的自定义基座,然后再运行到手机中进行测试, !!!自定义基座这种方式在使用厂家推送时不可用

uniapp ios添加日历提醒 uniapp定时推送提醒消息_vue_04

至此,安装APP的用户将收到一个消息通知,最简单的推送集成就完成了

注意:(应用右上角角标的显示,目前使用官方的推送是不太好实现所有机型的兼容的,目前的具体情况如下:

不同ROM接收推送消息对桌面图标的角标处理逻辑存在差别

小米手机:角标自动加1 (MIUI11 以下) 另:高版本MIUI 设置角标会以通知的形态发送华为手机:可以设置,走厂家通道离线推送可在服务端设置。参考可插件链接:https://ext.dcloud.net.cn/plugin?id=1680vivo手机:不会自动加1,需调用5+ API plus.runtime.setBadgeNumber动态设置角标数字oppo手机:角标自动展示,具体形态与rom相关,可能是红点或数字。(需要打开角标权限)iOS平台

根据接收到的推送消息处理桌面图标的角标,在uniPush后台的“iOS配置”项中可配置badge参数对角标进行设置,可取值:

“+1”,表示当前角标+1;“-1”,表示当前角标-1(角标>=0);“3”,表示指定角标值,值必须>=0。

默认(不设置badge参数)则角标数字不变,也可以在应用运行期调用5+ API plus.runtime.setBadgeNumber动态设置角标数字

)

uniapp ios添加日历提醒 uniapp定时推送提醒消息_uniapp ios添加日历提醒_05

下面是真正项目中的使用,开通的流程跟上述一样,不多加赘述1,消息精准推送到某个用户,利用H5+获取用户安装时的CID,根据CID来进行精准推送

1,在APP启动的之后的代码中,加入plus.push.getClientInfo().clientid,获取用户的CID,可发给后台进行绑定,(注意每次重新安装APP,CID都不相同,如果是同一用户,需要进行更新CID的操作)

onLoad(){ uni.showModal({ title:plus.push.getClientInfo().clientid }) },

uniapp ios添加日历提醒 uniapp定时推送提醒消息_app_06

2.客户端监听推送的事件,利用H5+的API来完成,回调函数中的参数为推送信息的内容,根据内容进行业务逻辑处理plus.push.addEventListener('click', (mes)=>{ console.log("mes") console.log(mes) /* msg.title -- 推送的标题,会在通知栏中显示 msg.content -- 推送的内容,会在通知栏中显示 msg.subtitle -- 二级标题,会在通知栏中显示 msg.palyload -- 自定义的payload内容,该内容不会展示在通知栏的通知中,可以在此处携带ID之类不想用户看到的信息 */ uni.showModal({ title:'点击了推送信息' }) }); plus.push.addEventListener('receive', (mes)=>{ console.log("mes") console.log(mes) /* msg.title -- 推送的标题,会在通知栏中显示 msg.content -- 推送的内容,会在通知栏中显示 msg.subtitle -- 二级标题,会在通知栏中显示 msg.palyload -- 自定义的payload内容,该内容不会展示在通知栏的通知中,可以在此处携带ID之类不想用户看到的信息 */ uni.showModal({ title:'接受到了推送信息' }) });

透传消息(注解:透传消息未配置厂商推送之前,只能在APP前台运行时才能被监听到,一旦后台运行或者离线之后,都不会收到推送信息,在配置了厂商的推送之后的话,则可以通过厂商的推送在APP后台或者离线时进行推送消息)

总结:

选项

优点

缺点

unipush中的通知消息,适用于不需要杀死进程后仍接收通知的应用

集成简单,不需要申请每个厂商的推送通道

1,进程杀死后,推送则不可送达

2,应用在前台运行时,推送也会出现消息通知,不可控

unipush中的透传消息,不配置厂商推送

消息推送不会出现在通知栏,可由开发者监听到消息之后进行自定义的业务逻辑

程序一旦后台或者被杀死进程,都无法监听到消息推送

unipush中的透传消息,配置厂商推送

1.应用在前台运行时,可监听到消息推送,不会直接出现在手机通知栏中

2,应用后台运行后,或者进程杀死后,消息会出现在通知栏中,点击后唤起APP

安卓每个厂商都需要申请厂商的推送,然后进行配置,比较麻烦

手机推送测试(官方推送在未配置厂商推送信息的情况下,杀死进程后,推送消息无法在通知栏中出现,需要等到APP再次在线,才会重新弹出推送消息)

机型

推送方式

应用未读角标

receive

click

红米K20PRO

unipush的消息通知

无,不可设置,(H5+的setBadgeNumber方法在小米11以上的系统中,会以通知栏的方式出现)

没有触发

有触发

红米K20PRO

unipush的消息通知,在后续操作中配置附加消息

在用户手动点击通知之后才会触发

在点击通知之后才会触发

红米K20PRO

unipush的透传消息

应用前台运行时,可触发

不会触发通知栏消息

华为P20pro

unipush的消息通知

可设置

未监听到

通知栏点击可监听到该事件

安卓配置厂家推送之后,在透传消息时,需要填入对应intent,由于uniapp只能进入首页,所以代码几乎是固定的,替换一下包名即可,厂商推送需要设置的Intent字符串格式,请将uniapp ios添加日历提醒 uniapp定时推送提醒消息_uniapp ios添加日历提醒_07{title},uniapp ios添加日历提醒 uniapp定时推送提醒消息_vue_08{payload}替换为正确的内容

${packageName} 代表应用包名 ${title} 通知的标题 ${content} 通知的内容 ${payload} 其他附加参数,请用 JSON.toJSONString(payload)进行转码。可不填

intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;package=${packageName};component=${packageName}/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=${title};S.content=${content};S.payload=${payload};end

uniapp ios添加日历提醒 uniapp定时推送提醒消息_vue_09

手机推送测试(已配置厂商推送渠道),要走厂商通道,要选择透传消息

注:厂家推送需要不可用使用自定义基座或者真机运行,需要打包之后测试,

机型

应用未读角标

receive

click

红米K20pro

需要用户手动设置系统权限才会展示

在线时,会正常触发,离线时则不会

厂商通道的消息点击之后会触发

华为P20PRO

unipush的web后台推送不会出现角标,需要使用后台调用api方可出现角标

在线时,会正常触发,离线时则不会

厂商通道的消息点击之后会触发

苹果8,IOS13.7

前台运行时没有,后台运行会有,需要手动调用plus.runtime.setBadgeNumber(0),进行红点清除

应用后台运行时,不会触发

杀死进程后任然可以推送消息通知,点击事件也正常

至此接入结束,在使用过程中有问题可以找个推的技术咨询,回复都比较快,多看官方的文档其实大部分的问题都已经能找到的了

UniPush开通指南 https://ask.dcloud.net.cn/article/35716 UniPush使用指南 http://ask.dcloud.net.cn/article/35622 Unipush常见问题 https://ask.dcloud.net.cn/article/36611 服务端api接口推送调用文档 https://docs.getui.com/getui/server/rest_v2/push/

实际项目使用中,IOS的前台运行,接收到透传消息之后,再创建本地通知时,会进入死循环的问题解决// APP.VUE 的onLoad生命函数中添加下述代码 let timer = false; plus.push.addEventListener("click",(msg)=>{ // 当消息被点击进入的回调 clearTimeout(timer); timer = setTimeout(()=>{ if(plus.os.name == 'iOS'&& typeof msg.payload == 'string'){ // IOS跟安卓得到数据不一样,安卓是对象,IOS是JSON msg.payload = JSON.parse(msg.payload) } if(msg.payload){ uni.navigateTo({ url:`${msg.payload.url}` }) } },500) },false) plus.push.addEventListener("receive",(msg)=>{ // 接收到消息时进入的回调 let payloadObj = JSON.parse(msg.payload) if(payloadObj.msgType == 'LocalMSG' && plus.os.name == 'iOS'){ // 防止IOS下创建本地通知时会出现死循环的情况 return } var options = {cover:false,title:msg.title}; payloadObj.msgType = 'LocalMSG' // 添加多一个值来让ios可以判断是不是本地创建的消息 let payLoadStr = JSON.stringify(payloadObj) plus.push.createMessage(msg.content, payLoadStr, options ); },false)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有