Unity—腾讯IM即时通讯SDK接入
- 前言
腾讯IM对Unity的支持很差,只提供接口返回数据,非常麻烦,然而安卓端使用Tuikt可以集成UI,自带安卓界面不需要写任何UI逻辑;
所以选择将Unity工程导出成安卓工程,在AndroidStudio中接入Tuikit的sdk;
- 准备工作
对于刚刚接触sdk的新手,要配置好java环境,下载对应版本的sdk,ndk,jdk等;具体操作自行百度,很重要;
- Unity端工作
通过AndroidJavaClass和AndroidJavaObject类调用Java端写好的方法
![](https://img2020.cnblogs.com/blog/2522637/202109/2522637-20210909180436793-1201886987.png)
- 安卓端工作
1.将Unity工程导出成安卓工程;
2.下载官方sdk,将Android文件夹中tuikit文件夹整个拷贝到导出的安卓工程中;tuikit配置需求
3.在setting.gradle中添加include ":tuikit" 点击同步(sync /小象);
4.检查tuikit中gradle里sdk版本,修改成和项目gradle中版本一致;
5.按官方文档添加布局文件layout.xml res件夹右键add,xml,layout;
6.创建需要的安卓activity类(界面),必须在UnityLibrary中AndroidManifest里注册Activity才能调用;
7.在UnityPlayerActivity类OnCreate方法中,给instance赋值;
8.在UnityPlayerActivity类OnCreate方法中,初始化IM;
9.在UnityPlayerActivity类OnCreate方法中,绑定conversationList界面,并初始化隐藏;
10.在UnityPlayerActivity类OnCreate方法中,给conversationlist界面中每个Item绑定点击事件;
11.写静态单例方法,供unity端调用;
12.写ShowUI方法,供unity端调用;
13.写用户登录方法,供Unity调用
- 坑点
1.gradle properties中添加升级AndroidX问题,在gradle properties中添加;
android.useAndroidX=true
android.enableJetifier=true
2.因为我只想使用ConversationList所以要隐藏掉一下多余的layout部件,比如标题,以及一个恶心的搜索框;
title直接在OnCreate中隐藏;
![](https://img2020.cnblogs.com/blog/2522637/202109/2522637-20210910093051527-868971800.png)
搜索框需要找到Conversationlayout.java中layout.xml文件修改,改初始高度;
![](https://img2020.cnblogs.com/blog/2522637/202109/2522637-20210910093707912-116802472.png)
3.缓存问题,每次退出再次打开IM,不再加载conversationlist列表,没找到问题所在,选择了暴力的清空存储list的文件夹,必须进去app时清空,退出时清空可能因为强退清空不彻底;清空时需要递归;
![](https://img2020.cnblogs.com/blog/2522637/202109/2522637-20210910093927279-645887367.png)
Life is too short for so much sorrow.
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0 许可协议。转载请注明来自 小紫苏!