有个客户端集成了 MQTT 库,在前台运行时,MQTT 消息可以正常接收和发送。 但是放在后台后, 消息就收不到了。
有办法让 MQTT service 一直运行吗?
1
DrX 7 天前 ![]() 俗称保活,目前这是一门高精尖技术活。
|
2
nothingistrue 7 天前
后台接受消息,请使用推送,除了微信之外的强行保活手段,必然被 OEM 和用户无情的杀掉。
|
3
passon 7 天前
目前已经没有稳定的包活手段了。可以 App 挂了后应该走厂商推送
|
![]() |
4
crayygy 7 天前
Foreground Service
|
![]() |
5
psklf 7 天前
Foreground Service 应该可以
|
![]() |
6
springz 7 天前
看设备是不是自己能控制的,自己定制一个 ROM 加白名单。
|
![]() |
7
springz 7 天前
Foreground services 不行的,还是会断。
|
![]() |
8
springz 7 天前
保活目前是超级技术活,有能量就厂商白名单,比如微信。没能量就老老实实推送。不过国内这推送,唉。多集成几个厂商推送吧。
|
![]() |
9
springz 7 天前
看什么应用,要是不是 toC 的,特定领域的,大不了一直放着音乐,霸占一个通知栏,也能活。
|
![]() |
10
springz 7 天前
放音乐这个要是进程被杀了,也拉不起来的。总之现在要是要求一直在线就厂商白名单吧,看自己公司有没有这个能量。
|
![]() |
11
springz 7 天前
用这个怼需求提出方也行,有这需求找手机厂商解决。
|
12
leafre 7 天前
无解,换种实现方式
|
14
cczhrd 7 天前
|
![]() |
15
darkengine 7 天前
这要是做到了,国外不敢讲,国内互联网大厂随便挑哈
|
16
aneostart173 7 天前
挺难的,而且一年比一年难。老实用推送,或者自己定制设备。
|
17
BlackBull19 7 天前
只能推荐推送了. 搞一个坚挺前后台切换的 然后走推送, 目前只能推送
|
![]() |
18
lqzhgood 6 天前
提示用户把 App 加入后台自启动能保活吗?
|
![]() |
19
cheng6563 6 天前
引导客户再设置里加后台运行白名单,别无他法。
|
21
basncy 6 天前 ![]() 包名改成 com.tencent.mobileqq
|
![]() |
22
PowerDi 6 天前
原来现在已经那么严重了吗?保活都需要专门的思路了?
|
![]() |
23
PowerDi 6 天前
如果保活那么困难,现在为什么那么多安卓用户还在苦于后台 CPU 在猛跑
|
24
basncy 6 天前
android 再先进的调度算法, 研究再多保活代码, 再多设置, 在这里可能就被某些国行厂商后台优化白名单一刀切了, 21 楼简单以暴制暴.
|
![]() |
25
SupperMary 6 天前
@PowerDi 厂家和 APP 有 py 交易
|
![]() |
26
darkengine 6 天前
@basncy 如果用户先安装了 qq ,这个包名的 apk 都安装不了。。。
|
![]() |
27
zinwalin OP @nothingistrue 如果是自己的定制安卓系统,有什么好办法保活吗? 我试了在系统级 App 里集成 MQTT Service ,放后台后,一样会收不到消息。
|
![]() |
31
springz 6 天前
自己定制的系统随便玩啊,找编译 ROM 的人把你 App 加进去。
|
![]() |
32
tanranran 6 天前
如果是定系统级,把 APP 放到 /system/priv-app/下即可
|
![]() |
34
winterbells 6 天前 via Android
dumpsys deviceidle whilelist +com.xxx
你都定制系统了,怎么后台权限还搞不定… |
35
SteveWoo 6 天前
不可能了,尤其是国外的文章不适合国情。 去 android 上把微信的白名单关了,微信去后台都收不到消息的。 国产厂商默认把微信加白名单,如果你们有实力去跟厂家谈谈。
|
![]() |
36
zinwalin OP @winterbells 感谢,dumpsys deviceidle whilelist +com.xxx 这台命令,如果不通过命令行,怎么默认加到系统里? 也就是编译时在哪里添加?
|
![]() |
37
documentzhangx66 6 天前
别的系统我不知道,小米系统就可以这样:
写个 APP 承载服务,然后让用户去系统里设置,该 APP 在后台能一直存活,不被限制。 |
38
passerby233 6 天前 via Android
参考这个库 https://github.com/hannesa2/paho.mqtt.android 然后在客户端的权限管理里开启自启动,电池省电策略更改为无限制就行了。
|
![]() |
39
treblex 6 天前
|
40
nothingistrue 6 天前
@PowerDi #23 高频激活——被杀——再激活这个循环,相比于单纯的常驻后台,CPU 消耗量可以多成百上千倍。Android 最大的问题不是常驻后台,而是自动唤醒方式多如牛毛。正常的常驻后台服务是消耗非常少的资源的(谷歌自带框架就是典型,几十个后台服务但是耗电量几乎无感)
|
![]() |
41
shanghai1998 6 天前
1 开启悬浮权限
2 挂到 push 的 sdk 里面 |
![]() |
42
zinwalin OP @passerby233 谢谢分享,我现在用的是
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.4' // MQTT implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' // MQTT service 你发的那个链接,是不是改过的? |
43
passerby233 6 天前 via Android
@zinwalin 是的,就是基于 eclipse 版本的 mqtt 库改的,改成 kotlin 版本的了,提供的功能都一致的。
|
![]() |
44
zinwalin OP @passerby233 多谢。
|
![]() |
45
zinwalin OP @shanghai1998 方便给下相关的文章或资料吗? 多谢
|
![]() |
47
zinwalin OP @passerby233 感谢分享
|