获得推送创建通知的相关内容

来源:互联网 发布:mac系统pdf编辑软件 编辑:程序博客网 时间:2024/06/05 06:47

      现在越来越多的app当中运用到了消息推送的功能,接收并解析完消息后一般需要点击在通知栏显示出来并可被点击。根据这样的业务逻辑,我总结了一下获取到推送消息显示到通知栏并可被点击的操作:

     方法一:

API 11以下:

     1.新建一个notificationManager的对象

      NotificationManager manager = context.getSystemService(Context.NOTIFICATION_SERVICE);

     2.新建一个notification对象

     Notification no = new Notification(icon, tickerText, when);

     参数解析:icon是显示的图片,tickerText是在通知栏闪烁显示的文字 ,when何时显示,以当前时间为基线。

    3.notification的相关设置

       notification.flags = Notification.FLAG_AUTO_CANCEL;// 点击自动清除通知

       notification.defaults = Notification.DEFAULT_ALL;//设置消息到来的时候是否有铃声 是否振动

   4.设置notification的点击事件----启动一个activity,此处的activity要设置 new-Task

       PendingIntent contentIntent = PendingIntent.getActivity(context, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);

       参数解析:context是当前界面的上下文 ,requestcode是请求码,一般用不到,intent是点击要执行的操作。

       notification.setLatestEventInfo(context, title, content, contentIntent);

       设置notification的点击事件,title为通知的标题,content为通知的内容。

  5.将通知显示出来

      manager.notify(id,notification)

      参数解析:id为通知的id。


 第二种方法:API在11以上 使用的是Notification.Builder;

      1.创建NotifictionManager的对象,用来管理notification

        NotificationManager manager = context.getSystemService(Context.NOTIFICATION_SERVICE);        

      2.创建notification创建者的对象并进行设置。

       Notification.Builder builder = new Notification.Builder(context).setTicker(显示于屏幕顶端状态栏的文本").setSmallIcon();

     设置在导航栏显示的文字跟图标

     3.设置notification的点击事件

     Intent intent = new Intent(context,ActivityXXX.class);

    intent.setFlags(Intent.FLAG_New_TASK);

    PendingIntent pendingIntent = PendingIntent.getActivity(上下文,请求码,intent,PendingIntent.FLAG_UPDATE_CURRENT);

   4.设置nofication显示的样式

    //系统样式

    Notification note  =  builder.setContentIntent(pendingIntent).setTitle(title).setContentText(content).build();

   //自定义样式:

   RemoteView view =  new RemoteView(context.getPackageName(),R.layout,XXX);

   view.setImageViewResource(R.id.icon,R.mipmap.ic_launcher); 
   view.setTextViewText(R.id.tv_title,"天气预报");
   view.setTextViewText(R.id.tv_content,"今晚有大到暴雨");
   Notification notification = builder.setContent(view).setContentIntent(pendingIntent).build();

   5.显示出notification

    manager.notify(id,note);

    第三种方法:也是使用的是Notification builder

   1.创建Notification的管理器

   NotificationManager manager = context.getSystemService(Context.NOTIFICATION_SERVICE);

    2.创建notification的创建者

   Notification.Builder builder = new Notification.Builder(context).setTicker().setSmallIcan();

   3.设置Notification的点击事件

   Intent intent = new Intent();

  intent.setClass(MainActivity.this,XXXActivity.class);

   intent.setFlags(Intent.FLAG_New_TASK);

   PendingIntent pendingIntent = PendingIntent.getActivity(上下文,请求码,intent,PendingIntent.FLAG_UPDATE_CURRENT);

4.设置notification的样式 此处用的是自定义的样式

 RemoteViews view = new RemoteViews(context.getPackageName(),R.layout,XXX);

  view.setImageViewResource(R.id.icon,R.mipmap.ic_launcher); 
   view.setTextViewText(R.id.tv_title,"天气预报");
   view.setTextViewText(R.id.tv_content,"今晚有大到暴雨");
   Notification note = builder.build();

    note.contentView = view;

    note.contentIntent = pendingIntent;

  5.显示出notification

  manager.notify(id,note);

OK,结束了。。。以后有机会再补充,上传源码。


1 0