![cover](https://img-blog.csdnimg.cn/img_convert/0913aeff60c83b84815aa7b71605f8e1.webp)
【Mobile Push - 自己做个移动端消息推送】
Mobile Push 是什么,还不清楚的同学可以参考这篇。简单来说就是 移动端上的消息弹框提示 ,一般来讲,我们可以直接对接设备厂商的云服务通道 或者 借助国内外第三方Mobile Push消息推送服务 来实现这个功能。但是其实这个也可以不和设备厂商,第三方消息推送服务商强绑定,完完全全自己做。下面介绍下,开源消息推送协议。
介绍
Mobile Push 是什么,还不清楚的同学可以参考这篇【Mobile Push - 揭秘!移动端消息推送】。
简单来说就是 移动端上的消息弹框提示 ,一般来讲,我们可以直接对接设备厂商的云服务通道 或者 借助国内外第三方Mobile Push消息推送服务 来实现这个功能。但是其实这个也可以不和设备厂商,第三方消息推送服务商强绑定,完完全全自己做。
下面介绍下,开源消息推送协议Unifiedpush
开源协议 - Unifiedpush
UnifiedPush :UnifiedPush 是一种去中心化的开源推送通知协议,旨在为移动应用提供推送通知服务,而无需依赖单一公司提供的平台。它遵循Web推送(WebPush)标准,为用户提供更好的隐私和独立性。
划重点,Unifiedpush是协议,所以需要框架实现。Unifiedpush无需依赖单一公司提供的平台,这里的意思是不和设备系统厂商(苹果,谷歌或者其它系统厂商)强绑定,可以不借助他们的云服务消息通道。
原理
在进一步之前,简单回顾下,基于设备厂商的云服务通道进行消息推送的过程。如下
Provider在这里指的是消息发送方,其将需要推送的消息发送到云服务通道,云服务通道再推送到移动端设备。
而开源消息推送协议-Unifiedpush协议对于整个消息推送过程,有更具体的描述,如下流程,
过程描述
- 业务方服务Application Server先推送一条消息到推送服务Push Server上。
- 推送服务Push Server再推送消息到手机上预装的分发程序Distributor app上
- 分发程序Distributor app再进行消息通知到对应Phone application,从而进行消息弹框。
下面继续看下根据协议流程,怎么实现这个过程。Unifiedpush协议有不同的开源库,我们选择一个成熟的开源库-ntfy,那么下面我们来看下如何基于开源库ntfy来实现 - 移动端消息推送。
基于ntfy,消息推送
对照着Unifiedpush协议,使用开源库ntfy,使用填空的方式, 把ntfy中不同的部分填入到Unifiedpush协议所需各个组成部分,如下图
准备工作
准备工作,关注下面3部分,
1 - Distributor app && Phone application
下载ntfy app并安装到手机上,用作Distributor app 和 Phone application
2 - Push Server
push server可以基于开源库ntfy库进行自建 https://docs.ntfy.sh/install/ 。也可以直接使用ntfy搭建好的公共服务(域名地址 ntfy.sh),这里演示直接使用ntfy提供的服务 ntfy.sh
3 - Application Server
我们自己的应用服务,也是消息产生的源头,产生的消息可以通过 http接口调用(curl), 或使用 ntfy cli 或 其它sdk调用,发送给Push Server。以http接口调用举例:
curl -d "hi" ntfy.sh/${your subscrib name}
实际使用
准备完毕后 ,即可开始使用,
- 进入ntfy app中先添加下订阅名称 ,这里起个名字叫tt001
- 然后使用curl命令模拟Application server调用下http接口
curl -d 'hi' ntfy.sh/tt001
- 调用后即可看到推送的消息
效果展示
以上便是基于Unifiedpush协议,通过ntfy实现消息推送的完整示例了。
最后给大家留个小问题,如果是基于厂商的云服务通道做的消息推送,里面是没有额外提到 distributor app这部分的。如下对比,
基于厂商做消息推送:业务方 → 云通道(厂商提供) → 手机 app消息弹框
基于开源协议做消息推送: 业务方 → 云通道(自部署) → 手机 distributor app → 手机 app消息弹框
那么开源协议的流程, 为什么会多一个distributor app呢?
参考
推送协议:https://unifiedpush.org
服务端协议:https://unifiedpush.org/spec/server/
ntfy: https://docs.ntfy.sh/
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)