【從 0 開始開發一款直播 APP】10 騰訊雲通訊及SDK整合

weixin_34337265發表於2017-05-05

本文為菜鳥窩作者蔣志碧的連載。“從 0 開始開發一款直播 APP ”系列來聊聊時下最火的直播 APP,如何完整的實現一個類"騰訊直播"的商業化專案


【從 0 開始開發一款直播 APP】10 騰訊雲通訊及SDK整合
【從 0 開始開發一款直播 APP】11 IM 登入實現


前面講了那麼多基礎知識點,各種封裝,一直還沒正式講到騰訊雲,今天筆者給大家講解騰訊雲 IM 登入。在此之前,筆者先給大家講解如何檢視騰訊雲官方文件,如果對文件沒有一定的瞭解,估計直接看程式碼會很吃力的,而且不知所以然,因為筆者也嘗試過直接看程式碼,苦逼了,看到某個類或者方法不知道是幹嘛的,之後又去查文章,但是知識點瑣碎,還是決定完完全全的看完文件再擼程式碼。這裡只針對技術不是很好的朋友(比如筆者我),大神路過,勿噴。

雲通訊

首先進入騰訊雲官網,開啟雲通訊,第一次進入需要註冊賬號,沒有註冊的請先註冊賬號。

5205232-4a5313fbd8724ba0.jpeg

點選雲通訊會進入如下介面。
5205232-c28433030fb716c1.jpeg

點選立即使用,註冊好賬號的朋友會進入到應用列表,第一次進入這裡是沒有應用的,下面筆者簡單說明一下怎麼建立應用。
5205232-1c34642948b52642.jpeg

點選左上角建立應用接入,彈出建立應用列表。根據自己需要為應用命名,點選確定之後將產生建立的應用。
5205232-f489f1e0c48f3f28.jpeg

紅色矩形框中的就是剛建立的應用,點選應用配置進入配置介面。
5205232-c547576722a1731b.jpeg

應用平臺欄目點選編輯。
5205232-a55b153698a8e87c.jpeg

建議全選,選完點選儲存。
5205232-fe4150321af41d5f.jpeg

賬號體系整合欄目點選編輯,進入如下頁面,根據需求填寫相關資訊。這裡選擇獨立模式(後面會講解獨立模式和託管模式),然後點選儲存。
5205232-1c0ea905b85151e1.jpeg

點選完成之後會看到如下資訊,看到圖中產生了下載「公私鑰」,這個之後會介紹。可以看到這裡產生了 accountType,剛建立應用的時候產生了 SdkAppId,這個就是我們在專案中 IM 登入 需要用到的引數,後面文章再講。建立應用算是完成了,下面開始講解如何整合 IMSDK 實現登入。
5205232-687ce5c3a3ca41aa.jpeg

客戶端整合

開啟騰訊雲幫助與文件,針對 IM 登入功能講解文件的使用。

1、IMSDK 整合

開啟官網,下載 IMSDK 相關的庫檔案。

5205232-73494c9805471f28.jpeg

進入到下載頁面,選擇 IM Android 下載。
5205232-4c8aea2a1e45715e.jpeg

下載好之後解壓,開啟找到 libs 目錄,複製所有 jar 包貼上到專案 libs 包下,然後點選同步。
5205232-2192caf4e44d1c1c.jpeg

建立 jniLibs 資料夾,將剩餘檔案複製到該目錄(官方建議我們全部將檔案拷到 libs 目錄,筆者是拷了jar 包,把其它的放在 jniLibs 目錄下),這裡再普及一個知識點 Android jniLibs下目錄詳解(.so檔案),不瞭解.so檔案的可以看看。
5205232-0ae4d1fa2d54e361.jpeg

全部完成之後就是這樣。
5205232-567f0f78805aae3f.jpeg

官網會有相關包名簡介,這裡筆者進行了截圖,方便不想看官網的童鞋檢視。
5205232-4e8c40af3d862772.jpeg

建立一個新工程,並在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 中進行吧。


5205232-61e9fdd68a75b0c2.jpeg

建立一個 Application 類繼承 Application,實現 onCreate() 方法,並在 AndroidManifest.xml 檔案中註冊。


5205232-b2c2bb45e7824c30.jpeg
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;
    }
}

執行專案,在控制檯看到如下資訊就說明整合成功了。


5205232-fa4a00d4bbcf45da.jpeg

本章只講解騰訊雲通訊和SDK整合,下一節講解 IM 登入實現。

注意:
SDK整合可能不是一次性就成功,會遇到某些問題(筆者就整合了不止一次),遇到問題的童鞋不要慌張,仔細對照官方文件以及示例,還有錯誤碼等認真修改,會成功的。
客戶端整合文件,IMSDK 文件簡介
錯誤碼文件,整合中所遇到的錯誤碼上面基本上都有的,按照錯誤碼進行改正就可以順利整合
常見問題FAQ,使用中遇到的常見問題裡面都有解決方案

騰訊雲 Demo 簡介,包括原始碼和 Demo,隨心播筆者已經下載玩過了,直播的基本功能都已經實現,有興趣的看以看看原始碼。
小直播 DEMO
隨心播 iLiveSDK
直播技術知識結構

每個程式猿必備的110本經典程式設計書,免費領取地址:http://mp.weixin.qq.com/s/cx433vAj_CDLzmhOoUS6zA

相關文章