开发者社区 问答 正文

移动推送Android SDK:推送通知打开指定Activity时如何获取推送通知参数?



1.问题


推送通知,设置打开方式为打开指定Activity,如何在activity中获取到推送相关参数

2.解决方案


打开指定Activity时,在该Activity的onCreate()中调用如下代码获取指定参数:

  1. [backcolor=transparent]Intent[backcolor=transparent] intent [backcolor=transparent]=[backcolor=transparent] getIntent[backcolor=transparent]();
  2. [backcolor=transparent]// 通知标题
  3. [backcolor=transparent]String[backcolor=transparent] title [backcolor=transparent]=[backcolor=transparent] intent[backcolor=transparent].[backcolor=transparent]getStringExtra[backcolor=transparent]([backcolor=transparent]"title"[backcolor=transparent]);
  4. [backcolor=transparent]// 通知内容
  5. [backcolor=transparent]String[backcolor=transparent] summary [backcolor=transparent]=[backcolor=transparent] intent[backcolor=transparent].[backcolor=transparent]getStringExtra[backcolor=transparent]([backcolor=transparent]"summary"[backcolor=transparent]);
  6. [backcolor=transparent]// 通知额外参数
  7. [backcolor=transparent]String[backcolor=transparent] extraMap [backcolor=transparent]=[backcolor=transparent] intent[backcolor=transparent].[backcolor=transparent]getStringExtra[backcolor=transparent]([backcolor=transparent]"extraMap"[backcolor=transparent]);

展开
收起
猫饭先生 2017-10-23 14:00:50 1780 分享 版权
阿里云 AI 助理回答

在阿里云场景下,如果您使用的是阿里云推送服务(Push Service)来发送推送通知,并希望在指定的Activity中获取到推送携带的相关参数,可以参考以下步骤进行操作:

  1. 确保推送消息结构:在通过阿里云推送服务发送消息时,您需要在自定义消息体中包含您希望传递的参数。例如,您可以构造一个JSON对象作为message字段的内容,该对象中可以包含"title"、"summary"以及任何自定义键值对。

  2. 设置打开页面与参数:在阿里云推送控制台或者通过API发送推送时,利用Notification类或其对应的API参数来设置通知点击后打开的Activity以及如何携带参数。通常,您可以通过在自定义的Intent中附加Extras来传递这些参数。

  3. 接收端处理:在目标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中。如果在阿里云推送的消息结构中直接支持复杂数据类型传输,可能需要根据实际的传输格式调整解析逻辑。

务必确保在阿里云推送服务的配置和消息构建过程中,正确地设置了这些参数,以便于在客户端能够顺利接收并解析。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答