进程不在,为何能收到PUSH?
来源:互联网 发布:下载淘宝网商城 编辑:程序博客网 时间:2024/05/22 13:00
以小米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= slm06b21506389472573tv09-26 09:31:14.511 W/JavaCalls( 2672): Meet exception when call Method 'setGroup' in android.app.Notification$Builder@ad1560c09-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 reference09-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:AckMessage09-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: true09-26 09:31:14.526 D/StatusBar( 1773): GroupChild: false GroupsContainsKey: false IsUpdate: true IsGroupSummary: false hasIcon: true09-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服务商跟各家手机厂商合作。
阅读全文
0 0
- 进程不在,为何能收到PUSH?
- 应用保活--杀死进程也能收到推送消息
- 成都能收到的广播频率
- Resin为何能支持PHP
- Java为何能跨平台
- iOS收到Push后播放声音和震动
- iOS 收到推送从AppDelegate push 到详细页面
- 收到远程push的消息,如何给图标+1.
- 一个核物理学霸为何两次收到BlackHat的邀请
- 目标进程收到消息后崩溃
- .收到
- 极光推送 web推送能收到 api推送收不到 但是安卓可以收到
- 为神马两次send一次就能收到
- 大家一般要多久能收到钱呢?
- Ringly智能戒指:能在手机收到消息时发光
- 极光推送能收到通知却收不到自定义消息
- 极光推送能收到通知却收不到自定义消息
- “黄金搭档”为何能“忽悠”这么久
- bzoj4773: 负环
- C# 引用Org.BouncyCastle.Crypto 签名&解密
- Vue知识
- Day3(上) 一篇文章带你吃透ViewPager的三大用法及刷新问题
- 基于opencv和Tensorflow的实时手势识别(1)
- 进程不在,为何能收到PUSH?
- 为什么PHICH配置信息和下行带宽dl-bandwith必须在PBCH MIB上广播
- 设计模式7-装饰模式
- Linux下rar tar bz gz等命令压缩和解压详解 rar------------------------------------------------------------------
- centos7.2系统优化
- WordPress中的__()和_e()函数的作用
- 笔试分析题
- NCBI SRA数据库使用详解
- nginx 禁止访问配置,指定URL地址指定IP允许访问