# 组件接口

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

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

功能解释:订阅组件可配置到小程序页面上,可对一场未开播的直播进行单次订阅,开播时会自动下发开播提醒给用户,无需开发者额外开发

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

# 示例代码如下:

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

然后便可在 home.wxml 里使用订阅组件,其中直播房间 id 可通过下面 获取直播房间列表 API 获取。 同时,订阅组件支持自定义颜色和大小以及携带自定义参数,参数说明如下:

  • room-id:表示房间号,类型为 Number(默认为0)
  • width:表示宽度,类型为 Number(默认为120)
  • height:表示高度,类型为 Number(默认为41)
  • font-size:表示字号,类型为 Number(默认为17)
  • color:表示字体颜色,类型为 String(默认为'FFFFFF')
  • background-color:表示背景色,类型为 String(默认为'#6467F0')
  • custom-params:表示自定义参数,类型为 String(默认为空)
  • stop-propagation:表示阻止事件冒泡,类型为 Boolean(默认为false,不阻止事件冒泡)
// 传参
let roomId = 1
let width = 120
let height = 41
let fontSize = 17
let color = '#FFFFFF'
let backgroundColor = '#6467F0'
let customParams = encodeURIComponent(JSON.stringify({ path: 'pages/index/index', pid: 1 })) // 开发者在订阅组件上携带自定义参数(如示例中的path和pid参数),后续可以在 App onShow 生命周期的 options 里获取(上限600个字符,超过部分会被截断)
this.setData({
    width,
    height,
    fontSize,
    color,
    backgroundColor,
    customParams
})

// 监听订阅事件用于获取订阅状态
onSubscribe(e) {
    console.log('房间号:', e.detail.room_id)
    console.log('订阅用户openid', e.detail.openid)
    console.log('是否订阅', e.detail.is_subscribe)
}
<subscribe
    room-id="{{roomId}}"
    width="{{width}}"
    height="{{height}}"
    font-size="{{fontSize}}"
    color="{{color}}"
    background-color="{{backgroundColor}}"
    custom-params="{{customParams}}"
    bindsubscribe="onSubscribe">
</subscribe>

# 2.【获取单次订阅状态】接口(注:若要使用该接口,需在主包/分包先引入直播组件)

接口说明:获取直播间单次订阅状态

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

# 示例代码如下:

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

// 获取直播间单次订阅状态
const roomId = xxx // 房间 id
livePlayer.getSubscribeStatus({ room_id: roomId })
    .then(res => {
        console.log('房间号:', res.room_id)
        console.log('订阅用户openid', res.openid)
        console.log('是否订阅', res.is_subscribe)
    }).catch(err => {
        console.log('get subscribe status', err)
    })

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

接口说明:首次获取立马返回直播状态,往后间隔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)

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

接口说明:在直播组件版本 1.3.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)
            })
    }
})

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

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

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

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

# 示例代码如下:

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

App({
    onShow(options) {
        // 分享卡片/订阅消息/扫码二维码/广告/朋友圈等场景才能调用getShareParams接口获取以下参数
        const sceneList = [1007, 1008, 1014, 1044, 1045, 1046, 1047, 1048, 1049, 1073, 1154, 1155]
        if (sceneList.includes(options.scene)) {
            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)
                })
        }
    }
})