【从 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,079评论 25 707
  • 本文为菜鸟窝作者蒋志碧的连载。“从 0 开始开发一款直播 APP ”系列来聊聊时下最火的直播 APP,如何完整的实...
    菜鸟窝阅读 3,256评论 0 8
  • 如果你不主动展示自己,一辈子都会是一颗默默无闻的小螺丝钉。这是人才辈出的年代,处处机遇,也处处充满竞争。老板不可能...
    Una笑笑阅读 191评论 0 0
  • 今天参加一葬礼,家属们在接待室等骨灰,朋友同事们聚在接待室的门口闲聊,站累了想坐下,却见长椅破旧不堪,还满是各种碎...
    过往如云阅读 153评论 0 0
  • 那是父亲病重后的有一天,父亲疼痛难忍,遂电话与我问询怎么办,我也没辙,便说明早来杭找主治医生。 第二天一早,母亲陪...
    柬埔寨庄稼汉阅读 350评论 0 1