一個(gè)擁有1-2 年經(jīng)驗(yàn)的開(kāi)發(fā)者,從0 到1 上線(xiàn)應(yīng)用只要7 天。一個(gè)剛起步的程序員,可以30 分鐘內(nèi)完成一個(gè) Demo。
這不是天方夜譚,而是融云場(chǎng)景化 SDK 帶給行業(yè)的創(chuàng)變。
商業(yè)社會(huì)兵貴神速,特別是以 Z 世代人群為目標(biāo)用戶(hù)的語(yǔ)音社交類(lèi)應(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)卿”爾。
今天,我們就來(lái)詳細(xì)了解一下,融云語(yǔ)聊房 SDK,是如何實(shí)現(xiàn)全面覆蓋語(yǔ)聊房業(yè)務(wù)場(chǎng)景,支持開(kāi)發(fā)者快速出活的。
01 語(yǔ)聊房了解一下
帶大家拆解這款“行業(yè)利器”之前,咱們先重新認(rèn)識(shí)一下語(yǔ)聊房。
語(yǔ)聊房,從字面上看就是語(yǔ)音聊天房,核心是多人實(shí)時(shí)語(yǔ)音交互。疫情之下,隨著 Clubhouse 的大火,語(yǔ)聊房業(yè)務(wù)迎來(lái)爆發(fā)期,語(yǔ)音社交成功出圈。

(融云語(yǔ)聊房 Demo)
從上圖看,語(yǔ)聊房 APP 的界面基本上由兩部分組成。
上半部分主要是用戶(hù)和麥位,對(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ì)有幾千人在線(xiàn),任何一個(gè)人上麥都需要在極短時(shí)間內(nèi)把麥位信息同步給房間內(nèi)所有人,這是第一個(gè)挑戰(zhàn)。
其次是麥位管理。
上麥,意味著用戶(hù)擁有了發(fā)布音頻流的能力,角色從觀眾切換為主播。
下麥則意味著主播變成普通用戶(hù),失去了發(fā)布音頻流的能力。
鎖麥,就是鎖定麥位,任何人都不可以上麥。
閉麥,顧名思義,該麥位上的用戶(hù)無(wú)法發(fā)言。
邀請(qǐng)上麥,由房主邀請(qǐng)聽(tīng)眾上麥互動(dòng)。
還有一些音頻類(lèi)的常規(guī)操作,比如靜音、混音、播放音樂(lè)等。
語(yǔ)聊房產(chǎn)品的核心是麥位管理,融云的語(yǔ)聊房解決方案,就是通過(guò)上麥、下麥等一系列麥位管理來(lái)對(duì)用戶(hù)和流進(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ù),滿(mǎn)足開(kāi)發(fā)者快速實(shí)現(xiàn)業(yè)務(wù)的需求。
那么在語(yǔ)聊房業(yè)務(wù)上,為開(kāi)發(fā)者提供類(lèi)似行業(yè)基建的 SDK,要處理哪些業(yè)務(wù)邏輯呢?

(房主端流程)
房主端流程:如圖,單主播情況下,房主需要調(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)處理。

(觀眾端流程)
觀眾端流程:如圖,觀眾瀏覽直播間列表,選擇感興趣的加入。加入后,語(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ò)容。
聊天室用戶(hù)新增,更新,刪除某個(gè)鍵值對(duì),其他用戶(hù)都會(huì)毫秒級(jí)速度收到 update 回調(diào),保持一定的持續(xù)性,不會(huì)造成亂序等問(wèn)題。
穩(wěn)定、可靠,同時(shí)更改多個(gè)鍵值對(duì)也能保證每個(gè)更新都觸發(fā)聊天室所有用戶(hù)回調(diào)。
這樣,語(yǔ)聊房的麥位狀態(tài)存儲(chǔ)和同步就可以比較順暢地實(shí)現(xiàn)了。

(加入房間邏輯)
以加入房間這一動(dòng)作為例:
用戶(hù)加入房間只需傳遞一個(gè) RoomId,語(yǔ)聊房 SDK 自動(dòng)幫用戶(hù)加入 IM Room 和 RTC Room,獲得收發(fā)消息和音視頻傳輸?shù)哪芰ΑT诩尤脒@些房間后,用戶(hù)就會(huì)收到一個(gè)回調(diào),以回調(diào)的方式獲得當(dāng)下最新的房間信息和麥位信息。
如圖所示,融云語(yǔ)聊房 SDK隱藏加入房間需要的多個(gè)操作,融合成傳遞 RoomId 一個(gè)步驟,為開(kāi)發(fā)者節(jié)省大量的研發(fā)工作。
在這個(gè)環(huán)節(jié),用基礎(chǔ)類(lèi) 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ì)。

(上麥邏輯)
以申請(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)的依賴(lài)倒置原則正好相反,特定場(chǎng)景的 API 設(shè)計(jì),不能特別依賴(lài)于抽象接口,而要特別貼近具體的場(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è)用戶(hù)踢下麥。
其次要可擴(kuò)展,無(wú)論是房間的屬性,還是麥位的屬性,SDK 都提供強(qiáng)大的可擴(kuò)展性,自定義程度高,覆蓋所有語(yǔ)聊房的場(chǎng)景,即便是語(yǔ)聊房中形式和內(nèi)容最復(fù)雜的狼人殺場(chǎng)景也可以滿(mǎn)足。
最后是簡(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è)全功能的線(xiàn)上開(kāi)源 Demo,接入時(shí)有充足的參考資源。
此外,在內(nèi)容安全要求趨嚴(yán)的背景下,融云還提供安全審查等關(guān)乎語(yǔ)聊房業(yè)務(wù)生死的通信周邊能力。開(kāi)發(fā)者只需在后臺(tái)設(shè)置中一鍵開(kāi)啟安全審查,即可接入數(shù)美等在線(xiàn)業(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ù)新范式。






