1.问题
推送通知,设置打开方式为打开指定Activity,如何在activity中获取到推送相关参数
2.解决方案
打开指定Activity时,在该Activity的onCreate()中调用如下代码获取指定参数:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云场景下,如果您使用的是阿里云推送服务(Push Service)来发送推送通知,并希望在指定的Activity中获取到推送携带的相关参数,可以参考以下步骤进行操作:
确保推送消息结构:在通过阿里云推送服务发送消息时,您需要在自定义消息体中包含您希望传递的参数。例如,您可以构造一个JSON对象作为message
字段的内容,该对象中可以包含"title"、"summary"以及任何自定义键值对。
设置打开页面与参数:在阿里云推送控制台或者通过API发送推送时,利用Notification
类或其对应的API参数来设置通知点击后打开的Activity以及如何携带参数。通常,您可以通过在自定义的Intent
中附加Extras来传递这些参数。
接收端处理:在目标Activity(即用户点击通知后启动的Activity)的onCreate()
方法中,您可以通过如下方式获取这些参数:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification_target);
// 获取启动Activity的Intent
Intent intent = getIntent();
// 从Intent中提取推送通知携带的参数
String title = intent.getStringExtra("title");
String summary = intent.getStringExtra("summary");
// 如果有额外的参数是以JSON字符串形式传递的,可以这样解析
String extraMapStr = intent.getStringExtra("extraMap");
if (extraMapStr != null) {
try {
JSONObject extraMap = new JSONObject(extraMapStr);
String customKeyExample = extraMap.optString("custom_key"); // 替换为您的自定义键
} catch (JSONException e) {
e.printStackTrace();
}
}
// 根据获取的参数进行后续处理...
}
请注意,上述代码示例假设您已经将参数以字符串的形式附加到了Intent中。如果在阿里云推送的消息结构中直接支持复杂数据类型传输,可能需要根据实际的传输格式调整解析逻辑。
务必确保在阿里云推送服务的配置和消息构建过程中,正确地设置了这些参数,以便于在客户端能够顺利接收并解析。