环信App是基于环信SDK开发的一款完整的类微信的聊天APP。展示的功能包括:注册新用户,用户登录,添加好友,单聊,群聊,发送文字,表情,语音,图片,地理位置等消息,以及实时音视频通话等。
运行demo之前,请务必先到环信管理后台创建您自己的应用并获取到Appkey,然后将获取到的Appkey配置到AndroidManifest.xml中。
<!-- 设置环信应用的AppKey --> <meta-data android:name="EASEMOB_APPKEY" android:value="创建应用获取到的Appkey" />
注册并创建应用的详情介绍,请移步环信官网:注册并创建应用
请移步环信官网:Android SDK 介绍及导入
请移步环信官网:场景DEMO及源码下载
(1)UI和业务逻辑解耦。
(2)有效避免生命周期组件内存泄漏。
(3)提高模块可测试性。
(4)提高应用稳定性,有效降低以下异常发生概率。
对于架构各部分的理解:
(1)Activity/Fragment为View层,主要是负责数据的展示刷新和交互事件的触发。
(2)ViewModel 是用来保存应用UI数据的类,它会在配置变更(Configuration Change)后继续存在。
(3)LiveData是一个具有生命周期感知特性的可观察的数据保持类。
(4)Repository(仓库),主要是用于各种数据的业务请求操作( 网络请求和数据库查询), 可以把它看作 Model 层的 一部分。
(5)Room 是在 Sqlite 之上添加的一个抽象层, 以便实现更加强大的数据库访问,其可直接返回 LiveData, 用于监听数据返回。
(1)Android Studio 3.2或更高版本。
(2)SDK targetVersion至少为26。
1、项目结构
项目分为主module和两个本地依赖库。
easeui是环信为了方便开发者快速使用环信SDK开发的UI库。
player是播放视频库,依赖于easeui。
2、主要功能介绍
项目是按照功能块进行项目分类,主要的功能块包含如下:
聊天,会议,联系人,会话,群组及聊天室,系统消息及关于环信等模块
chat模块,包含了聊天相关类,包含了聊天页面及其相关类,聊天历史类,音视频通话类等
conference模块,主要是会议相关类
contact模块,包含联系人列表,添加联系人,黑名单等
converstaion模块,主要是会话列表相关
dialog模块,是各类DialogFragment
group模块,主要包含群组和聊天室相关功能
login模块,主要包含登录,注册等功能
me模块,包含了个人信息,通用设置,开发者设置等功能
message模块,主要是系统消息功能
search模块,主要是各类搜索页面
3、重要类介绍
ChatActivity: 会话页面,核心类,主要逻辑写在 ChatFragment 中。ChatFragment 继承自 EaseChatFragment,EaseChatFragment实现了聊天列表功能,包含了发送文字,表情,图片等功能;ChatFragment展示了对EaseChatFragment的功能扩展实践。
DemoApplication:继承于系统的 Application 类,其 onCreate() 为整个程序的入口,相关的初始化操作都在这里面;
DemoHelper: Demo 全局帮助类,主要功能为初始化 EaseUI、环信 SDK 及 Demo 相关的实例,以及封装一些全局使用的方法;
MainActivity: 主页面,包含会话列表页面(ConversationListFragment)、联系人列表页(ContactListFragment)、设置页面(AboutMeFragment);
ConversationListFragment:会话列表类,继承自EaseConversationListFragment。ConversationListFragment展示了对EaseConversationListFragment类的扩展;
ContactListFragment:联系人列表类,继承自EaseContactListFragment。ContactListFragment展示了对EaseContactListFragment类的扩展。
第三方推送集成
设置当前登录用户的推送昵称
离线推送问题排查
1、如果遇到Error: Default interface methods are only supported starting with Android N (--min-api 24)问题
需要指定JDK版本
android { ...... //指定jdk版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
2、解决Android9.0以上强制使用https的问题
解决办法可以参考:StackOverFlow,也可以直接在AndroidManifest.xml文件的application标签中设置android:usesCleartextTraffic=“true”
<application android:usesCleartextTraffic="true" > ...... </application>
3、从github拉取源码,运行demo,遇到登录报缺失Appkey及注册demo崩溃
请先到环信管理后台创建您自己的应用并获取到Appkey,然后将获取到的Appkey配置到AndroidManifest.xml中。
<!-- 设置环信应用的AppKey --> <meta-data android:name="EASEMOB_APPKEY" android:value="创建应用获取到的Appkey" />
注册并创建应用的详情介绍,请移步环信官网:注册并创建应用