微信小程序接入直播功能遇到的问题与解决!
2020-03-26 本文已影响0人
zx一个胖子
一. 目前小程序的直播功能只开放给了一部分商家(电商类的),有资格的话会显示在小程序后台 功能 --> 直播 。
二. 直播功能开通后就可以在小程序后台创建直播间了,当然,这个时候用户是进不了直播间的,需要小程序代码修改一下:
具体看 文档 : https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/live-player-plugin.html
三. 直播组件 1.0.3 主要有一些坑:
1. 订阅组件的坑: 订阅组件会自己查询直播间的状态,当直播间为未开播的时候才会显示,其他状态都不显示;
解决:
<view wx:if='{{liveStutas==102}}'>
<subscribe room-id='{{roomId}}'></subscribe>
<view bindtap="goLive">观看直播</view>
</view>
subscribe 组件在显示的时候会覆盖 <view bindtap="goLive">观看直播</view>, subscribe 不显示的时候就会展示<view bindtap="goLive">观看直播</view>
-
获取直播间状态的坑:getLiveStatus 获取某个直播间的状态,第一次获取状态以后,一分多钟才会返回一次状态,一分钟内是调取这个api是没反应的。
解决:
等官方更新,也正是因为这个坑,才导致的 订阅组件获取的直播状态与getLiveStatus 获取的状态 不同步,进而导致订阅组件不显示的问题出现。 -
收集用户openid 的坑: 用户主要分四种进入直播间的方式,扫码进入,订阅卡片进入,分享卡片进入,点击按钮直接进入。主要是前三种比较坑,因为官方没有具体示例。
解决:
修改app.js的onshow
onShow: function (options){
if (options.scene == 1007 || options.scene == 1008 || options.scene == 1044) { //分享卡片进入
livePlayer.getShareParams()
.then(res => {
if (res.room_id){
this.sendOpenid(res.openid, res.room_id)
}
// console.log('get room id', res.room_id) // 房间号
// console.log('get openid', res.openid) // 用户openid
// console.log('get share openid', res.share_openid) // 分享者openid,分享卡片进入场景才有
// console.log('get custom params', res.custom_params) // 开发者在跳转进入直播间页面时,页面路径上携带的自定义参数,这里传回给开发者
}).catch(err => {
console.log('get share params', err)
})
}else{ // 订阅/扫码进入
if (options.query.room_id){
livePlayer.getOpenid({ room_id: options.query.room_id }) // 该接口传入参数为房间号
.then(res => {
this.sendOpenid(res.openid, options.query.room_id)
}).catch(err => {
console.log('get openid', err)
})
}
}
},