详细解答可以参考官方帮助文档
修改后务必先卸载原有App然后重新安装,不要直接覆盖安装。
- 请检查您的APP的versionName参数,versionName参数不能为null,同时长度不能超过32位。如果versionName参数不符合要求,请更改versionName参数。
8、推送消息,设备端日志显示已经收到推送,但用户回调未被调用。推送消息在端上的路由过程涉及到发送应用内广播,部分设备存在广播拦截,请确认您的设备是否存在该问题:
1.正常情况下的日志:
第一条
handleRemoteMessage
日志说明消息已经到达端上,第二条AgooMessageReceiver
日志表明用户自定义Receiver已经接收到广播。2.如果只有第一条日志,未出现第二条日志则说明receiver没有正常接收到广播,需要测试设备是否会拦截广播。测试代码如下:
Intent intent = new Intent();
intent.setAction("org.agoo.android.intent.action.RECEIVE");
intent.setPackage(pack);//pack为应用包名
intent.putExtra("type", "common-push");
intent.addFlags(32);
context.sendBroadcast(intent);//请使用ApplicationContext进行测试
利用上述代码给您的自定义receiver发送广播,测试Receiver是否可以收到对应广播,如果还是收不到则说明存在广播拦截情况。
3.如果存在拦截情况,请确认你的设备是否不允许监听系统广播:在manifest.xml文件中将自定义receiver所监听的系统广播注释掉,具体操作如下文代码所示:
<!-- 消息接收监听器 (用户可自主扩展) -->
<receiver
android:name=".demo.MyMessageReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" />
</intent-filter>
<intent-filter>
<action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" />
</intent-filter>
<intent-filter>
<action android:name="com.taobao.accs.intent.action.COMMAND" />
</intent-filter>
<intent-filter>
<action android:name="com.taobao.taobao.intent.action.COMMAND" />
</intent-filter>
<intent-filter>
<action android:name="org.agoo.android.intent.action.RECEIVE" />
</intent-filter>
<!--<intent-filter>-->
<!--<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />-->
<!--</intent-filter>-->
<!--<intent-filter>-->
<!--<action android:name="android.intent.action.USER_PRESENT" />-->
<!--</intent-filter>-->
<!--<intent-filter>-->
<!--<action android:name="android.intent.action.BOOT_COMPLETED" />-->
<!--</intent-filter>-->
<!--<intent-filter>-->
<!--<action android:name="android.intent.action.PACKAGE_REMOVED" />-->
<!--<data android:scheme="package" />-->
<!--</intent-filter>-->
</receiver>
重复步骤2的操作,观察是否会可以成功接收广播。如果可以则说明您的设备rom不允许监听系统广播。当前receiver不监听系统广播不影响功能的正常使用,但会影响SDK的保活能力。
9、- 设备绑定标签后,服务端按该标签推送,隔天(T + 1
)才能生效送达,参考Android API介绍 - 标签API。
1.判断channel是否执行初始化方法:查看channel进程是否有如下日志输出,如无则表示未执行相应初始化操作
12-26 11:26:19.673 1951-1951/com.alibaba.push2:channel I/SecurityBoxService: Aliyun
12-26 11:26:19.677 1951-1951/com.alibaba.push2:channel I/MPS:CloudPushService: [AMS]Initialize Mobile Push service...
12-26 11:26:19.727 1951-1951/com.alibaba.push2:channel D/MPS:CloudPushService: load utdid: Vs6CkGxR86QDANku3NiLD/yA
12-26 11:26:19.743 1951-1951/com.alibaba.push2:channel D/MPS:AppRegister: getLooper called.
12-26 11:26:19.744 1951-1989/com.alibaba.push2:channel D/MPS:AppRegister: Looping Prepared.
12-26 11:26:19.744 1951-1989/com.alibaba.push2:channel D/MPS:AppRegister: Looping handleMessage: 1
12-26 11:26:19.747 1951-1989/com.alibaba.push2:channel D/MPS:AppRegister: accs init.
12-26 11:26:19.747 1951-1989/com.alibaba.push2:channel D/MPS:AppRegister: initAccsChannel...
12-26 11:26:19.748 1951-1989/com.alibaba.push2:channel I/MPS:AppRegister: [AMS]appkey:23552881
2.常见错误:
(1) 用户在自定义Application中执行推送SDK初始化时做了进程判断,导致初始化操作只在主进程执行。错误代码如下所示:
public class MyApplication extends Application {
@override
public void onCreate() {
super.onCreate();
if(如果是主进程) {
initCloudChannel(this);
}
}
......
}
(2) 用户在activity中进行相关初始化,activity只会在主进程创建,导致相关操作只能在主进程执行。错误代码如下所示:
public class MyActivity extends Activity {
@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initCloudChannel(getApplicationContext());
......
}
......
}
turnOffPushChannel
接口。如果是,必须再次调用turnOnPushChannel
接口重新打开推送通道。若上述步骤仍未能定位问题,可以:
移动推送
。反馈问题时,请附带下述格式化的问题上下文信息,方便快速定位问题(带*项必填):
您的操作行为:
异常的现象:
设备的平台(Android?iOS?),机型,系统版本号:
推送类型(消息?通知?):
推送方式(all? account?device?tag?alias?):
* appkey:
* 消息ID(控制台可以查到):
* deviceid(终端日志可以看到):
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。