【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

相关文章

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流的消息队列)什么是消息队列?消费者组的工作方式每

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!