应用研发平台EMAS安卓离线消息点击事件是什么回调呀,试了好几种不生效?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在EMAS移动推送中,安卓离线消息的点击事件回调机制与在线消息有所不同。以下是针对离线消息点击事件的详细说明和解决方案:
当设备处于离线状态时,推送的消息会通过厂商通道(如华为、小米、OPPO等)送达。这类消息通常以通知的形式展示给用户,而不会直接触发应用内的回调方法。
onMessage()
回调,开发者可以自定义处理逻辑。离线消息的点击事件回调依赖于以下配置:
如果离线消息需要支持点击事件,必须启用辅助弹窗功能,并确保以下参数正确配置: - AndroidRemind:设置为true
,表示推送类型为消息时,设备不在线时会使用辅助弹窗功能。 - AndroidPopupTitle 和 AndroidPopupBody:服务端推送时需设置这些参数,用于定义通知的标题和内容。
在推送消息时,需要指定一个全类名的Activity(例如:com.example.app.push.PopupPushActivity
),用于处理通知点击事件。
- 该Activity需要在AndroidManifest.xml
中声明,并确保其能够接收广播。 - 示例代码如下:
<activity android:name=".push.PopupPushActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
当用户点击通知时,系统会启动指定的Activity,并通过onSysNoticeOpened
方法传递数据。您需要在Activity中实现以下逻辑: - 在onSysNoticeOpened
方法中获取服务端推送的Title
和Body
参数值。 - 示例代码如下:
public class PopupPushActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if (intent != null) {
String title = intent.getStringExtra("title");
String body = intent.getStringExtra("body");
// 根据title和body处理业务逻辑
}
}
}
如果离线消息点击事件未生效,请参考以下排查步骤:
AndroidRemind
参数已设置为true
。AndroidPopupTitle
和AndroidPopupBody
参数已正确填写。AndroidManifest.xml
中声明。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进行测试
manifest.xml
文件中是否注释掉了相关系统广播的监听器。通过以上配置和排查步骤,您可以有效解决安卓离线消息点击事件不生效的问题。如果问题仍未解决,建议联系阿里云技术支持团队获取进一步帮助。