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