【Delphi】 各个平台使用 ntfy 效果说明

目录

一、Delphi 中使用 ntfy 库下载地址

二、各个平台使用效果说明

1. android 平台

2. ios 平台

3. windows 平台

三、总结


一、Delphi 中使用 ntfy 库下载地址

  • 官方的文档地址:ntfy
  • Delphi 接口库地址:GitHub - hazzelnuts/ntfy-for-delphi at net-http

二、各个平台使用效果说明

约定:

        ntfy 既可以订阅消息,也可以发布消息。我们约定订阅消息和发布消息在同一个程序中,例如对于windows来说,就是一个EXE程序,对于android来说就是一个apk文件。

1. android 平台

  1. 发布消息和订阅消息函数如果都在主进程中运行,则启动订阅功能后,如果调用发布消息,则会导致程序卡死;改进的方法是将订阅消息在主进程中执行,但是发布消息通过线程任务来执行!
  2. 程序进入后台,然后重新前台后,订阅和发布消息功能都正常;
  3. 如果收到了订阅消息,此时立即发布消息(测试在40秒内),发布消息会正常发布成功,但是订阅消息会把刚刚收到的订阅消息在触发收到一次,这是不是期望的结果,需要进行处理。处理的方法是,每隔消息都有Id,如果收到的小时的Id就是上一条消息的Id,就不用处理,说明是重复收取。

2. ios 平台

  1. 发布消息和订阅消息函数如果都在主进程中运行,则启动订阅功能后,如果调用发布消息,不会导致程序卡死;
  2. 程序进入后台,然后重新前台后,订阅将会失效,发布消息功能正常;
  3. 如果收到了订阅消息,此时立即发布消息(测试在40秒内),发布消息会正常发布成功,但是订阅消息会把刚刚收到的订阅消息在触发收到一次,这是不是期望的结果,需要进行处理。处理的方法是,每隔消息都有Id,如果收到的小时的Id就是上一条消息的Id,就不用处理,说明是重复收取。

3. windows 平台

  1. 发布消息和订阅消息函数如果都在主进程中运行,则启动订阅功能后,如果调用发布消息,不会导致程序卡死;
  2. windows系统休眠后,然后重新启动后,订阅将会失效,发布消息功能正常;
  3. 如果收到了订阅消息,此时立即发布消息(测试在40秒内),发布消息会正常发布成功,但是订阅消息会把刚刚收到的订阅消息在触发收到一次,这是不是期望的结果,需要进行处理。处理的方法是,每隔消息都有Id,如果收到的小时的Id就是上一条消息的Id,就不用处理,说明是重复收取。

三、总结

序号平台发布订阅同一程序前台 - 后台 - 前台40秒内会重复收到订阅消息
1android① 异常(卡死)正常③ 会收到重复消息
2ios正常② 异常
3windowindows正常

处理方法:

① :将发布消息函数放置在线程中;

② :监测ios程序从前台到后台以及从后台到前台的变化事件,监测Windows程序从休眠到启动该以及从启动到休眠的变化事件,在变化事件中重新订阅消息;

③ :对于订阅事件中根据消息Id,过滤掉重复的消息;

程序APP_BOX中使用!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/139539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能AI系统ChatGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

BGP基本配置实验

目录 一、实验拓扑 二、实验需求 三、实验步骤 1、IP地址配置 2、内部OSPF互通,配置OSPF协议 3、BGP建立邻居关系 4、R1和R5上把业务网段宣告进BGP 5、消除路由黑洞,在R2、R4上做路由引入 6、业务网段互通 一、实验拓扑 二、实验需求 1、按照图…

JVM源码剖析之软、弱、虚引用的处理细节

目录 写在前面: 源码剖析: Java层面: JVM层面: 使用危险点: 总结: 版本信息: jdk版本:jdk8u40 垃圾回收器:Serial new/old 写在前面: 不同的垃圾回收…

不同性别人群的股骨颈骨密度随年龄的变化趋势

增龄是发生骨质疏松的危险因素。因此,中老年人需要积极防范骨质疏松,以免发生骨折等不良事件。 为了探究不同性别人群的股骨颈骨密度随年龄的变化趋势,首先创建一个df,变量有id(编号)、age(年龄…

【算法】算法题-20231110

一、力口:506. 相对名次 简单 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第…

Git之分支与版本->课程目标及知识点的应用场景,分支的场景应用,标签的场景应用

1.课程目标及知识点的应用场景 Git分支和标签的命名规范 分支 dev/test/pre/pro(即master) dev:开发环境--windows (自己的电脑) test:测试环境--windows/linux (公司专门的测试电脑 pre:灰度环境(非常大的公司非常重要的项目) pro:正式环境 灰度环境与正式环境的服务器配置…

logback异步日志打印阻塞工作线程

前言 最新做项目,发现一些历史遗留问题,典型的是日志打印的配置问题,其实都是些简单问题,但是往往简单问题引起严重的事故,比如日志打印阻塞工作线程,以logback和log4j2为例。logback实际上是springboot的…

【Python】AppUI自动化—appium自动化开发环境部署、APP测试案例(17)上

文章目录 一.appium简介1.什么是appium2.appium 的工作原理3.APP类型4.APP页面布局 二,appium开发环境部署(python环境)1.下载安装环境1.1.下载安装所需环境1.2.Appium-desktop( Appium-Server-GUI )配置1.3.Appium-Inspector 配置…

计算机msvcp140.dll重新安装的四个解决方法,专门解决dll文件丢失问题的方法

在我多年的电脑使用经历中,曾经遇到过一个非常棘手的问题,那就是电脑提示找不到msvcp140.dll文件。这个问题让我苦恼了很久,但最终还是找到了解决方法。今天,我就来分享一下我解决这个问题的四种方法,希望对大家有所帮…

python爬虫怎么翻页

爬虫程序的代码实现如下&#xff1a; #include <iostream> #include <string> #include <curl/curl.h>int main() {CURL *curl;CURLcode res;std::string readBuffer;curl_global_init(CURL_GLOBAL_DEFAULT);curl curl_easy_init();if(curl) {curl_easy_se…

AI 绘画 | Stable Diffusion精确控制ControlNet扩展插件

ControlNet ControlNet是一个用于控制AI图像生成的插件&#xff0c;通过使用Conditional Generative Adversarial Networks&#xff08;条件生成对抗网络&#xff09;的技术来生成图像。它允许用户对生成的图像进行更精细的控制&#xff0c;从而在许多应用场景中非常有用&#…

每次重启完IDEA,application.properties文件里的中文变成?

出现这种情况&#xff0c;在IDEA打开Settings-->Editor-->File Encodings 然后&#xff0c;你需要将问号改为你需要的汉字。 重启IDEA&#xff0c;再次查看你的.properties文件就会发现再没有变成问号了

order by的注入与Insert ,update和delete注入

order by的注入 Insert &#xff0c;update和delete注入

大二第四周总结——用原生js封装一个分页器

用原生js封装一个分页器 起因&#xff1a;这次项目还是用原生的js来写的&#xff0c;我负责的是后台&#xff0c;分页是后台最常见的一个功能了&#xff0c;于是干脆封装一下,废话少说&#xff0c;直接上代码 这里是基本的样式 .pagination {display: flex;width: 600px;hei…

PCB知识补充

系列文章目录 文章目录 系列文章目录参考文献PCB知识互连线电阻过孔/铜箔电流能力铜箔载流能力过孔载流能力 热设计电磁兼容及部分要求 参考文献 [1]牛森,张敏娟,银子燕.高速PCB多板互联的电源完整性分析[J].单片机与嵌入式系统应用,2023,23(09). [2]陈之秀,刘洋,张涵舒等.高…

Django中简单的增删改查

用户列表展示 建立列表 views.py def userlist(request):return render(request,userlist.html) urls.py urlpatterns [path(admin/, admin.site.urls),path(userlist/, views.userlist), ]templates----userlist.html <!DOCTYPE html> <html lang"en">…

【Java】反射

1.什么是反射机制? Java 反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类中的所有属性和方法&#xff0c;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 的反射机制…

《软件工程与计算》期末考试真题范例及答案

今天分享一套针对《软件工程与计算》这本书的真题案例&#xff0c;有关《软件工程与计算》23章内容的重点知识整理&#xff0c;已经总结在了博客专栏中&#xff0c;有需要的自行阅读&#xff1a; 《软件工程与计算》啃书总结https://blog.csdn.net/jsl123x/category_12468792.…

进程状态和优先级

文章目录 进程状态Linux中具体的进程状态僵尸进程孤儿进程 进程优先级 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 进程状态 进程在操…

每天一点python——day66

#每天一点Python——66 #字符串的分隔 #如图&#xff1a; #方法①split()从左开始分隔&#xff0c;默认空格为分割字符&#xff0c;返回值是一个列表 shello world jisuanji#首先创建一个字符串 list1s.split() print(list1)#输出结果是&#xff1a;[hello, world, jisuanji]注…