【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

相关文章

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基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

springboot rocketmq配置生产者和消息者的步骤

《springbootrocketmq配置生产者和消息者的步骤》本文介绍了如何在SpringBoot中集成RocketMQ,包括添加依赖、配置application.yml、创建生产者和消费者,并展... 目录1. 添加依赖2. 配置application.yml3. 创建生产者4. 创建消费者5. 使用在

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每