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

2024-04-08 07:04

本文主要是介绍【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/

这篇关于【Mobile Push - 自己做个移动端消息推送】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/884888

相关文章

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程

《双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程》:本文主要介绍如何在Windows11系统中使用VMware17创建虚拟机,并在虚拟机中安装Ubuntu22.04桌面版或Ubunt... 目录一、首先win11中安装vmware17二、磁盘分区三、保存四、使用虚拟机进行系统安装五、遇见的错误和解决

使用FileChannel实现文件的复制和移动方式

《使用FileChannel实现文件的复制和移动方式》:本文主要介绍使用FileChannel实现文件的复制和移动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录使用 FileChannel 实现文件复制代码解释使用 FileChannel 实现文件移动代码解释

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤