百度雲消息推送機制在即時通訊聊天界面的信息處理,技巧篇。


       轉載請註明出處http://blog.csdn.net/yianemail/article/details/47044019java

      百度雲消息推送,消息在client的處理以及消息顯示方式是基於通知欄消息提示。android

     但是這明顯不是咱們想要的效果,咱們想要的是利用它實現聊天,即:在通訊聊天界面怎樣實時更新推送的消息,以不斷接受的消息實現聊天。app

   一:咱們知道利用百度消息推送,要實現本身的PushMessageReceiver。 裏邊重要的是有三個方法,即:ide

     public class BaiduPushReceiverextends PushMessageReceiver 函數

     1,    post

           /**spa

            * onBind :獲得綁定請求的結果.net

            */code

     @Overridexml

     publicvoid onBind(Context context,int errorCode, String appid,

     String userId, String channelId, String requestId) {}

    2。          

           /**

            *  onMessage :接受透傳消息 

            */

     @Override

     publicvoid onMessage(Context context, String message,

     String customContentString) {}


    3。         

          /**

    * onNotificationArrived:消息在client以通知形式

    */

     @Override

     publicvoidonNotificationArrived(Context context, String title,

     String description, String customContentString) {}

    

 

      onBind:在該函數中可以獲得綁定結果。即可以拿到userId以及channelId(Java後臺也是基於這兩個信息實現本身推送)

        onMessage:在該函數是處理透傳消息。何爲透傳。就是說你可以直接在該應用執行時接受消息,而不是以標題欄通知的形式顯示。

這也是咱們實現的重點

        onNotificationArrived:推送消息以通知的形式。


二:聊天界面是一個ListView,咱們要作的就是在消息透傳onMessage函數裏邊。推斷當前應用是否正在啓動,假設正在啓動,就直接把接受到的消息更       新在聊天界面。

(假設推斷沒有啓動,再以標題欄通知的形式進行通知。

    

     

    推斷應用是否正在啓動:

     

	public static boolean isRunningApp(Context context, String packageName) {
           boolean isAppRunning = false;
	   ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
	   for (RunningTaskInfo info : am.getRunningTasks(100)) {
	   if (info.topActivity.getPackageName().equals(packageName) && info.baseActivity.getPackageName().equals(packageName)) {
				isAppRunning = true;
				break;
			}
		}
		return isAppRunning;
	}

  每次收到消息後及時在聊天界面實現更新,這重要的一點。假如咱們要跳轉界面是MainActivity,則在mainfest.xml把MainActivity   啓動模式設置爲:

   

    android:launchMode="singleTask" 

   

   跳轉界面: 而後在聊天界面中的onResume函數進行聊天界面更新處理

	public void JumpActivity(Context context, String Msg) {
		Comment.Msg = Msg;
		Intent intent = new Intent();
		intent.setClass(context.getApplicationContext(), MainActivity.class);
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.getApplicationContext().startActivity(intent);

	}

   三:利用java後臺推送消息內容至固定client(依照文檔。加入對應jar):

 

  

  四:效果

   執行java後臺,發送消息內容"hello"給client:

    

  

     執行java後臺。發送消息內容"iam ok,are you?"給client:

    

   

    這樣就完畢了即時通訊聊天界面的實現效果。

相關文章
相關標籤/搜索