30 分鐘搭建語(yǔ)聊房,融云場(chǎng)景化 SDK 是怎么做到的?

一個(gè)擁有 1-2 年經(jīng)驗(yàn)的開(kāi)發(fā)者,從 0 到 1 上線應(yīng)用只要 7 天。一個(gè)剛起步的程序員,可以 30 分鐘內(nèi)完成一個(gè) Demo。

這不是天方夜譚,而是融云場(chǎng)景化 SDK 帶給行業(yè)的創(chuàng)變。

商業(yè)社會(huì)兵貴神速,特別是以 Z 世代人群為目標(biāo)用戶的語(yǔ)音社交類應(yīng)用。國(guó)家統(tǒng)計(jì)局的數(shù)據(jù)顯示,1995 年到 2009 年出生的Z 世代人口接近 2.6 億。而相比“前輩”,他們的偏好更加個(gè)性、悅己、多變,社交上更講究圈子、同好。

語(yǔ)音社交因沉浸式的情感交互而被 Z 世代 pick,但應(yīng)用要不斷圍繞主流模式嘗試突破,依靠玩法創(chuàng)新?lián)屨枷葯C(jī),否則產(chǎn)品也就是“類卿”爾。

今天,我們就來(lái)詳細(xì)了解一下,融云語(yǔ)聊房 SDK,是如何實(shí)現(xiàn)全面覆蓋語(yǔ)聊房業(yè)務(wù)場(chǎng)景,支持開(kāi)發(fā)者快速出活的。

30 分鐘搭建語(yǔ)聊房,融云場(chǎng)景化 SDK 是怎么做到的?

01 語(yǔ)聊房了解一下

帶大家拆解這款“行業(yè)利器”之前,咱們先重新認(rèn)識(shí)一下語(yǔ)聊房。

語(yǔ)聊房,從字面上看就是語(yǔ)音聊天房,核心是多人實(shí)時(shí)語(yǔ)音交互。疫情之下,隨著 Clubhouse 的大火,語(yǔ)聊房業(yè)務(wù)迎來(lái)爆發(fā)期,語(yǔ)音社交成功出圈。

30 分鐘搭建語(yǔ)聊房,融云場(chǎng)景化 SDK 是怎么做到的?

(融云語(yǔ)聊房 Demo)

從上圖看,語(yǔ)聊房 APP 的界面基本上由兩部分組成。

上半部分主要是用戶和麥位,對(duì)比生活中的場(chǎng)景,像一個(gè)有一位主持人和八位發(fā)言者的講座,臺(tái)下有若干聽(tīng)眾;聽(tīng)眾若有興趣發(fā)言,走上講臺(tái),拿起麥克風(fēng)就可以變成發(fā)言人。

下半部分則是一些常規(guī)的聊天室模式,承擔(dān)發(fā)送信息、發(fā)送禮物等功能。

開(kāi)發(fā)這樣一款產(chǎn)品,一般會(huì)面對(duì)什么問(wèn)題呢?

首先是麥位信息同步。一個(gè)語(yǔ)聊房可能會(huì)有幾千人在線,任何一個(gè)人上麥都需要在極短時(shí)間內(nèi)把麥位信息同步給房間內(nèi)所有人,這是第一個(gè)挑戰(zhàn)。

其次是麥位管理。

上麥,意味著用戶擁有了發(fā)布音頻流的能力,角色從觀眾切換為主播。

下麥則意味著主播變成普通用戶,失去了發(fā)布音頻流的能力。

鎖麥,就是鎖定麥位,任何人都不可以上麥。

閉麥,顧名思義,該麥位上的用戶無(wú)法發(fā)言。

邀請(qǐng)上麥,由房主邀請(qǐng)聽(tīng)眾上麥互動(dòng)。

還有一些音頻類的常規(guī)操作,比如靜音、混音、播放音樂(lè)等。

語(yǔ)聊房產(chǎn)品的核心是麥位管理,融云的語(yǔ)聊房解決方案,就是通過(guò)上麥、下麥等一系列麥位管理來(lái)對(duì)用戶和流進(jìn)行同步管理的 SDK。

02 語(yǔ)聊房業(yè)務(wù)流程

經(jīng)過(guò)多年發(fā)展,融云的 IM 和 RTC 已經(jīng)是行業(yè)基建。開(kāi)發(fā)者使用 PaaS 服務(wù)商的這些能力,可以很方便地實(shí)現(xiàn)即時(shí)通訊和實(shí)時(shí)音視頻的業(yè)務(wù)應(yīng)用。

但是,把 RTC、IM 能力和場(chǎng)景玩法相結(jié)合的復(fù)雜業(yè)務(wù),實(shí)現(xiàn)起來(lái)依然面臨不小的困難。基于對(duì)行業(yè)的深厚積累和前瞻判斷,融云推出下一代場(chǎng)景化 SDK 解決方案,首發(fā)場(chǎng)景聚焦與 Z 世代深度黏合的語(yǔ)聊房業(yè)務(wù),滿足開(kāi)發(fā)者快速實(shí)現(xiàn)業(yè)務(wù)的需求。

那么在語(yǔ)聊房業(yè)務(wù)上,為開(kāi)發(fā)者提供類似行業(yè)基建的 SDK,要處理哪些業(yè)務(wù)邏輯呢?

30 分鐘搭建語(yǔ)聊房,融云場(chǎng)景化 SDK 是怎么做到的?

(房主端流程)

房主端流程:如圖,單主播情況下,房主需要調(diào)用接口加入一個(gè)房間,然后邀請(qǐng)觀眾上麥或者處理觀眾的上麥請(qǐng)求。同時(shí),房主還擁有閉麥、鎖麥等麥位管理權(quán)限。

多主播情況下,首先要處理麥上人員的語(yǔ)音互動(dòng),這意味著主播需要互相訂閱流來(lái)聽(tīng)到彼此的聲音;房主可以調(diào)用接口關(guān)閉連麥者麥克風(fēng),或讓連麥者下麥;通過(guò)聊天室屬性,所有人都可以監(jiān)聽(tīng)到房間內(nèi)狀態(tài)的變化,然后做出響應(yīng)處理。

30 分鐘搭建語(yǔ)聊房,融云場(chǎng)景化 SDK 是怎么做到的?

(觀眾端流程)

觀眾端流程:如圖,觀眾瀏覽直播間列表,選擇感興趣的加入。加入后,語(yǔ)聊房自動(dòng)訂閱直播流;監(jiān)聽(tīng)語(yǔ)聊房狀態(tài),更新房間 UI 和麥位 UI;收到直播結(jié)束消息,調(diào)用語(yǔ)聊房接口退出房間。

03 語(yǔ)聊房場(chǎng)景三大難題,融云如何通關(guān)

語(yǔ)聊房應(yīng)用實(shí)現(xiàn)面臨三大技術(shù)難關(guān):

1)、麥位狀態(tài)如何進(jìn)行云端存儲(chǔ)與通知

2)、如何實(shí)現(xiàn)邀請(qǐng)上麥和排麥請(qǐng)求機(jī)制

3)、如何設(shè)計(jì) API

首先,麥位狀態(tài)的云端存儲(chǔ)與通知。

答案是——利用融云的聊天室屬性管理能力。

每個(gè)聊天室提供 100 個(gè) key-value 的鍵值對(duì),特殊需求也可以申請(qǐng)擴(kuò)容。

聊天室用戶新增,更新,刪除某個(gè)鍵值對(duì),其他用戶都會(huì)毫秒級(jí)速度收到 update 回調(diào),保持一定的持續(xù)性,不會(huì)造成亂序等問(wèn)題。

穩(wěn)定、可靠,同時(shí)更改多個(gè)鍵值對(duì)也能保證每個(gè)更新都觸發(fā)聊天室所有用戶回調(diào)。

這樣,語(yǔ)聊房的麥位狀態(tài)存儲(chǔ)和同步就可以比較順暢地實(shí)現(xiàn)了。

30 分鐘搭建語(yǔ)聊房,融云場(chǎng)景化 SDK 是怎么做到的?

(加入房間邏輯)

以加入房間這一動(dòng)作為例:

用戶加入房間只需傳遞一個(gè) RoomId,語(yǔ)聊房 SDK 自動(dòng)幫用戶加入 IM Room 和 RTC Room,獲得收發(fā)消息和音視頻傳輸?shù)哪芰?。在加入這些房間后,用戶就會(huì)收到一個(gè)回調(diào),以回調(diào)的方式獲得當(dāng)下最新的房間信息和麥位信息。

如圖所示,融云語(yǔ)聊房 SDK隱藏加入房間需要的多個(gè)操作,融合成傳遞 RoomId 一個(gè)步驟,為開(kāi)發(fā)者節(jié)省大量的研發(fā)工作。

在這個(gè)環(huán)節(jié),用基礎(chǔ)類 IM 和 RTC 能力開(kāi)發(fā)需要2 到 3 天,使用融云語(yǔ)聊房 SDK 只需 10 分鐘。

其次,如何實(shí)現(xiàn)邀請(qǐng)機(jī)制和申請(qǐng)機(jī)制。

要實(shí)現(xiàn)順暢的邀請(qǐng)和申請(qǐng)機(jī)制,有兩點(diǎn)基礎(chǔ)。第一,邀請(qǐng)的發(fā)送和接收信令必須是有序、準(zhǔn)確的。第二,信令不能丟失。基于融云 IM 通訊服務(wù)安全、可靠、高效的信令通道,在這方面有天然優(yōu)勢(shì)。

30 分鐘搭建語(yǔ)聊房,融云場(chǎng)景化 SDK 是怎么做到的?

(上麥邏輯)

以申請(qǐng)上麥為例,開(kāi)發(fā)者自己實(shí)現(xiàn)需要先設(shè)計(jì)和實(shí)現(xiàn)一套自己的信令服務(wù)。使用融云語(yǔ)聊房 SDK,只需要一句 RequestSeat(請(qǐng)求麥位),房主端或有管理權(quán)限的成員,會(huì)收到一個(gè)回調(diào),選擇 accept 或 reject,觀眾端隨即收到相應(yīng)回調(diào)。

這一業(yè)務(wù)邏輯上,融云語(yǔ)聊房 SDK 為開(kāi)發(fā)者簡(jiǎn)化了百分之八十的操作。

最后,如何設(shè)計(jì) API。

這是整個(gè) SDK 中最復(fù)雜的部分,也直接決定了它的實(shí)用性。功能做得再?gòu)?qiáng)大,如果無(wú)法以簡(jiǎn)單易懂的方式呈現(xiàn),也會(huì)因?yàn)閷W(xué)習(xí)成本太大而讓人望而卻步。

在這方面,融云希望降低開(kāi)發(fā)者的學(xué)習(xí)成本,讓他們只通過(guò)文件的注釋和命名就基本了解使用辦法。

為了達(dá)到這個(gè)目標(biāo),融云的語(yǔ)聊房 SDK 在設(shè)計(jì) API 時(shí),首要原則是貼近業(yè)務(wù)。與傳統(tǒng)的依賴倒置原則正好相反,特定場(chǎng)景的 API 設(shè)計(jì),不能特別依賴于抽象接口,而要特別貼近具體的場(chǎng)景。

在語(yǔ)聊房 SDK 的使用中,開(kāi)發(fā)者只要了解語(yǔ)聊房的基本模式,就能通過(guò)接口的命名,了解接口的功能,幾乎可以零學(xué)習(xí)成本掌握。

比如,enterSeat(index: Int)接口,index 設(shè)置為麥的序號(hào),就完成了這一麥位上角色轉(zhuǎn)換、流的訂閱等一系列操作。muteSeat(index: Int)接口則可以關(guān)閉某個(gè)麥位上的聲音;kickUserFromSeat(userId: String)接口就可以把某個(gè)用戶踢下麥。

其次要可擴(kuò)展,無(wú)論是房間的屬性,還是麥位的屬性,SDK 都提供強(qiáng)大的可擴(kuò)展性,自定義程度高,覆蓋所有語(yǔ)聊房的場(chǎng)景,即便是語(yǔ)聊房中形式和內(nèi)容最復(fù)雜的狼人殺場(chǎng)景也可以滿足。

最后是簡(jiǎn)潔易用,語(yǔ)聊房 SDK核心接口只有 20 個(gè),大部分場(chǎng)景只需要其中 10 個(gè)基本上就可以實(shí)現(xiàn)業(yè)務(wù)。核心功能回調(diào)只有 23 個(gè),對(duì)于不太關(guān)注性能或不需要兼容低端手機(jī)的業(yè)務(wù),開(kāi)發(fā)者只需關(guān)心麥位信息和房間信息的變更兩個(gè)回調(diào)就可以。

而且,融云提供結(jié)構(gòu)清晰的文檔指南,緊貼語(yǔ)聊房場(chǎng)景,每部分都包含簡(jiǎn)潔易懂的視頻示例,并提供一個(gè)全功能的線上開(kāi)源 Demo,接入時(shí)有充足的參考資源。

此外,在內(nèi)容安全要求趨嚴(yán)的背景下,融云還提供安全審查等關(guān)乎語(yǔ)聊房業(yè)務(wù)生死的通信周邊能力。開(kāi)發(fā)者只需在后臺(tái)設(shè)置中一鍵開(kāi)啟安全審查,即可接入數(shù)美等在線業(yè)務(wù)風(fēng)控解決方案提供商提供的安全審查服務(wù),為開(kāi)發(fā)者的業(yè)務(wù)開(kāi)展保駕護(hù)航。

結(jié)合 IM + RTC + X“全”通信解決方案和對(duì)具體場(chǎng)景的業(yè)務(wù)邏輯抽取,融云的場(chǎng)景化 SDK 解決方案,將為開(kāi)發(fā)者提供快速切入新賽道和發(fā)展多元業(yè)務(wù)的下一代服務(wù)新范式。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )