之前的项目要来了新需求,需要集成腾讯云IM(别问我为什么选择腾讯云,坑多文档烂这我都知道),关键人家根据DAU,可以提供免费服务。上面的意思还有人家是做IM起家的,所以就选择了腾讯云。那么我们就撸起袖子来干吧!
首先,下载腾讯云的demo,导入后可以看到除了主包外还有4个module先分别介绍下, presentation是业务逻辑处理层,tlslibrary是腾讯的TLS集成层(集成腾讯云IM可选择分为独立模式/托管模式,TLS是托管模式所依附的模块),SDK为IM的SDK层,UI更简单了,顾名思义,就是UI的绘制与渲染全部都在这一层(只提供了一个模板),正因为demo中是使用MVP+模块化,已经把业务分解出来了,所以我们在套用demo中的代码就简单了。
下面来说一下怎么集成,在我们自己的项目中选择Import Module:
选择demo中的ui层即可,因为其他的模块都是互相依赖引用,所以只导入UI,系统会自动帮我们把其他的模块也导入。
如果你的项目是SDK21或以下,腾讯云的demo中已经对6.0的运行时权限做了处理。这里你需要手动处理一下,给6.0的permission代码干掉。比如这样:
如果你的项目中还引入的别的SDK,也调用了JNI .so文件,那么请添加下图所示的代码来解决.so文件冲突
接下来,请在你的app.gradle文件下添加
multiDexEnabled true
compile 'com.android.support:multidex:1.0.1'
javaMaxHeapSize "4g"
application中重写attachBaseContext(Context base)并添加
MultiDex.install(base);
这里不多说,解决65535。
如果你做到了这一步,正好,application中你还需要初始化腾讯云IMSDK,来继续操作吧~
好,我们在继续进入InitBusiness这个类中看一下是如何封装的。
这里把项目申请的APPID和ACCOUNT_TYPE,替换成我们自己的。
注意标红的地方,如果你在看腾讯云demo的时候,一定是没有这一句的,我们是使用的独立模式,所以这里要手动添加上这行代码,并使用腾讯分发给我们account_type。否则会出现初始化失败的提示,错误码是70XX,或者100XX?靠,我忘记了。好吧,这不重要。
在接下来,就需要配置我们的androidmanifest.xml,参考demo,copy过来就可以,没有配置的参数,不需要修改。
现在想实现可视化页面,就需要把demo中的activity,model,util,res,drawble等复制过来了,有什么错误,缺什么资源就去对应找什么资源。
如果你是第一次用的话,根据不同的需求,估计会用上你2-3个小时的时间。
当你的项目不再报错,不在有红线的时候,
你可以先进入聊天页面看一下,ChatActivity,这里已经封装好了静态方法。
我们这里只需要实现群聊功能,说一下,好友关系链,群关系链,群管理链这些都是由腾讯控制,不需要你来操心了,而且这些关系链的初始化操作最好放在登录之前。
现在再试试,看看我们的基本功能,
文本,没问题,语言,没问题。等等,上滑取消语言发送的功能没有,我们去demo里看一下,果然demo里也没有,这里需要自己实现,或者砍到这个功能,随你。继续看,发送图片没问题,表情也没问题,发送文件。好吧,又来了,这是什么鬼,只显示了文件的名字。体验太差了吧,好吧,那么我们自己来修改一下,
找到model下的FileMessage类, 顾名思义,文件消息类,看来是这里控制的。
好的,看到这一行代码了,
tv.setText(e.getFileName();
原来如此,我们看看通过还可以get到什么,是不是有个e.getFileSize()的方法。这样我们还可以得到这个文件的大小。
那么我们来修改吧,通过动态添加控制来实现我们想要的效果。
最后看看完成的效果图:
好像丑了一点,不过还可以,只要再找UI切点酷炫的切图,在重新设计下字体的尺寸颜色,就可以了。
至于用户头像的显示,这个是本地的资源目录,如果你想你服务器上存储的用户头像也可以,腾讯云应该提供了获取头像的办法,还是蛮周到的。
至于聊天文本的气泡效果更换,这是.9图,如果你自己不会做.9图,那就让UI切给你就好了。
以上呢,就是接入腾讯云IM的实践工作,做的比较简单比较lower。请各位大佬不要嫌弃,对于初次尝试接入IM的小伙伴有所帮忙就好了。
先写到这里,想起来的话再补充,就酱,拜~