当前位置: 首页 > news >正文

【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中使用!

相关文章:

  • laravel8-rabbitmq消息队列-实时监听跨服务器消息
  • 使用venv 创建虚拟环境
  • 如何安装Node.js? 创建Vue脚手架
  • 【Springboot】基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询(二)——前端el-pagination实现
  • 深度学习_11_softmax_图片识别代码原理解析
  • helm 常用命令搜集 —— 筑梦之路
  • Nginx(五)
  • SpringBoot 使用EasyExcel 导出Excel报表(单元格合并)
  • linux入门---自旋锁和读写锁
  • Python 使用tkinter复刻Windows记事本UI和菜单功能(二)
  • MCU平台使用SPI-DirectC实现FPGA在线升级
  • 人工智能基础——图像认知与OpenCV
  • 在ant构建脚本中调用maven的命令
  • Git 进阶使用
  • 2023年11月在线IDE流行度最新排名
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 2019年如何成为全栈工程师?
  • CSS3 变换
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • java小心机(3)| 浅析finalize()
  • Java应用性能调优
  • Linux CTF 逆向入门
  • nodejs实现webservice问题总结
  • Puppeteer:浏览器控制器
  • 悄悄地说一个bug
  • 深度学习入门:10门免费线上课程推荐
  • 深入 Nginx 之配置篇
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 学习Vue.js的五个小例子
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  •  一套莫尔斯电报听写、翻译系统
  • No resource identifier found for attribute,RxJava之zip操作符
  • ​queue --- 一个同步的队列类​
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (14)Hive调优——合并小文件
  • (差分)胡桃爱原石
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (力扣)循环队列的实现与详解(C语言)
  • (十一)c52学习之旅-动态数码管
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET Core跨平台微服务学习资源
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET Reactor简单使用教程
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @property python知乎_Python3基础之:property