zoukankan      html  css  js  c++  java
  • 百度云消息推送机制在即时通信聊天界面的信息处理,技巧篇。


           转载请注明出处http://blog.csdn.net/yianemail/article/details/47044019

          百度云消息推送,消息在client的处理以及消息显示方式是基于通知栏消息提示。

         可是这明显不是我们想要的效果,我们想要的是利用它实现聊天,即:在通信聊天界面怎样实时更新推送的消息,以不断接受的消息实现聊天。

       一:我们知道利用百度消息推送,要实现自己的PushMessageReceiver。 里边重要的是有三个方法,即:

         public class BaiduPushReceiverextends PushMessageReceiver 

         1,    

               /**

                * onBind :得到绑定请求的结果

                */

         @Override

         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:

        

       

        这样就完毕了即时通信聊天界面的实现效果。

  • 相关阅读:
    iOS开发——keychain的使用
    iOS开发——策略模式
    iOS开发——MVC模式
    iOS开发——代理模式
    ExtjsCode_Test02Panel.js
    网站收藏
    关于ExtJs Form表单的赋值、获取、重置
    ExtJS分页start,limit,pageSize的研究
    使Grid可编辑
    如何禁用Grid中的ToolBar中的Button
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7325247.html
Copyright © 2011-2022 走看看