20190722海外小米和国内华为的关联唤醒调研

2024-02-09 19:48

本文主要是介绍20190722海外小米和国内华为的关联唤醒调研,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关联/链式启动的拦截机制

Android P机型

进程拦截

组件拦截

预设置自启动名单

海外版-小米MI 8 Pro

国内版-华为P20 Pro

进程拦截:主要在冷启动限制开机启动、后台启动,功能界面一般为自启动管理、后台管理;

原理:ActivityManagerService. startProcessLocked() 条件拦截,即冷启动入口拦截

组件拦截:主要在冷/热启动限制开机启动、后台启动、应用间的唤醒,组件级别拦截,功能界面一般无界面显示、或关联启动界面、或启动记录、拦截记录;

原理:

ActivityManagerService. getContentProviderImpl() 条件拦截

ActiveServices. startServiceLocked() 条件拦截

ActiveServices. bindServiceLocked() 条件拦截

ActivityStarter. startActivity() 条件拦截

BroadcastQueue. processNextBroadcastLocked()条件拦截

区别

两者的效果都是可以限制开机启动和后台启动,组件拦截比进程拦截的区别如下:

  1. 组件拦截的时机更早,因为应用启动是先启动组件,再最后fork进程;
  2. 组件拦截管控的范围更全,热启动类型的行为也可以有效拦截;
  3. 组件拦截精细度更高,例如进程拦截只知道进程被启动了,而组件拦截可以具体到哪个进程通过什么方式启动了目标进程;
  4. 主流的华为、OPPO、VIVO、小米都有组件拦截相关的机制;

综合上述:

  1. 海外版小米 MI 8 Pro 在自启动、后台管理、关联启动都有预置黑名单进行应用管理,故Android P 上我们也可以同海外版小米的配置预置自启动黑名单;

  1. SmartManager完成了进程拦截,组件拦截可以在目前的冷启动场景的基础做查缺补漏的拦截优化,甚至做到个别场景不依赖配置名单,智能识别和拦截关联启动行为;

  1. 热启动场景进行组件级拦截,例如加强Google 原生的规则中后台第三方应用启动后台第三方进程的限制;

  1. 拦截记录的UI界面交互,需要产品工程师进行定义;

  1. 海外版-小米 MI 8 Pro

1.1 小米自启动

    1. 小米关联/链式

小米的没有单独的关联唤醒拦截界面,但是“禁止耗电应用相互调用”属于关联唤醒范畴

2. 国内版-华为P20 Pro

    1. 华为自启动

07-19 14:41:49.771  1000  1681  1705 D Boost   : hostingType=broadcast, hostingName=com.android.cellbroadcastreceiver/.CellBroadcastReceiver, callerPackage=android, isSystem=true, isBoostNeeded=false.

07-19 14:41:52.599  1000  1681  2093 D Boost   : hostingType=service, hostingName=com.miui.analytics/.AnalyticsService, callerPackage=com.miui.msa.global, isSystem=true, isBoostNeeded=false.

07-19 14:41:48.717  1000  1681  2072 D Boost   : hostingType=content provider, hostingName=com.android.settings/.cloud.CloudSettingsProvider, callerPackage=com.android.systemui, isSystem=true, isBoostNeeded=false.

2.2 华为关联/链式

只有组件拦截才可以形成下述拦截记录

3. ROM-SMGR测评

条件

测试结果

1. 安装后,不进行任何操作,桌面待机

1 小时内,23个应用后台启动

2. 安装后,按smgr推荐名单设置,66个自启动黑名单,13个白名单,桌面待机

测试12小时,黑名单应用都被限制自启动,管控Pass

上述中分析:

  1. 不点开任何应用会有应用被启动的原因 第一个被启动的应用,com.ss.android.article.news(uid:10129) 被 com.android.bluetooth(uid:1002) 通过 bind-service 关联启动. 存在第一个第三方应用被启动后,com.ss.android.article.news(uid:10129)通过 PUSH SDK相关的start-activity\start-service\bind-service\send-broadcast\content provider机制启动了更多的应用,手机出现后台进程数量多、卡顿、发热现象
  2. SmartManager 的自启动管控 早期版本的SmartManager存在漏洞,即content provider\activity 类型启动会不区分黑白名单直接允许后台运行。本次版本优化,主要策略如下:
  • 1.启动类型service\broadcast\content provider的为非前台进程应用,后台启动会根据黑名单进行拦截
  • 2.启动类型为 activity 类型的非前台进程,新增了一条过滤,即ClassName为 com.igexin.sdk.GActivity直接拦截启动,除此之外唐敏提供了更多Activity类型的透明界面异常后台启动com.igexin.sdk.GActivity
    com.tencent.pangu.link.LinkProxyActivity
    com.ifeng.news2.getui.DynamicGetuiActivity
    com.pingan.servicewindow.service.GeTuiActivity
  • 3.灭屏30分钟内,查杀3次,亮屏每5分钟查杀后台进程

    private static final List<String> ANNOYING_NAMES = new ArrayList<String>(){{

        add("com.igexin.sdk.GActivity");

    }

3.1 安装后,不进行任何操作,桌面待机

1. com.ss.android.article.news(uid:10129)  com.android.bluetooth(uid:1002) 关联启动

07-16 15:27:03.781543  1010  6236 D PowerConsumptionService: isAllowAppLaunch : com.ss.android.article.news(uid:10129), callingPackage = com.android.bluetooth(uid:1002), reason = bind-service

07-16 15:27:03.781665  1010  6236 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=android.media.browse.MediaBrowserService cmp=com.ss.android.article.news/com.ss.android.detail.feature.detail2.audio.service.AudioService }

2. com.ss.android.essay.joke(uid:10133)  com.ss.android.article.news(uid:10129) 关联启动

07-16 15:37:14.362178  1010  6237 D PowerConsumptionService: isAllowAppLaunch : com.ss.android.essay.joke(uid:10133), callingPackage = com.ss.android.article.news(uid:10129), reason = start-service

07-16 15:37:14.362523  1010  6237 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=com.ss.android.message.action.PUSH_SERVICE pkg=com.ss.android.essay.joke cmp=com.ss.android.essay.joke/com.ss.android.message.NotifyService (has extras) }

3. com.ss.android.article.lite(uid:10133)  com.ss.android.article.news(uid:10129) 关联启动

07-16 15:37:14.493859  1010  4771 D PowerConsumptionService: isAllowAppLaunch : com.ss.android.article.lite(uid:10130), callingPackage = com.ss.android.article.news(uid:10129), reason = start-service

07-16 15:37:14.494085  1010  4771 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=com.ss.android.message.action.PUSH_SERVICE pkg=com.ss.android.article.lite cmp=com.ss.android.article.lite/com.ss.android.message.NotifyService (has extras) }

4. com.baidu.video(uid:10168)  com.android.bluetooth(uid:1002) 关联启动

07-16 15:47:08.596667  1010  4771 D PowerConsumptionService: isAllowAppLaunch : com.baidu.video(uid:10168), callingPackage = com.android.bluetooth(uid:1002), reason = bind-service

07-16 15:47:08.596851  1010  4771 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=android.media.browse.MediaBrowserService cmp=com.baidu.video/.audio.service.AudioService }

5. com.baidu.BaiduMap(uid:10166)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:11.110067  1010  6231 D PowerConsumptionService: isAllowAppLaunch : com.baidu.BaiduMap(uid:10166), callingPackage = com.baidu.video(uid:10168), reason = bind-service

07-16 15:47:11.110231  1010  6231 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=baidu.intent.action.account.SHARE_SERVICE flg=0x20 cmp=com.baidu.BaiduMap/com.baidu.sapi2.share.ShareService }

6. com.qiyi.video(uid:10163)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:11.382107  1010  6231 D werConsumptionService: isAllowAppLaunch : com.qiyi.video(uid:10163), callingPackage = com.baidu.video(uid:10168), reason = bind-service

07-16 15:47:11.382245  1010  6231 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=baidu.intent.action.account.SHARE_SERVICE flg=0x20 cmp=com.qiyi.video/com.baidu.sapi2.share.ShareService }

7. com.baidu.searchbox(uid:10165)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:13.171434  1010  2007 D PowerConsumptionService: isAllowAppLaunch : com.baidu.searchbox(uid:10165), callingPackage = com.baidu.BaiduMap(uid:10166), reason = bind-service

07-16 15:47:13.171539  1010  2007 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=baidu.intent.action.account.SHARE_SERVICE flg=0x20 cmp=com.baidu.searchbox/com.baidu.sapi2.share.ShareService }

8. com.ss.android.ugc.aweme(uid:10150)  com.ss.android.article.news(uid:10129) 关联启动

07-16 15:47:14.479210  1010  6231 D PowerConsumptionService: isAllowAppLaunch : com.ss.android.ugc.aweme(uid:10150), callingPackage = com.ss.android.article.news(uid:10129), reason = start-service

07-16 15:47:14.479379  1010  6231 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=com.ss.android.message.action.PUSH_SERVICE pkg=com.ss.android.ugc.aweme cmp=com.ss.android.ugc.aweme/com.ss.android.message.NotifyService (has extras) }

9. com.sina.weibo(uid:10156)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:38.308859  1010  3307 D PowerConsumptionService: isAllowAppLaunch : com.sina.weibo(uid:10156), callingPackage = com.baidu.video(uid:10168), reason = send-broadcast

07-16 15:47:38.309022  1010  3307 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=com.huawei.intent.action.PUSH flg=0x30 pkg=com.sina.weibo (has extras) }

10. com.cubic.autohome(uid:10160)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:40.020740  1010  4818 D PowerConsumptionService: isAllowAppLaunch : com.cubic.autohome(uid:10160), callingPackage = com.baidu.video(uid:10168), reason = bind-service

07-16 15:47:40.020844  1010  4818 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x20 cmp=com.cubic.autohome/cn.jpush.android.service.DaemonService (has extras) }

11. com.cleanmaster.mguard_cn(uid:10164)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:38.694378  1010  1022 D PowerConsumptionService: isAllowAppLaunch : com.cleanmaster.mguard_cn(uid:10164), callingPackage = com.baidu.video(uid:10168), reason = bind-service

07-16 15:47:38.694760  1010  1022 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x20 cmp=com.cleanmaster.mguard_cn/com.cleanmaster.jpush.JpushDaemonService (has extras) }

12. com.hipu.yidian(uid:10125)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:41.921992  1010  6231 D PowerConsumptionService: isAllowAppLaunch : com.hipu.yidian(uid:10125), callingPackage = com.baidu.video(uid:10168), reason = bind-service

07-16 15:47:41.922168  1010  6231 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x20 cmp=com.hipu.yidian/com.yidian.wakeup.YdDaemonService (has extras) }

13. com.job.android(uid:10135)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:41.949993  1010  6237 D PowerConsumptionService: isAllowAppLaunch : com.job.android(uid:10135), callingPackage = com.baidu.video(uid:10168), reason = bind-service

07-16 15:47:41.950191  1010  6237 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x20 cmp=com.job.android/cn.jpush.android.service.DaemonService (has extras) }

14. com.qq.reader(uid:10121)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:57.251650  1010  2226 D PowerConsumptionService: isAllowAppLaunch : com.qq.reader(uid:10121), callingPackage = com.baidu.video(uid:10168), reason = bind-service

07-16 15:47:57.251862  1010  2226 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x20 cmp=com.qq.reader/cn.jpush.android.service.DaemonService (has extras) }

15.com.xingin.xhs(uid:10144)  com.baidu.video(uid:10168) 关联启动

07-16 15:47:57.888941  1010  1312 D PowerConsumptionService: isAllowAppLaunch : com.xingin.xhs(uid:10144), callingPackage = com.baidu.video(uid:10168), reason = bind-service

07-16 15:47:57.889082  1010  1312 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x20 cmp=com.xingin.xhs/cn.jpush.android.service.DaemonService (has extras) }

16.sogou.mobile.explorer(uid:10153)  com.ss.android.article.news(uid:10129) 关联启动

07-16 15:47:59.321980  1010  1979 D TctPowerConsumptionService: isAllowAppLaunch : sogou.mobile.explorer(uid:10153), callingPackage = com.ss.android.article.news(uid:10129), reason = bind-service

07-16 15:47:59.322151  1010  1979 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x20 cmp=sogou.mobile.explorer/cn.jpush.android.service.DaemonService (has extras) }

17. com.wuba(uid:10117)  com.baidu.video(uid:10168) 关联启动

07-16 15:48:06.202649  1010  1979 D PowerConsumptionService: isAllowAppLaunch : com.wuba(uid:10117), callingPackage = com.baidu.video(uid:10168), reason = start-activity

07-16 15:48:06.202777  1010  1979 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x10000000 cmp=com.wuba/com.igexin.sdk.GActivity (has extras) }

18. air.tv.douyu.android(uid:10155)  com.baidu.video(uid:10168) 关联启动

07-16 15:48:06.550748  1010  6237 D PowerConsumptionService: isAllowAppLaunch : air.tv.douyu.android(uid:10155), callingPackage = com.baidu.video(uid:10168), reason = start-activity

07-16 15:48:06.551987  1010  6237 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x10000000 cmp=air.tv.douyu.android/com.igexin.sdk.GActivity }

19 com.jingdong.app.mall(uid:10128)  com.baidu.video(uid:10168) 关联启动

07-16 15:48:41.178704  1010  1979 D PowerConsumptionService: isAllowAppLaunch : com.jingdong.app.mall(uid:10128), callingPackage = com.baidu.video(uid:10168), reason = start-activity

07-16 15:48:41.178921  1010  1979 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x10000000 cmp=com.jingdong.app.mall/com.igexin.sdk.GActivity }

20 com.android.comicsisland.activity(uid:10162)  com.baidu.video(uid:10168) 关联启动

07-16 15:48:41.241667  1010  1077 D PowerConsumptionService: isAllowAppLaunch : com.android.comicsisland.activity(uid:10162), callingPackage = com.baidu.video(uid:10168), reason = start-activity

07-16 15:48:41.241717  1010  1077 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x10000000 cmp=com.android.comicsisland.activity/com.igexin.sdk.GActivity }

21 com.huaqian(uid:10148)  com.baidu.video(uid:10168) 关联启动

07-16 15:48:06.385103  1010  1076 D PowerConsumptionService: isAllowAppLaunch : com.huaqian(uid:10148), callingPackage = com.baidu.video(uid:10168), reason = start-activity

07-16 15:48:06.385213  1010  1076 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x10000000 cmp=com.huaqian/com.igexin.sdk.GActivity }

22 com.netease.newsreader.activity(uid:10171)  com.android.bluetooth(uid:1002) 关联启动

07-16 15:49:09.438847  1010  4835 D PowerConsumptionService: isAllowAppLaunch : com.netease.newsreader.activity(uid:10171), callingPackage = com.android.bluetooth(uid:1002), reason = bind-service

07-16 15:49:09.438979  1010  4835 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { act=android.media.browse.MediaBrowserService cmp=com.netease.newsreader.activity/com.netease.awakening.music.MusicService }

23  cn.etouch.ecalendar(uid:10126)  com.huaqian(uid:10148) 关联启动

07-16 15:49:33.559620  1010  2001 D PowerConsumptionService: isAllowAppLaunch : cn.etouch.ecalendar(uid:10126), callingPackage = com.huaqian(uid:10148), reason = start-activity

07-16 15:49:33.559673  1010  2001 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x10000000 cmp=cn.etouch.ecalendar/com.igexin.sdk.GActivity }

24  com.tencent.mtt(uid:10119)  com.netease.newsreader.activity(uid:10171) 关联启动

07-16 15:51:45.573292  1010  1984 D PowerConsumptionService: isAllowAppLaunch : com.tencent.mtt(uid:10119), callingPackage = com.netease.newsreader.activity(uid:10171), reason = start-activity

07-16 15:51:45.573364  1010  1984 D PowerConsumptionService: isAllowAppLaunch : intent action:Intent { flg=0x10000000 cmp=com.tencent.mtt/com.igexin.sdk.GActivity }

3.2. 安装后,按smgr推荐名单设置,桌面待机

1. 根据黑名单和非前台进程和com.igexin.sdk.GActivity 拦截 activity

07-17 17:56:29.047735  1039  1549 D PowerConsumptionService: onStartActivity # target=ActivityInfo{40fd0a0 com.igexin.sdk.GActivity}, callingPkg=com.cubic.autohome

07-17 17:56:29.047786  1039  1549 W PowerConsumptionService: onStartActivity # start activity from annoying component.

2. 根据黑名单和非前台进程拦截 service

07-17 20:00:21.728459  1034  1104 D PowerConsumptionService: onStartProcess # processName=com.baidu.video, pkg=com.baidu.video, type=service, name=com.baidu.video/.audio.service.AudioService

3. 根据黑名单和非前台进程拦截 broadcast

07-17 20:00:26.830424  1034  1050 D PowerConsumptionService: onStartProcess # processName=com.sina.news, pkg=com.sina.news, type=broadcast, name=com.sina.news/.module.base.receiver.BootCompletedReceiver

07-17 20:00:26.830782  1034  1050 W PowerConsumptionService: onStartProcess # abort starting process: com.sina.news, pkg=com.sina.news

4. 根据黑名单和非前台进程拦截 content provider

07-17 20:00:42.839045  1034  1573 D PowerConsumptionService: onStartProcess # processName=com.baidu.video, pkg=com.baidu.video, type=content provider, name=com.baidu.video/cn.jpush.android.service.DownloadProvider

07-17 20:00:42.839381  1034  1573 W PowerConsumptionService: onStartProcess # abort starting process: com.baidu.video, pkg=com.baidu.video

这篇关于20190722海外小米和国内华为的关联唤醒调研的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python写个唤醒睡眠电脑的脚本

《python写个唤醒睡眠电脑的脚本》这篇文章主要为大家详细介绍了如何使用python写个唤醒睡眠电脑的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 环境:win10python3.12问题描述:怎么用python写个唤醒睡眠电脑的脚本?解决方案:1.唤醒处于睡眠状

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版                     小米工具箱扩展版 iO_Box_Mi_Ext是由@晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前,请打开开发者选项中的“USB调试”  功能特点 【小米工具箱】 1:冻结MIUI全家桶,隐藏状态栏图标,修改下拉通知栏图块数量;冻结

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

华为 HCIP-Datacom H12-821 题库 (13)

有需要题库的可以看主页置顶 1.可以携带外部路由的 tag 标签信息的是以下哪一类 LSA? A、4 类 LSA B、5 类 LSA  C、3 类 LSA  D、2 类 LSA 答案:B 解析: 暂无解析 2..两台路由器直连,并设定网络类型为 p2p 建立OSPF 邻居。那么两台路由器传输 OSPF 报文的目的 IP 地址是以下哪一项? A、使用组播地址 224.0.0.6 B

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消