JPush在进程关掉后就收不到消息了

android
jpush
标签: #<Tag:0x00007fb83b8b18e8> #<Tag:0x00007fb83b8b1708>

(longdawei) #1

小米手机测试的。
当关掉进程后,也就是按下小米手机menu实体键释放内存后就收不到消息了,而且再次启动应用也收不到消息。
如果释放内存后收不到消息无法解决,那么我再次启动应用时收不到消息怎么解决。我用了JPushInterface.resumePush也没有用。
@Lris @lavenderln @Floriss


#2

请提供下你这种情况下的客户端日志,判断一下是否长连接断开了。

https://docs.jiguang.cn/jpush/client/Android/android_api/#_82

以及你可能和这个情况类似:


(longdawei) #3

很高兴看到你的回答。
进程关掉后(也就是按小米menu键后弹出来再按“X”)然后重新启动应用,收不到消息,但是屏幕关闭重新解锁屏幕后能收到。我想问的是,我能否在屏幕不关闭,但是软件重新打开后就恢复服务然后正常的接收到消息呢。


#4

你说的这一改变过程,你应该看看客户端日志,是否是你的手机系统对app的网络 在某一阶段做了限制。

app打开,是否能连接上,得看你手机的状态和你手机系统对app的限制情况。

注意小米的几个权限

建议你在收不到消息的时候获取一下当前连接状态
https://docs.jiguang.cn/jpush/client/Android/android_api/#_82

看一下你的客户端日志,是否有反应App的网络被手机系统断开等情况的发生。


(longdawei) #5

getConnectionState这个返回的结果是true。但就是收不到消息,必须在屏幕关闭再打开后才能正常接收。网络没有被手机系统断开这种情况发生。网络一直是好的。


#6

我们这边测试的时候没有遇到你说的情况,所以麻烦请提供下详细的信息:
1、[quote=“longdawei1988, post:3, topic:11336, full:true”]
进程关掉后(也就是按小米menu键后弹出来再按“X”)然后重新启动应用,收不到消息
[/quote]

这段时间的客户端日志
2、[quote=“longdawei1988, post:3, topic:11336”]
屏幕关闭重新解锁屏幕后能收到
[/quote]

这段日志
3、检查你手机对你App的权限控制情况具体是怎么样的。
4、要判断的不是你的手机网络是好的,是你的App的网络是不是好的,有可能:


(longdawei) #7

怎么提供日志啊?难道是logcat中打印的信息?


#8

(longdawei) #9

logjpush.txt (891.3 KB)

你好,这个日志是我项目的日志,进程结束,然后打开应用收不到消息,然后关闭屏幕后重新打开屏幕能够收到消息。谢谢。


#10

根据你提供的这个日志,看不出什么问题。
最好把所有的操作步骤日志发来,从 能收到通知到关闭应用重启收不到通知的日志。

最好使用JPush进行筛选,这个日志太杂了。


(longdawei) #11

logjpush.txt (4.2 KB)


(longdawei) #12

这个是新抓取的log,还麻烦抽空看下,谢谢。点击小米的“X”关闭进程后确实收不到消息,程序再次启动后还是收不到,但是屏幕关闭并打开屏幕后就能接收到了。


#13

我们根据你的日志,看到的信息如下:

15:53:51 完成一次心跳。
15:54:46 sdk 内部给用户的 receiver 发送一个广播。 (是这条收不到吗??)

之后到解锁为止,都没有 JMessage 的打印,这个时候应该是处于进程被杀的状态。

15:57:04 收到解锁广播,完成一次心跳。
15:58:59 解锁广播,重启 push 服务,初始化成功

15:59:01 sdk 内部给用户的 receiver 发送一个广播。
15:59:15 完成一次心跳。

你的问题在哪个时间点呢?


#14

需要向你确认 “…… 程序再次启动之后还是收不到”,意思是没收到之前推送的那一条,还是重启之后再发别的推送也收不到?

有可能超过离线保留时长,离线消息条数超出的情况存在。

是三种状态分别推送了一次?还是关闭进程后发的一条消息,在之后的三种状态下能否收到 这样的测试呢?

并,注意小米的几个权限,可能是系统对app有所限制
https://docs.jiguang.cn/jpush/client/Android/android_faq/#_2


(longdawei) #15

不好意思,今天太忙了,现在才看到回复。
程序杀掉进程后再次启动是收不到消息的,不管是新发送的消息还是在杀掉进程前发送的消息都收不到。只有在屏幕关闭并重新打开屏幕后才能收到之前发送的推送或者新发送的推送才能正常接收。


(longdawei) #16

15:57:04 收到解锁广播,完成一次心跳。
在这个时间点之前应用我又重新启动了一次,但是还是收不到新发送的消息。
在这个时间点之后之前发送的消息会接收到,新发送的消息也会正常接收。


#17

在15:57:04 那个时间点之前就没看到 JMessage 的打印了(服务没有启动)。

你是只用 JPush 的功能吗? 用push sdk ,提供日志,我们看的更清楚。


(longdawei) #18

jpush和jmessage我都在用。日志难道不是用adb logcat么?push sdk怎么提供日志?不太明白。


#19

诶,我的意思是,如果只使用JPush的功能,就只用JPush的SDK,然后测试提供出现问题的日志。