1. 程式人生 > >獲得推送建立通知的相關內容

獲得推送建立通知的相關內容

      現在越來越多的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,結束了。。。以後有機會再補充,上傳原始碼。