
IM即时通讯
安全可靠、全球互通

实时音视频
流畅稳定、省钱省力
回答:
整体建议:
一般上架均是问题一、四,按方案处理即可;如果实际遇到问题二、三后,再使用相应解决方案
<action android:name="io.rong.push.intent.action.HEART_BEAT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
解决方案1:
4.x版本,升级到4.1.2.11;
5.x版本,5.1.9.8版本以下,升级到5.1.9.8;
5.x版本,5.1.9.8版本以上,升级到5.3.4版本或最新版(在官网https://www.rongcloud.cn/downloads/history/Android?_sasdk=fNw 查看最新版本 )
解决方案2:
复制如下代码到主App的AndroidManifest.xml文件中即可。
<receiver android:name="io.rong.push.rongpush.PushReceiver" android:exported="true" android:process="io.rong.push"> <intent-filter tools:node="removeAll"> <action android:name="io.rong.push.intent.action.HEART_BEAT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <intent-filter tools:node="removeAll"> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> </receiver>
示例:
com.android.server.am.BroadcastQueue.processNextBroadcast(BroadcastQueue.java:1391) com.android.server.am.BroadcastQueue$BroadcastHandler.handleMessage(BroadcastQueue.java:176) android.os.Handler.dispatchMessage(Handler.java:106) android.os.Looper.loop(Looper.java:164) android.os.HandlerThread.run(HandlerThread.java:65) com.android.server.ServiceThread.run(ServiceThread.java:46)
解决方案,关闭RongPush自启动:
客户端调用init、connect,在connect回调连接成功后调用如下代码
RongPushClient.cancelPushHeartBeat() RongPushClient.stopService() RongPushClient.stopRongPush()
备注:4.x和5.x处理方案相同;这3个方法调用顺序可以不分前后;
示例:
堆栈:io.rong.imlib.HeartbeatReceiver、或无详细自启动堆栈。
解决方案,关闭后台心跳自启动:
RongIMClient.getInstance().cancelSDKHeartBeat();
此方法在初始化之前、连接成功之后,分别调用一次即可,所有版本均适用
注意:初始化之前调用此代码,需要添加try catch
try { RongIMClient.getInstance().cancelSDKHeartBeat(); } catch (Exception e) { }
报错堆栈示例:
com.xiaomi.push com.xiaomi.push.service.receivers.NetworkStatusReceiver action=android.net.conn.CONNECTIVITY_CHANGE com.android.server.am.BroadcastQueue.processNextBroadcast(BroadcastQueue.java:1391) com.android.server.am.BroadcastQueue$BroadcastHandler.handleMessage(BroadcastQueue.java:176) android.os.Handler.dispatchMessage(Handler.java:106) android.os.Looper.loop(Looper.java:164) android.os.HandlerThread.run(HandlerThread.java:65) com.android.server.ServiceThread.run(ServiceThread.java:46)
解决方案,去掉主工程的 AndroidManifest.xml 中红圈内的Receiver:
备注:该Receiver是在小米推送SDK新版集成文档中已经去掉(https://dev.mi.com/console/doc/detail?pId=2774#_1_2)
融云集成文档也将会同步更新去掉此Receiver。
如果io.rong.callkit引起自启动;
或者如下Action触发自启动;
或如下Action不合规
<action android:name="android.intent.action.PHONE_STATE" />
解决方案:
复制如下代码到主App的AndroidManifest.xml文件中即可。
<receiver android:name="io.rong.callkit.util.RTCPhoneStateReceiver" android:exported="true"> <intent-filter tools:node="remove"> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver>