uniPush 个推 极光

什么是 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序列化
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 自己使用过的推送服务:极光推送(Jpush)、友盟推送、个推、阿里推送,其他的目前还没用用过,但使用起来应该都是比...
    可乐_JS阅读 4,244评论 2 4
  • 一:在manifest.json app模块配置勾选Push推送 二:在uniapp开发者后台配置应用信息 注意点...
    狱_cf1b阅读 3,704评论 1 0
  • 份额对比: 首先关注厂商推送,能够保证push服务最大程度存活以保证实时触达。 小米推送 免费、到达率高、Andr...
    vv冥焰阅读 2,750评论 0 1
  • 注意:从HBuilderX 1.7.2起,uni-app支持UniPush。从HBuilderX 2.0.3 al...
    HealerLZH阅读 7,937评论 3 1
  • iOS 推送SDK 集成指南 本文介绍译码小二郎即时通讯如何集成推送SDK 1.简介 本 iOS SDK 方便开发...
    storywithyou阅读 618评论 0 0