【从 0 开始开发一款直播 APP】10 腾讯云通信及SDK集成
本文为菜鸟窝作者蒋志碧的连载。“从 0 开始开发一款直播 APP ”系列来聊聊时下最火的直播 APP,如何完整的实现一个类"腾讯直播"的商业化项目
【从 0 开始开发一款直播 APP】10 腾讯云通信及SDK集成
【从 0 开始开发一款直播 APP】11 IM 登录实现
前面讲了那么多基础知识点,各种封装,一直还没正式讲到腾讯云,今天笔者给大家讲解腾讯云 IM 登录。在此之前,笔者先给大家讲解如何查看腾讯云官方文档,如果对文档没有一定的了解,估计直接看代码会很吃力的,而且不知所以然,因为笔者也尝试过直接看代码,苦逼了,看到某个类或者方法不知道是干嘛的,之后又去查文章,但是知识点琐碎,还是决定完完全全的看完文档再撸代码。这里只针对技术不是很好的朋友(比如笔者我),大神路过,勿喷。
云通信
首先进入腾讯云官网,打开云通信,第一次进入需要注册账号,没有注册的请先注册账号。
点击云通信会进入如下界面。
点击立即使用,注册好账号的朋友会进入到应用列表,第一次进入这里是没有应用的,下面笔者简单说明一下怎么创建应用。
点击左上角创建应用接入,弹出创建应用列表。根据自己需要为应用命名,点击确定之后将产生创建的应用。
红色矩形框中的就是刚创建的应用,点击应用配置进入配置界面。
应用平台栏目点击编辑。
建议全选,选完点击保存。
账号体系集成栏目点击编辑,进入如下页面,根据需求填写相关信息。这里选择独立模式(后面会讲解独立模式和托管模式),然后点击保存。
点击完成之后会看到如下信息,看到图中产生了下载「公私钥」,这个之后会介绍。可以看到这里产生了 accountType,刚创建应用的时候产生了 SdkAppId,这个就是我们在项目中 IM 登录 需要用到的参数,后面文章再讲。创建应用算是完成了,下面开始讲解如何集成 IMSDK 实现登录。
客户端集成
打开腾讯云帮助与文档,针对 IM 登录功能讲解文档的使用。
1、IMSDK 集成
打开官网,下载 IMSDK 相关的库文件。
进入到下载页面,选择 IM Android 下载。
下载好之后解压,打开找到 libs 目录,复制所有 jar 包粘贴到项目 libs 包下,然后点击同步。
创建 jniLibs 文件夹,将剩余文件复制到该目录(官方建议我们全部将文件拷到 libs 目录,笔者是拷了jar 包,把其它的放在 jniLibs 目录下),这里再普及一个知识点 Android jniLibs下目录详解(.so文件),不了解.so文件的可以看看。
全部完成之后就是这样。
官网会有相关包名简介,这里笔者进行了截图,方便不想看官网的童鞋查看。
创建一个新工程,并在AndroidManifest.xml 中添加以下权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1.8.0及以上版本需要在AndroidManifest.xml的<application></application>中添加以下配置(笔者为每个 service 或者 receiver 添加了部分注释,希望帮助读者快速理解其作用):
<!--负责网络收发包-->
<!-- 消息收发service -->
<service
android:name="com.tencent.qalsdk.service.QalService"
android:exported="false"
android:process=":QALSERVICE" >
</service>
<!--负责保护逻辑-->
<!-- 消息收发辅助service -->
<service
android:name="com.tencent.qalsdk.service.QalAssistService"
android:exported="false"
android:process=":QALSERVICE" >
</service>
<!--service收到消息后,app主进程不在时调用-->
<!-- 离线消息广播接收器 -->
<receiver
android:name="com.tencent.qalsdk.QALBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.tencent.qalsdk.broadcast.qal" />
</intent-filter>
</receiver>
<!--1,网络变化时重新建立TCP连接,比如:Wi-Fi切换-->
<!--2,收到最新广播时,如果service不在,会重新拉起-->
<!-- 系统消息广播接收器 -->
<receiver
android:name="com.tencent.qalsdk.core.NetConnInfoCenter" android:process=":QALSERVICE">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>
注意事项:
1、 集成IMSDK 1.9.0以上的版本时,需要引用ANDROID SDK API LEVEL 23+版本的 android-support-v4.jar。
2、由于从ANDROID SDK从API LEVEL 23开始去掉了http相关特性,所以在用API LEVEL 23以上ANDROID SDK版本进行编译时,需要增加对org.apache.http.legacy.jar的引用。具体参考 Android 6.0 Changes。
再普及一个知识点 Android API Level与sdk版本对照表,不知道 API 是什么版本的查看该博客对照,并下载相关文档。
后面的那些请读者自行查看官方文档,内容太多,并且笔者也没有官方写的好。
2、初始化 SDK
初始化示例官方给我们介绍了一个管理类 TIMManager,并给出了相关介绍,初始化操作就在 Application 中进行吧。
创建一个 Application 类继承 Application,实现 onCreate() 方法,并在 AndroidManifest.xml 文件中注册。
public class LiveApplication extends Application{
private static LiveApplication instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;
//初始化imsdk
TIMManager.getInstance().init(getApplicationContext());
//检测是否初始化并集成成功
Log.e("LiveApplication",TIMManager.getInstance().getVersion());
}
public static LiveApplication getInstance(){
return instance;
}
}
运行项目,在控制台看到如下信息就说明集成成功了。
本章只讲解腾讯云通信和SDK集成,下一节讲解 IM 登录实现。
注意:
SDK集成可能不是一次性就成功,会遇到某些问题(笔者就集成了不止一次),遇到问题的童鞋不要慌张,仔细对照官方文档以及示例,还有错误码等认真修改,会成功的。
客户端集成文档,IMSDK 文档简介
错误码文档,集成中所遇到的错误码上面基本上都有的,按照错误码进行改正就可以顺利集成
常见问题FAQ,使用中遇到的常见问题里面都有解决方案
腾讯云 Demo 简介,包括源码和 Demo,随心播笔者已经下载玩过了,直播的基本功能都已经实现,有兴趣的看以看看源码。
小直播 DEMO
随心播 iLiveSDK
直播技术知识结构
每个程序猿必备的110本经典编程书,免费领取地址:http://mp.weixin.qq.com/s/cx433vAj_CDLzmhOoUS6zA