码迷,mamicode.com
首页 > 其他好文 > 详细

百度云消息推送机制在即时通信聊天界面的信息处理,技巧篇。

时间:2015-07-26 12:43:47      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:即时通信   百度云推送   聊天实现   android   


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

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

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

   一:我们知道利用百度消息推送,要实现自己的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:消息在客户端以通知形式

    */

     @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后台推送消息内容至固定客户端(按照文档,添加相应jar):

 技术分享

  

  四:效果

   运行java后台,发送消息内容"hello"给客户端:

    技术分享

  

     运行java后台,发送消息内容"iam ok,are you?"给客户端:

    技术分享

   

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

百度云消息推送机制在即时通信聊天界面的信息处理,技巧篇。

标签:即时通信   百度云推送   聊天实现   android   

原文地址:http://blog.csdn.net/yianemail/article/details/47044019

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!