【Mobile Push - 自己做个移动端消息推送】

介绍

Mobile Push 是什么,还不清楚的同学可以参考这篇【Mobile Push - 揭秘!移动端消息推送】

简单来说就是 移动端上的消息弹框提示 ,一般来讲,我们可以直接对接设备厂商的云服务通道 或者 借助国内外第三方Mobile Push消息推送服务 来实现这个功能。但是其实这个也可以不和设备厂商,第三方消息推送服务商强绑定,完完全全自己做。
下面介绍下,开源消息推送协议Unifiedpush

开源协议 - Unifiedpush

UnifiedPush :UnifiedPush 是一种去中心化的开源推送通知协议,旨在为移动应用提供推送通知服务,而无需依赖单一公司提供的平台。它遵循Web推送(WebPush)标准,为用户提供更好的隐私和独立性。

划重点,Unifiedpush是协议,所以需要框架实现。Unifiedpush无需依赖单一公司提供的平台,这里的意思是不和设备系统厂商(苹果,谷歌或者其它系统厂商)强绑定,可以不借助他们的云服务消息通道。

原理

在进一步之前,简单回顾下,基于设备厂商的云服务通道进行消息推送的过程。如下

基于设备厂商云服务通道 - 消息推送流程
Provider在这里指的是消息发送方,其将需要推送的消息发送到云服务通道,云服务通道再推送到移动端设备。
而开源消息推送协议-Unifiedpush协议对于整个消息推送过程,有更具体的描述,如下流程,

基于开源协议Unifiedpush - 消息推送流程

过程描述

  • 业务方服务Application Server先推送一条消息到推送服务Push Server上。
  • 推送服务Push Server再推送消息到手机上预装的分发程序Distributor app
  • 分发程序Distributor app再进行消息通知到对应Phone application,从而进行消息弹框。

下面继续看下根据协议流程,怎么实现这个过程。Unifiedpush协议有不同的开源库,我们选择一个成熟的开源库-ntfy,那么下面我们来看下如何基于开源库ntfy来实现 - 移动端消息推送。

基于ntfy,消息推送

对照着Unifiedpush协议,使用开源库ntfy,使用填空的方式, 把ntfy中不同的部分填入到Unifiedpush协议所需各个组成部分,如下图

基于Unifiedpush协议-使用ntfy

准备工作

准备工作,关注下面3部分,

1 - Distributor app && Phone application

下载ntfy app并安装到手机上,用作Distributor app 和 Phone application

下载ntfy app

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/

相关推荐

  1. uniapp+极光消息

    2024-04-13 23:18:02       56 阅读
  2. 智能消息SDK产品:移动APP拉新促活的利器

    2024-04-13 23:18:02       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 23:18:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 23:18:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 23:18:02       82 阅读
  4. Python语言-面向对象

    2024-04-13 23:18:02       91 阅读

热门阅读

  1. oracle rac打补丁后sqlplus / as sysdba ora-12537

    2024-04-13 23:18:02       32 阅读
  2. 巨坑:ModuleNotFoundError: No module named ‘dateutil‘

    2024-04-13 23:18:02       33 阅读
  3. GPT模型与知识图谱的融合之旅

    2024-04-13 23:18:02       41 阅读
  4. PTA 位运算

    2024-04-13 23:18:02       38 阅读
  5. 富格林:技巧抵抗曝光虚假套路

    2024-04-13 23:18:02       34 阅读
  6. 蓝桥杯-单片机组基础21——第15届省赛代码

    2024-04-13 23:18:02       32 阅读