组件接口

名称 功能说明
订阅组件 subscribe 用户进入直播间内,可对一场未开播的直播进行单次订阅,开播时直播组件会自动下发开播提醒给用户
获取直播状态  getLiveStatus 首次获取立马返回直播状态,往后间隔1分钟或更慢的频率去轮询获取直播状态
获取用户openid参数getOpenid 在直播组件版本 1.1.0 及以上版本通过该接口获取用户openid参数
获取分享卡片链接参数getShareParams 在直播组件版本 1.1.0 及以上版本通过该接口获取以下参数,开发者可以根据这些参数建立用户、直播间、商品之间的映射关系
直播小窗控制参数 close_picture_in_picture_mode 通过参数设置是否关闭小窗
携带参数( 直播间到商详页面, 从群分享卡片返回直播间) 直播组件版本 1.1.0 及以上支持携带以下参数,可用这些参数建立用户、直播间、商品之间的映射关系。

1. 【订阅】组件(注:若要使用该组件,需在主包引入直播组件)

功能解释:用户进入直播间内,可对一场未开播的直播进行单次订阅,开播时直播组件会自动下发开播提醒给用户,无需开发者额外开发

组件使用:如果需要在直播组件页以外小程序其他页面也有同样的开播提醒的功能,可以引入【订阅】组件 subscribe(开播前才会显示,直播开始后自动消失该组件);需在 page 页面(如 home 页面)的 home.json 引用订阅组件,可通过 stopPropagation 属性控制是否阻止事件冒泡(默认不阻止事件冒泡,stopPropagation 为 false)。

示例代码如下:

{
    "usingComponents": {
        "subscribe": "plugin-private://wx2b03c6e691cd7370/components/subscribe/subscribe"
    }
}

然后便可在 home.wxml 里使用订阅组件,其中直播房间 id 可通过;房间 id 可通过下面 获取直播房间列表 API 获取

<subscribe room-id="[直播房间id]"></subscribe>

2. 【获取直播状态】接口(注:若要使用该接口,需在主包引入直播组件)

接口说明:首次获取立马返回直播状态,往后间隔1分钟或更慢的频率去轮询获取直播状态

直播状态说明:

  • 101 直播中:表示主播正常开播,直播正常的状态

  • 102 未开始:表示主播还未开播

  • 103 已结束:表示在直播端点击【结束】按钮正常关闭的直播,或直播异常 15 分钟后系统强制结束的直播

  • 104 禁播:表示因违规受到运营处罚被禁播

  • 105 暂停中:表示在 MP 小程序后台-控制台内操作暂停了直播

  • 106 异常:表示主播离开、切后台、断网等情况,该直播被判定为异常状态,15 分钟内恢复即可回到正常直播中的状态;如果 15 分钟后还未恢复,直播间会被系统强制结束直播

  • 107 已过期:表示直播间一直未开播,且已达到在 MP 小程序后台创建直播间时填写的直播计划结束时间,则该直播被判定为过期不能再开播

调用方法:若要调用【获取直播状态】接口 getLiveStatus,需在小程序页面顶部引用【直播组件】 live-player-plugin。

示例代码如下:

let livePlayer = requirePlugin('live-player-plugin')

// 首次获取立马返回直播状态
const roomId = xxx // 房间 id
livePlayer.getLiveStatus({ room_id: roomId })
    .then(res => {
        // 101: 直播中, 102: 未开始, 103: 已结束, 104: 禁播, 105: 暂停中, 106: 异常,107:已过期 
        const liveStatus = res.liveStatus
        console.log('get live status', liveStatus)
    })
    .catch(err => {
        console.log('get live status', err)
    })
// 往后间隔1分钟或更慢的频率去轮询获取直播状态
setInterval(() => {
    livePlayer.getLiveStatus({ room_id: roomId })
        .then(res => {
            // 101: 直播中, 102: 未开始, 103: 已结束, 104: 禁播, 105: 暂停中, 106: 异常,107:已过期 
            const liveStatus = res.liveStatus
            console.log('get live status', liveStatus)
        })
        .catch(err => {
            console.log('get live status', err)
        })
}, 60000)

3. 【获取用户openid参数】接口(注:若要使用该接口,需在主包引入直播组件)

接口说明:在直播组件版本 1.1.0 及以上版本通过该接口获取用户openid参数。

调用方法:若要调用【获取用户openid参数】接口 getOpenid,需在小程序页面顶部引用【直播组件】 live-player-plugin。

示例代码如下:

let livePlayer = requirePlugin('live-player-plugin')

App({
    onShow(options) {
        livePlayer.getOpenid({ room_id: [直播房间id] }) // 该接口传入参数为房间号
            .then(res => {
                console.log('get openid', res.openid) // 用户openid
            }).catch(err => {
                console.log('get openid', err)
            })
    }
})

4. 【获取分享卡片链接参数】接口(注:若要使用该接口,需在主包引入直播组件)

接口说明:由于基础库数据安全策略,通过App onShow 生命周期里的query无法获取直播间分享卡片链接参数。在直播组件版本 1.1.0 及以上版本通过该接口获取以下参数,开发者可以根据这些参数建立用户、直播间、商品之间的映射关系。

  • 分享卡片进入直播间:房间号 room_id + 进入者 openid + 分享者 share_openid + 开发者自定义参数 custom_params

调用方法:若要调用【获取分享卡片链接参数】接口 getShareParams,需在小程序页面顶部引用【直播组件】 live-player-plugin。

示例代码如下:

let livePlayer = requirePlugin('live-player-plugin')

App({
    onShow(options) {
        // 分享卡片入口场景才调用getShareParams接口获取以下参数
        if (options.scene == 1007 || options.scene == 1008 || options.scene == 1044) {
            livePlayer.getShareParams()
                .then(res => {
                    // 房间号
                    console.log('get room id', res.room_id) 
                    // 用户openid
                    console.log('get openid', res.openid) 
                    // 分享者openid,分享卡片进入场景才有
                    console.log('get share openid', res.share_openid) 
                    // 开发者在跳转进入直播间页面时,页面路径上携带的自定义参数,这里传回给开发者
                    console.log('get custom params', res.custom_params) 
                }).catch(err => {
                    console.log('get share params', err)
                })
        }
    }
})