集成华为手机Push SDK的小结

华为Push消息分为:通知栏消息和透传消息。透传消息,到达后,用户需要自己解析和展示,虽然灵活,但不能保证一定能收到,特别是应用退出后。因此选择了通知栏消息,点击通知栏消息的后续行为,可以有如下几类选择:

  1. 直接打开应用
  2. 通过自定义动作打开应用
  3. 打开URL
  4. 富文本消息
  5. 短信收件箱广告
  6. 彩信收件箱广告
本文主要涉及1和2类,如下为服务器端推送消息的结构体:

    private String notification_title; //M Notification bar上显示的标题
    private String notification_content; //M Notification bar上显示的内容
    private String notification_status_icon; //O 系统小图标名称,该图标预置在客户端,在通知栏顶部展示
    private String content_file_url ; // O 仅富媒体消息需要填写该字段

    /**
     * M 1:直接打开应用
     * 2:通过自定义动作打开应用
     * 3:打开URL
     * 4:富媒体消息
     * 5:短信收件箱广告
     * 6:彩信收件箱广告
     * 注意:当手机收到短信、彩信收件箱广告后,在收件人一栏显示的是应用在联盟上注册的名字
     */

    private Integer doings;
    private String smsContent; //O 短信收件箱广告内容; 当doings的取值为5时,该字段必须填写
    private String mmsUrl; // O 彩信收件箱广告附件链接
    private String url; //O 链接; 当doings的取值为3时,必须携带该字段

    private String intent; //O 自定义打开应用动作; 当doings的取值为2时,必须携带该字段
    private JSONArray extras; // JSON array O 用户自定义键值对; "extras":[{"season":"Spring"},{"weather":"raining"}]

一、直接打开应用

直接走启动应用的流程,当加入key-value的extras参数后,点击通知栏消息时,会触发PushReceiver的onEvent函数(当extras为空时,不会触发),获取key-value,但因为和启动流程并行,不太好做特殊处理。采用此方式关键参数的传递:

doings:1


二、自定义动作

采用传递需要打开Activity的intentUri值,从而打开指定的页面。采用如下方式生成对应的字符串:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("customscheme://com.mobile.mail189.activity/notify_detail"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("name", "zhangsan");
String intentUri = intent.toUri(Intent.URI_INTENT_SCHEME);
如上是隐式的方式,当然也能采用显示的指定具体的Activity。因为采用隐式,需要设置对应的intent-filter:



        
               
               
               

        
如果是采用如上的设置,服务器需要Push的参数为:

doings:2
inttent:intent://com.mobile.mail189.activity/notify_detail#Intent;scheme=customscheme;action=android.intent.action.VIEW;launchFlags=0x10000000;S.to=zhangsan;end



PS:项目中是需要一个新邮件到达的提醒,但当APP完全退出时,根本不在已登录状态,就不能获取到相关数据;因此点击通知栏消息时,没有任何反应。后来我只好跳转到了一个不需要登录的一个页面。


参考文档:

1、http://developer.huawei.com/consumer/cn/wiki/index.php?title=HMS%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC%E4%B9%A6-PUSH%E6%9C%8D%E5%8A%A1%E6%8E%A5%E5%8F%A3

2、http://club.huawei.com/thread-10204980-1-1-2851.html

3、http://developer.huawei.com/consumer/cn/wiki/index.php?title=%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3








你可能感兴趣的:(Android)