进程不在,为何能收到PUSH?

在MIUI8系统的小米4手机上,即使杀掉了钉钉和微信的进程,钉钉仍能在通知栏接收到消息推送,而微信则不能。这可能是因为微信使用了remote多进程策略,只关闭了UI进程。其他可能的原因包括手机厂商的白名单机制、家族式应用代理接收推送、应用适配系统特性以及推送服务商与手机厂商的合作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

          以小米4手机MIUI8系统为例, 按HOME键杀掉钉钉、微信进程后。 执行adb shell ps命令查看, 确认没有微信和钉钉的后台进程。 

1、使用其它手机向该机发送微信和钉钉消息, 在通知栏里能看到钉钉的通知, 但是没有微信的。

2、再次执行adb shell ps命令, 仍然没有钉钉和微信的进程信息。


     为什么钉钉能收到推送, 而微信却不能? 

09-26 09:31:14.480 W/PushService( 2672): 2017-09-26 09:31:14,479 - [WARN::PushService] - [Thread:96] receive a message, appid=2882303761517296732, msgid= slm06b21506389472573tv
09-26 09:31:14.511 W/JavaCalls( 2672): Meet exception when call Method 'setGroup' in android.app.Notification$Builder@ad1560c
09-26 09:31:14.511 W/JavaCalls( 2672): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Class.isInterface()' on a null object reference
09-26 09:31:14.511 W/JavaCalls( 2672): 	at java.lang.Class.isAssignableFrom(Class.java:545)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.channel.commonutils.reflect.JavaCalls.compareClassLists(JavaCalls.java:213)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.channel.commonutils.reflect.JavaCalls.findMethodByName(JavaCalls.java:190)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.channel.commonutils.reflect.JavaCalls.getDeclaredMethod(JavaCalls.java:169)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.channel.commonutils.reflect.JavaCalls.callMethodOrThrow(JavaCalls.java:147)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.channel.commonutils.reflect.JavaCalls.callMethod(JavaCalls.java:132)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.MIPushNotificationHelper.getNotificationForLargeIcons(MIPushNotificationHelper.java:392)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.MIPushNotificationHelper.notifyPushMessage(MIPushNotificationHelper.java:143)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.MIPushEventProcessor.postProcessMIPushMessage(MIPushEventProcessor.java:349)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.MIPushEventProcessor.processMIPushMessage(MIPushEventProcessor.java:204)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.MIPushEventProcessor.processNewPacket(MIPushEventProcessor.java:83)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.ClientEventDispatcher.notifyPacketArrival(ClientEventDispatcher.java:132)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.PacketSync.handleBlob(PacketSync.java:177)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.PacketSync.onBlobReceive(PacketSync.java:110)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.XMPushService$BlobReceiveJob.process(XMPushService.java:1445)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.XMPushService$Job.run(XMPushService.java:1386)
09-26 09:31:14.511 W/JavaCalls( 2672): 	at com.xiaomi.push.service.JobScheduler$SchedulerImpl.run(JobScheduler.java:405)
09-26 09:31:14.524 W/PushService( 2672): 2017-09-26 09:31:14,522 - [WARN::PushService] - [Thread:96] try send mi push message. packagename:com.alibaba.android.rimet action:AckMessage
09-26 09:31:14.524 D/StatusBar( 1773): onNotificationPosted:  Key: 0|com.xiaomi.xmsf|1335515202|null|10094 GroupKey: 0|com.xiaomi.xmsf|1335515202|null|10094 Connected: true
09-26 09:31:14.526 D/StatusBar( 1773):  GroupChild: false  GroupsContainsKey: false  IsUpdate: true IsGroupSummary: false hasIcon: true
09-26 09:31:14.527 D/PhoneStatusBar( 1773): updateNotification pkg=com.alibaba.android.rimet;id=1335515202

         通过打印日志发现, MIUI系统实现了推送功能, com.alibaba.android.rimet是阿里钉钉的包名。 我推理猜测阿里钉钉跟小米进行了合作, 当没启动钉钉进程时, 钉钉服务器将消息转给小米服务器, 小米后台将消息推送到手机。 日志中没有微信的内容, 说明微信没适配小米的推送服务。

        点击微信图标启动应用后, 可以收到消息。 查询微信进程, 可以看到微信使用remote多进程的方式。如果添加了白名单,按home键杀进程时只会干掉其中的UI进程:appbrand0, 其它4个进程还在。



推断app进程不启动收PUSH的方法:

1、手机厂商添加白名单, 即可用进程可用后台常驻;  ---- 常规套路,需要跟厂商谈。

2、家族式兄弟app代理收推送;  ---- 大公司的手法

3、app适配手机系统, 就像上面MIUI那样。 ---  仅限于支持PUSH的系统版本

4、极光、个推等PUSH服务商跟各家手机厂商合作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值