请选择 进入手机版 | 继续访问电脑版

重磅福利来袭!Android热门技术持续更新中......

发表于 04-06 10:42 显示全部楼层 177 4929

4月6号第一次更新

即时聊天(三天课程)


第二次更新(6月14日最新更新)

RxJava(全部四天课时)


第三次更新(8月5日最新更新)

热修复(一天课程)


第四次更新(6月14日最新更新)

WebView加强(一天课程)


———————— 华丽分割线 ————————


小码哥Android学院视频分享——即时聊天


    由于很多毕业的学员在开发时遇到不少关于即时聊天、RxJava、热修复等功能的APP开发,近期小码哥Android学院将以视频分享的方式不断推出大家关注的这些技术的学习视频,希望能够给予需要这方面技术的同学提供一个很好的引导帮助,同时对这些技术感兴趣的朋友也可以一起进行技术上的交流和探讨。

    今天就先跟随Android学院的王维波老师来学习基于XMPP实现的即时聊天功能。先看下总体内容:

   01.jpg

l  什么是即时聊天?

即时聊天可以简单理解为一种通讯协议,像我们常见的微信,QQ,YY、陌陌等都是属于即时聊天软件。

l  为什么使用XMPP?

有了解即时聊天的朋友可能都知道,像融云、环信这些第三方的IM即时通讯,底层也是基于XMPP来实现的,而且XMPP具有开放、标准、证实可用、分散式、安全、可扩展以及多样性等多种特点,在开发即时聊天时一般都会优先考虑选择它。

l  XMPP是什么?

简单来说,就是一种以XML为基础的开放式实时通信协议。

使用XMPP通讯协议,一般包含下面几个内容:XMPP+Openfire+ASmack。

XMPP:一种实时通信协议。

Openfire:主要是作为服务器,负责管理客户端的通信连接,以及提供客户端一些通信信息和连接信息。

ASmack:主要是XMPP协议的实现,提供了一套很好的API,操作XMPP都是通过使用Smack的API来实现,因为是在Android里,所以使用的是ASmack这个jar包。

  

初步了解了一些基本的知识点,我们就来看下一些具体功能的实现。


l  Openfire 服务器安装及配置

参照安装文档安装完 Openfire 服务器之后,可以创建几个用户用于测试。可以安装 spark、如意通这些客户端进行登录测试。这里主要是安装了spark。

02.png


l  项目创建及asmack源码关联

因为XMPP 即时聊天的核心主要是使用Smack的API,asmack.jar里面的一些常见类,以及常见监听器来实现的,所以需要添加jar包进行依赖和关联源码。

03.png


l  参考Smack API文档,实现登录功能

04.png


05.png


部分关键代码:

06.png

07.png


l  联系人的创建以及CRUD

    主要通过contentProvider缓存联系人信息到数据库,并进行增删查改操作,不用每次从消息通道中获取,还可以使用ContentObserver监听数据信息的改变,实时更新UI。(具体代码请下载源码查看)

08.png

09.png


效果图:

10.png

联系人功能实现之后,我们就可以开始进行聊天功能的开发。

 

l  通过点击联系人列表中某个item传递数据到聊天界面,并在聊天界面设置显示当前聊天的用户。

11.png

12.png


效果图:

13.png


l  实现聊天消息发送以及聊天信息保存

 

继续参考Smack API文档,查看聊天功能的实现方法。

14.png


点击发送后开始和发送对象聊天,这里需要先保存当前登录的对象,也就是发消息方的账

号,发送方的账号在登录完成后获得。

15.png

16.png

效果图:

18.png


聊天消息需要保存起来,用到ContentProvider和数据库。通过创建相关的用到ContentProvider和数据库,进行CRUD操作,实现聊天信息缓存。

19.png

20.png

21.png

22.png


在发送和接收消息时,保存消息,最后在聊天界面中获取。

23.png

24.png


效果图如下:

25.png


到这里为止,基本上一个简单的聊天功能就实现了,我们还可以对消息显示的布局、界面不可见时也能收到消息等问题做一定的完善,具体代码就不展示了,直接看效果图吧。

26.png



l  会话消息的实现

    

最后再说一下会话信息界面的实现过程,关键就是展示聊天会话的实时信息。

首先需要在SmsProvider中创建相应的URI,以及相应的匹配规则;显示会话联系人,这里只需要查询操作。

27.png

28.png


设置数据展示:

29.png

30.png

31.png


为了实现实时显示最新的数据,还需要暴露注册和反注册的方法。

32.png


最终效果图:

33.png



广场舞大妈说,如果跳的足够快,她的孤独就追不上她。

拾荒的大叔说,如果翻垃圾翻得足够仔细,便能找回丢失的自己。

碰瓷的大爷说,只要演的够逼真,就能骗过匆匆流逝的时光。

Android学院的老师对小编说

只要坚持学习Android热门技术,就一定能够改变人生和命运!



l  网盘视频链接及密码获取:

【PS:回复本帖后,下方将会显示网盘密码】

游客,如果您要查看本帖隐藏内容请回复



回复 使用道具
举报
wjw123321

发表于 08-20 21:54 显示全部楼层

小马哥,无敌, 我看了视频很不错,讲的很详细

回复 支持 反对 使用道具
举报
落叶片

发表于 08-18 09:28 来自手机 显示全部楼层

资料很棒,老师们更棒,让我在前行之路越走越远
回复 支持 反对 使用道具
举报
小鸟在前面带路

发表于 08-15 15:22 来自手机 显示全部楼层

感谢分享
回复 支持 反对 使用道具
举报
gibtoyea

发表于 08-15 14:36 显示全部楼层

收藏了

回复 支持 反对 使用道具
举报
kkang

发表于 08-07 17:29 显示全部楼层

好棒啊  支持支持

回复 支持 反对 使用道具
举报
yandongben

发表于 08-01 17:25 显示全部楼层

一直想学习即时通讯,感谢分享。

回复 支持 反对 使用道具
举报
xiongzenghui

发表于 07-30 00:53 来自手机 显示全部楼层

太强悍太强悍太强悍太霸气太霸气
回复 支持 反对 使用道具
举报
yangxw8820

发表于 07-28 13:20 显示全部楼层

太棒了

回复 支持 反对 使用道具
举报
cst1314520

发表于 07-28 12:34 来自手机 显示全部楼层

谢谢一直站着政治
回复 支持 反对 使用道具
举报

发表新文章
小码哥官方团队

小码哥教育

0

学分

1640

学币

3491

积分

小码哥教育

Rank: 5Rank: 5

积分
3491

小码哥一周年勋章活动达人勋章小码哥社区荣誉创始人勋章小码哥版主勋章真人认证勋章前100注册用户勋章社区第一人勋章意见领袖勋章真土豪勋章勋章

Ta的主页 发消息
精华帖排行榜

精彩推荐

  • 关注小码哥教育