一、導(dǎo)語(yǔ)
微信為小程序開發(fā)者提供了直播組件,通過(guò)調(diào)用該組件,商家可以小程序中實(shí)現(xiàn)直播功能。
(學(xué)習(xí)視頻分享:編程視頻)
下面我們來(lái)介紹如何在小程序中引入直播組件。
二、使用方法說(shuō)明
1. 【直播組件】如何引入
版本限制:
微信客戶端版本 7.0.7 及以上(基礎(chǔ)庫(kù)版本2.9.x 及以上支持同層渲染)可以觀看直播及使用直播間的功能,低版本剛進(jìn)入直播間時(shí)會(huì)提示用戶升級(jí)微信客戶端版本(低版本只能觀看直播,無(wú)法使用直播間的功能)。
在分包內(nèi)引入【直播組件】live-player-plugin代碼包,項(xiàng)目根目錄的 app.json 引用,示例代碼如下:
{ "subpackages": [ { "root": "packageA", "pages": [ "pages/home/home" ], "plugins": { "live-player-plugin": { "version": "1.0.0", // 填寫該直播組件最新版本號(hào),微信開發(fā)者工具調(diào)試時(shí)可獲取最新版本號(hào) "provider": "wx2b03c6e691cd7370" // 必須填該直播組件appid,該示例值即為直播組件appid } } } ] }
2. 【直播組件】如何使用
按第1步的方法把組件代碼包配置引入后,即可直接通過(guò)鏈接地址跳轉(zhuǎn)到直播組件頁(yè)面(即為進(jìn)直播間頁(yè)面)鏈接地址需要帶上直播房間id;房間id可通過(guò)下面【獲取直播房間列表】API獲取,示例代碼如下:
<navigator url="plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=[直播房間id]"> Go to Live Player page </navigator>
通過(guò)該鏈接可跳轉(zhuǎn)到直播組件頁(yè)面(當(dāng)前頁(yè)面入口僅開放‘live-player-plugin’)。
示例效果圖如下:
三、其他相關(guān)組件、接口和攜帶參數(shù)
● 訂閱組件:subscribe
● 獲取直播狀態(tài)API:getLiveStatus
● 直播間到商詳頁(yè)面攜帶參數(shù):room_id
● 從群分享卡片返回直播間時(shí)攜帶參數(shù):shareTicket
● 后臺(tái)獲取直播房間列表API
● 后臺(tái)獲取回放源視頻API
注:以上2個(gè)后臺(tái)調(diào)用的接口總上限500次/天
1. 【訂閱】組件
功能解釋:
用戶進(jìn)入直播間內(nèi),可對(duì)一場(chǎng)未開播的直播進(jìn)行單次訂閱,開播時(shí)直播組件會(huì)自動(dòng)下發(fā)開播提醒給用戶,無(wú)需開發(fā)者額外開發(fā)
組件使用:
如果需要在直播組件頁(yè)以外小程序其他頁(yè)面也有同樣的開播提醒的功能,可以引入【訂閱】組件subscribe;需在page頁(yè)面(如home頁(yè)面)的 home.json 引用訂閱組件,示例代碼如下:
{ "usingComponents": { "subscribe": "plugin-private://wx2b03c6e691cd7370/components/subscribe/subscribe" } }
然后便可在home.wxml里使用訂閱組件,其中直播房間id可通過(guò);房間id可通過(guò)下面【獲取直播房間列表】API獲取
<subscribe room-id="[直播房間id]"></subscribe>
2. 【獲取直播狀態(tài)】接口
接口說(shuō)明:
首次獲取立馬返回直播狀態(tài),往后間隔1分鐘或更慢的頻率去輪詢獲取直播狀態(tài);
直播狀態(tài)說(shuō)明:
l 101直播中:表示主播正常開播,直播正常的狀態(tài);
l 102未開始:表示主播還未開播;
l 103已結(jié)束:表示在直播端點(diǎn)擊【結(jié)束】按鈕正常關(guān)閉的直播,或直播異常15分鐘后系統(tǒng)強(qiáng)制結(jié)束的直播;
l 104禁播:表示因違規(guī)受到運(yùn)營(yíng)處罰被禁播;
l 105暫停中:表示在MP小程序后臺(tái)-控制臺(tái)內(nèi)操作暫停了直播;
l 106異常:表示主播離開、切后臺(tái)、斷網(wǎng)等情況,該直播被判定為異常狀態(tài),15分鐘內(nèi)恢復(fù)即可回到正常直播中的狀態(tài);如果15分鐘后還未恢復(fù),直播間會(huì)被系統(tǒng)強(qiáng)制結(jié)束直播;
l 107已過(guò)期:表示直播間一直未開播,且已達(dá)到在MP小程序后臺(tái)創(chuàng)建直播間時(shí)填寫的直播計(jì)劃結(jié)束時(shí)間,則該直播被判定為過(guò)期不能再開播;
調(diào)用方法:
若要調(diào)用【獲取直播狀態(tài)】接口getLiveStatus,需在小程序頁(yè)面頂部引用【直播組件】live-player-plugin,示例代碼如下:
let livePlayer = requirePlugin('live-player-plugin') // 引入獲取直播狀態(tài)接口
// 首次獲取立馬返回直播狀態(tài),往后間隔1分鐘或更慢的頻率去輪詢獲取直播狀態(tài)
const roomId = xxx // 房間id livePlayer.getLiveStatus({ room_id: roomId }) .then(res => { // 101: 直播中, 102: 未開始, 103: 已結(jié)束, 104: 禁播, 105: 暫停中, 106: 異常,107:已過(guò)期 const liveStatus = res.liveStatus }) .catch(err => { console.log(err) })
3. 攜帶參數(shù)
版本限制:
直播組件版本1.0.1及以上支持?jǐn)y帶以下參數(shù)
-
shareTicket:分享直播間卡片到微信群,點(diǎn)擊此卡片后可以在 ApponShow 里獲取該參數(shù)
-
room_id:點(diǎn)擊直播組件頁(yè)面里的貨架商品跳轉(zhuǎn)到商家小程序的商品詳情頁(yè)面時(shí),會(huì)帶上房間號(hào)參數(shù)
4. 【獲取直播房間列表】接口,僅供后臺(tái)調(diào)用
接口規(guī)則:
該接口僅供商家后臺(tái)調(diào)用,調(diào)用限額500次/天,建議開發(fā)者自己做緩存(此接口與下面【獲取回放視頻】接口共用500次/天限制,請(qǐng)合理分配調(diào)用頻次)。
請(qǐng)求URL:
http://api.weixin.qq.com/wxa/business/getliveinfo?access_token=
請(qǐng)求方式:
POST
請(qǐng)求示例:
Request { "start": 0, // 起始拉取房間,start=0表示從第1個(gè)房間開始拉取 "limit": 10 // 每次拉取的個(gè)數(shù)上限,不要設(shè)置過(guò)大,建議100以內(nèi) } Response { "errcode": 0, // errcode=0代表成功;errcode=1代表未創(chuàng)建直播房間 "errmsg": "ok", "room_info": [{ "name": "直播房間名", "roomid": 1, "cover_img": "http://mmbiz.qpic.cn/mmbiz_jpg/Rl1RuuhdstSfZa8EEljedAYcbtX3Ejpdl2et1tPAQ37bdicnxoVialDLCKKDcPBy8Iic0kCiaiaalXg3EbpNKoicrweQ/0?wx_fmt=jpeg", "live_satus": 101, "start_time": 1568128900, "end_time": 1568131200, "anchor_name": "李四", "anchor_img": "http://mmbiz.qpic.cn/mmbiz_jpg/Rl1RuuhdstSfZa8EEljedAYcbtX3Ejpdlp0sf9YTorOzUbGF9Eib6ic54k9fX0xreAIt35HCeiakO04yCwymoKTjw/0?wx_fmt=jpeg", "goods":[ { "cover_img":"http://mmbiz.qpic.cn/mmbiz_png/FVribAGdErI2PmyST9ZM0JLbNM48I7TH2FlrwYOlnYqGaej8qKubG1EvK0QIkkwqvicrYTzVtjKmSZSeY5ianc3mw/0?wx_fmt=png", "url":"pages/index/index.html", "price":1100, "name":"fdgfgf" } ], "total":1 }
返回字段:
-
name 房間名
-
roomid 房間id
注:需先在小程序MP后臺(tái)創(chuàng)建直播房間,否則會(huì)報(bào)錯(cuò)(錯(cuò)誤碼1)
-
cover_img 封面圖片url
-
start_time 直播計(jì)劃開始時(shí)間,列表按照 start_time 降序排列
-
end_time 直播計(jì)劃結(jié)束時(shí)間
-
anchor_name 主播名
-
goods 商品列表
-
live_status 直播狀態(tài) 101: 直播中, 102: 未開始, 103: 已結(jié)束, 104: 禁播, 105: 暫停中, 106: 異常,107:已過(guò)期(直播狀態(tài)解釋可參考【獲取直播狀態(tài)】接口)
5. 【獲取回放源視頻】接口,僅供后臺(tái)調(diào)用
接口規(guī)則:
該接口僅供商家后臺(tái)調(diào)用,調(diào)用限額500次/天,此接口與上面【獲取房間列表】接口共用500次/天限制,請(qǐng)合理分配調(diào)用頻次)。
接口說(shuō)明:
-
該接口可在直播結(jié)束后拿到回放源視頻(直播結(jié)束后大約10分鐘會(huì)生成回放,源視頻無(wú)評(píng)論等內(nèi)容)
-
拿到源視頻后需要開發(fā)者自行開發(fā)、使用回放視頻
-
如果把源視頻直接放在小程序上使用,需要小程序具備視頻資質(zhì)(具體資質(zhì)要求請(qǐng)參考《小程序開發(fā)的類目服務(wù)》)
后續(xù)官方會(huì)直接提供無(wú)需開發(fā)的直播回放功能,敬請(qǐng)期待。
請(qǐng)求URL:
http://api.weixin.qq.com/wxa/business/getliveinfo?access_token=
請(qǐng)求方式:
POST
請(qǐng)求示例:
Request { "action": "get_replay", // 獲取回放 "room_id": 354, // 直播間id "start": 0, // 起始拉取視頻,start=0表示從第1個(gè)視頻片段開始拉取 "limit": 10 // 每次拉取的個(gè)數(shù)上限,不要設(shè)置過(guò)大,建議100以內(nèi) } Response { "live_replay": [ { "expire_time": "2020-11-11T03:49:55Z", // 回放視頻url過(guò)期時(shí)間 "create_time": "2019-11-12T03:49:55Z", // 回放視頻創(chuàng)建時(shí)間 "media_url": "http://xxxxx.vod2.myqcloud.com/xxxxx/xxxxx/f0.mp4" // 回放視頻 } ], "errcode": 0, "total": 1, "errmsg": "ok" } // 一場(chǎng)直播可能會(huì)產(chǎn)生多個(gè)視頻片段。
四、其他說(shuō)明
1、直播間小程序碼
說(shuō)明:
-
小程序引入直播組件后必須進(jìn)行一次小程序發(fā)布上線,否則小程序碼不生效
-
在MP小程序直播后臺(tái)創(chuàng)建好直播間后,可以直接拿到直播間分享小程序碼,無(wú)需額外開發(fā)
如果商家在后臺(tái)自己生成的直播間小程序碼,需要做以下配置(否則直播間左上角返回鍵將失效):
在跳轉(zhuǎn)進(jìn)入直播間的路徑加上 type=9 標(biāo)識(shí)場(chǎng)景入口為小程序碼:
"plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=[直播房間id]&type=9"
2、商家公眾號(hào)文章添加小程序卡片
說(shuō)明:
商家在公眾號(hào)文章中添加跳轉(zhuǎn)進(jìn)入直播間的小程序卡片時(shí),需要做以下配置(否則直播間左上角返回鍵將失效):
在跳轉(zhuǎn)進(jìn)入直播間的路徑加上 type=10 標(biāo)識(shí)場(chǎng)景入口為小程序卡片:
"plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=[直播房間id]&type=10"
3、商品詳情頁(yè)面需添加返回按鈕
點(diǎn)擊直播組件頁(yè)面里的貨架商品跳轉(zhuǎn)到商家小程序的商品詳情頁(yè)面后,為了避免用戶無(wú)法再返回直播間,商家需在小程序商品詳情頁(yè)面左上角加上返回按鈕,用于返回到直播組件頁(yè)面。
4、快速更新直播組件版本的方法
商家小程序?qū)?yīng)的管理員微信號(hào)收到【公眾平臺(tái)安全助手】下發(fā)的直播組件版本更新的服務(wù)通知后,可點(diǎn)擊通知進(jìn)行快速發(fā)布,移動(dòng)端即可快速更新小程序內(nèi)直播組件的新版本,無(wú)需修改代碼或重新提交審核。
服務(wù)通知如下圖所示: