美文网首页
uniPush 个推 极光

uniPush 个推 极光

作者: 李霖弢 | 来源:发表于2022-07-27 16:54 被阅读0次

    什么是 push

    push,指服务器主动向客户端发送消息的技术。无需客户端持续轮询服务器,即可获得即时数据。

    push 的方式
    • 在线推送
      客户端激活时,默认通过 socket 协议实现 push(透传消息),此时消息不会出现在通知栏,可自行在应用内手动创建通知栏消息。
      也可以在服务器端强制指定用厂商通道发送 通知消息,此时同离线推送。

    • 离线推送
      客户端未激活时,调用手机厂商提供的接口,通过不会离线的手机厂商通道,向手机操作系统推送消息(通知消息)。用户通过通知栏消息唤起应用后,应用才能收到消息。
      因此,离线推送功能需先向各个rom厂商申请开通推送服务
      不同厂商对通道的调用有不同的要求,如OPPO需要该APP启动过,且设备在30天内有联网行为。此外,通知栏权限默认不开启,如OPPO需要自行引导用户开启通知栏权限。

    • 小程序
      本质上也是利用了APP的在线推送 / 离线推送

    • 浏览器 webnotification
      浏览器厂商没有提供 push 通道,只是开发者通过轮询或WS自行实现的消息通知

    uni push

    uni-app 提供了 uni push 服务,这是一个包括客户端和服务器的统一服务,整合了苹果APNs、华为、小米、OPPO、VIVO、魅族、谷歌FCM等多家厂商的系统推送和个推的独立推送,一套代码多端推送。

    • uni push免费接入了个推原本需要收费的vip push,以支持APP在线推送,其本质就是使用dcloud账号的个推vip push,无法再进一步提升送达率
    • uni push 2.0将流程集成到了uniCloud,简化了操作,以下均以2.0为例
    真机调试时

    涉及到第三方 SDK 的配置,需要打包自定义基座进行测试
    离线推送不支持真机调试,仅可在正式版使用

    打包时

    如果是云打包,首先勾选权限配置,manifest.json->App 模块权限配置->Push。然后,manifest.json->App SDK 配置->推送,按照提示申请相应平台的信息,并填写。最后,勾选并填写完成后再进行打包即可。如果是离线打包,自行在原生工程中配置SDK,并确保选择了推送模块。

    极光

    极光分为通知和消息。
    通知就是当程序在后台运行时,导航条出现的那一条推送。
    消息是不通过推送直接推送到用户app中。

    个推

    个推不同于极光,把通知和消息放到一起了。当我们程序处于后台时候。服务器发送透传信息的时候会以通知的形式送达手机端。当我们点击通知打开程序后传达的消息又会以透传的方式送达app中。
    也可以通过参数配置改为和极光一样的模式

    各手机厂商开通推送服务

    unipush 官方文档 未提及消息推送需申请开通,且部分配置已落后,详见下方说明:

    OPPO

    OPPO开放平台-应用服务-移动服务-推送服务-申请开通消息推送
    开通后将应用的AppID、AppKey、AppSecret、AppServerSecret(即MasterSecret)填入UniPush的厂商推送设置

    小米

    小米开放平台-应用服务-消息推送-启用推送(选择需要开启推送的应用)
    开通后将应用的AppID、AppKey、AppSecret 填入UniPush的厂商推送设置

    VIVO

    VIVO开放平台-应用-消息推送-开通

    华为

    华为开放平台-我的项目-项目设置-API管理(开启推送)-常规
    开通后将应用的AppID、Client Secret 、agconnect-services.json 填入UniPush的厂商推送设置


    IOS(https://developer.apple.com

    确保原本的 Identifiers 中已开启 Push Notification 能力,基于其生成.cer文件,再通过钥匙串生成.p12文件。(后续App打包时依然用正常的p12文件和profile文件,不需要该文件)
    详见 个推官方文档个推官方视频

    离线消息

    安卓的离线消息推送需要向各个安卓手机厂商申请消息渠道,否则会限制推送频次并静默推送(不支持铃声和震动提示等)
    IOS只要开通了“Push Notifications”即可,无额外限制,首次启动会自动申请通知栏权限
    部分安卓手机默认不开启通知栏权限(如OPPO),此外也可能遇到用户手动禁用了通知栏权限,此时可手动提示用户开启权限

    APP角标

    不同安卓厂商有自己的角标接口和权限规定,其中OPPO采用了邀请制,不给予普通APP角标权限。

    • uniapp中可通过plus.runtime.setBadgeNumber(数字)设置角标,仅小米、VIVO、华为和开通了“Push Notifications”的 IOS 设备支持
    • unipush(个推)接口可设置角标,(默认为+1)。但大多数机型仅支持传入“+1”,此时会和上述setBadgeNumber方法冲突,不建议同时使用

    接收消息

    App.vueonLaunch中通过uni.onPushMessage((res)=>{})监听消息。

    • 在线默认为透传消息,收到后直接触发回调。
      如云函数开启"force_notification": true则变为通知栏消息,需点击通知栏触发回调
    • 离线消息总是为通知栏消息,点击通知栏后启动APP并触发消息
      目前安卓部分机型似乎收不到离线回调,只是能启动APP

    res是一个对象,包含typedata属性

    • type为"click"(点击通知栏)或"receive"(透传)
    • data为包含 title、content、payload 的对象
      IOS的离线消息中,payload可能会被JSON序列化

    相关文章

      网友评论

          本文标题:uniPush 个推 极光

          本文链接:https://www.haomeiwen.com/subject/vomsdltx.html