应用上架小米应用市场的问题及处理方案

:tipping_hand_man: 一般应用上架遇到的问题均是问题一、问题四,您按方案处理即可。如果实际遇到问题二、问题三,再使用相应解决方案。

问题一:IM SDK 部分 action 不合规

可能出现以下 action 之一不合规:

<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" />

解决方案 A:升级 SDK 版本

  • 4.1.1版本,升级到 4.1.1.24或更高版本;
  • 4.1.2版本,升级到 4.1.2.15或更高版本;
  • 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 ) 查看最新版本 )

解决方案 B:修改应用程序的 AndroidManifest.xml

复制如下代码到主 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>

问题二:IM SDK 后台自启动 processNextBroadcast

示例:

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 自启动:

客户端需要在下列两个时机调用以下三个方法:

  1. 调用 init方法之前;
  2. 调用 connect 回调连接成功后。

备注:4.x 和 5.x 处理方案相同;这三个方法调用顺序可以不分前后。

RongPushClient.cancelPushHeartBeat()
RongPushClient.stopService()
RongPushClient.stopRongPush()

问题三:IM SDK 无详细堆栈或 HeartbeatReceiver 自启动

示例:

堆栈:io.rong.imlib.HeartbeatReceiver、或无详细自启动堆栈。

解决方案:关闭后台心跳自启动

RongIMClient.getInstance().cancelSDKHeartBeat();

此方法在初始化之前、连接成功之后,分别调用一次即可,所有版本均适用**

注意:初始化之前调用此代码,需要添加 try catch

try {
    RongIMClient.getInstance().cancelSDKHeartBeat();
} catch (Exception e) {
}

问题四:小米推送 SDK 应用自启动

报错堆栈示例:

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 中去掉 com.xiaoxi.push.service.receivers.NetworkStatusReceiver,如下图红圈所示:

小米推送 SDK 文档中已经去掉该 Receiver。融云集成文档也已同步更新去掉此 Receiver。

问题五:音视频 SDK io.rong.callkit 自启动

如果 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>

问题六:未同步告知申请权限的使用目的