微信小程序接入视频号直播教程实例

2022-03-24   阅读:9914   类型:后端   分类:微信小程序    标签: 微信小程序

一、前景:

2021年7月份,微信小程序上线了跳转视频号直播的功能,我们也在第一时间发布了直播悬浮窗组件,使商家能够更便捷的将用户导流至视频号直播,促进成交。在近期,微信又上线了小程序预约直播功能,更加丰富了小程序与视频号之间的互动,我们也在微页面中新增了相关组件,帮助商家接入该功能。

效果展示:

1、视频号直播悬浮窗

2、视频号直播组件

3、直播已开始,则会展示直播中的状态,点击跳转直播间

我们要实现的也就是这样的一个功能,在商家小程序中加入视频号直播跳转,实现小程序的免费直播功能。

二、具体步骤:

1、小程序.js文件,在onload方法中放入如下代码

// 视频号直播
 wx.getChannelsLiveInfo({
  finderUserName: "视频号ID,在登录视频号中获取",
  success: res => {
	if (res.errMsg === "getChannelsLiveInfo:ok") {
	  console.log(res)
	  this.setData({
		isLive:res.status
	  })
	  // 返回内容
	  // feedId:直播 feedId
	  // nonceId:直播 nonceId
	  // description:直播主题
	  // status:直播状态,2直播中,3直播结束
	  // headUrl:直播封面
	  // nickname:视频号昵称
	}
  },
  fail: res => {
	console.log(res)
  }
})

2、处理直播跳转方法

zhibo(){
 wx.openChannelsLive({
	finderUserName: 'sphyyzztGGdV',
	// feedId:res.feedId,
	// nonceId:res.nonceId,
	success: res => {
	 console.log(res)
	}
 })
},

3、.js文件中的data数据部分:

  data: {
    nowTime:'', //当前时间
    liveList:[], //直播数据
    isLive:'',  //直播状态
  },

4、获取直播数据、用于页面展示

getLive:function(){
       // 显示加载图标
       wx.showLoading({
        title: '加载中',
      })
      request({
        url: '/weixin/live_list'
      }).then(result=>{
        if(result.statusCode==200){
          wx.hideLoading()
          this.setData({
            liveList:result.data.data
          })
        }else{
          wx.showLoading({
            title: '加载中'
        });
        }
      })
       //获取当前时间戳  
        var timestamp = Date.parse(new Date());
        timestamp = timestamp / 1000;
        this.setData({
          nowTime:timestamp
        })
    }

5、页面视图首页部分代码

<!-- 直播 start -->
<view class="live" wx:if="{{liveList.live_time < nowTime && isLive==2}}">
 <image src="{{liveList.live_img}}"></image>
 <view class="livebox">
  <view class="live_title">
   {{liveList.live_title}}
  </view>
  <view class="live_footer">
   <view class="live_audio_box">
    <view class="live_audio">
     <view class="first"></view>
     <view class="second"></view>
     <view class="three"></view>
    </view>
    <view class="live_word">直播中</view>
   </view>
   <view class="live_btn" bindtap="zhibo">立即观看</view>
  </view>
 </view>
</view>
<view class="live2" wx:if="{{liveList.live_time >= nowTime}}">
 <image src="{{liveList.live_img}}"></image>
 <view class="livebox">
  <view class="live_title2">
   <view class="yugao_t">预告</view>
   <view class="yugao_w">{{liveList.live_title}}</view>
  </view>
  <view class="live_footer2">
   <view class="live_audio_box2">
    {{liveList.live_times}} 开播
   </view>
  </view>
 </view>
</view>
<!-- 直播 end -->

这里读取后端直播列表数据,再加上获取到直播状态,如果为2表示正在直播,就显示正在直播,用户可以点击立即观看跳转至直播

CSS样式代码:

.live{
 width: 94%;
 height: 180rpx;
 background-color: #000000;
 margin-left: 3%;
 border-radius: 15rpx;
 margin-top: 20rpx;
 overflow: hidden;
 position: relative;
}
.live image{
 display: block;
 width: 100%;
 height: 180rpx;
}
.livebox{
 width: 70%;
 height: 180rpx;
 position: absolute;
 right: 0px;
 top: 0px;
}
.live_title{
 width: 100%;
 color: #fff;
 padding-left: 20rpx;
 padding-top: 25rpx;
}
.live_footer{
 width: 100%;
 margin-top: 40rpx;
}
.live_audio_box{
 width: 30%;
 float: left;
 height: 50rpx;
 padding-top: 10rpx;
 background-color: #eb3e81;
 margin-right: 28%;
 margin-left: 20rpx;
 overflow: hidden;
}
.live_audio{
 display: inline-block;
 float: left;
 margin-left: 15rpx;
}
.live_word{
 display: inline-block;
 font-size: 25rpx;
 color: #fff;
 margin-left: 10rpx;
 height: 30rpx;
 line-height: 30rpx;
 float: left;
}
.live_audio view{
 display: inline-block;
 width: 5rpx;
 height: 30rpx;
 line-height: 30rpx;
 margin-left: 5rpx;
 background-color: #fff;
 /* float: left; */
}
.live_btn{
 width: 30%;
 height: 50rpx;
 line-height: 50rpx;
 font-size: 28rpx;
 float: left;
 border-radius: 45rpx;
 background-color: rgba(0, 0, 0, 0.5);
 color: #fff;
 text-align: center;
}
.first {
 height: 8px;
 animation: first 0.5s linear 0s infinite alternate;
}

.second {
 height: 4px;
 animation: second 1s linear 0s infinite alternate;
}

.three {
 height: 6px;
 animation: three 0.8s linear 0s infinite alternate;
}
 @keyframes first {
   0% {
     height: 4px;
   }

   50% {
     height: 8px;
   }

   100% {
     height: 10px;
   }
 }

 @keyframes second {
   0% {
     height: 12px;
   }

   50% {
     height: 9px;
   }

   100% {
     height: 7px;
   }
 }

 @keyframes three {
   0% {
     height: 14px;
   }

   50% {
     height: 12px;
   }

   100% {
     height: 10px;
   }
 }
 /* 直播预告 */
 .live2{
  width: 94%;
  height: 180rpx;
  background-color: #000000;
  margin-left: 3%;
  border-radius: 15rpx;
  margin-top: 20rpx;
  overflow: hidden;
  position: relative;
 }
 .live2 image{
  display: block;
  width: 100%;
  height: 180rpx;
 }
 .livebox2{
  width: 70%;
  height: 180rpx;
  position: absolute;
  right: 0px;
  top: 0px;
 }
 .live_title2{
  width: 95%;
  color: #fff;
  padding-left: 20rpx;
  padding-top: 35rpx;
 }
 .live_footer2{
  width: 95%;
  margin-top: 60rpx;
 }
 .live_audio_box2{
  width: 90%;
  float: left;
  height: 50rpx;
  padding-top: 10rpx;
  margin-right: 28%;
  margin-left: 20rpx;
  overflow: hidden;
  color: #fff;
  font-size: 25rpx;
 }
 .yugao_t{
  display: inline-block;
  background-color: #f9e7e9;
  font-size: 26rpx;
  color: #de545c;
  text-align: center;
  height: 1.2rem;
  line-height: 1.2rem;
  float: left;
  width: 15%;
 }
 .yugao_w{
  display: inline-block;
  font-size: 26rpx;
  color: #fff;
  margin-left: 10rpx;
  width: 82%;
  float: left;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
  display: block;
 }

6、我们在每个商品详情页面中加入我们的直播按钮,用于显示直播按钮

zhibo(){
 wx.openChannelsLive({
	finderUserName: 'sphyyzztGGdV',
	// feedId:res.feedId,
	// nonceId:res.nonceId,
	success: res => {
	 console.log(res)
	}
 })
},

CSS样式代码

.shop_live{
 width: 100rpx;
 height: 100rpx;
 border-radius: 50%;
 border:2rpx solid #c644eb;
 position: fixed;
 right: 20rpx;
 top: 250rpx;
 z-index: 7;
}
.shop_live_ico{
 width: 90rpx;
 height: 90rpx;
 border-radius: 50%;
 /* overflow: hidden; */
 margin: 5rpx auto;
 position: relative;
}
.shop_live_ico image{
 display: block;
 width: 90rpx;
 height: 90rpx;
 border-radius: 50%;
}
.shop_live_audio_box{
 width: 100%;
 float: left;
 height: 35rpx;
 padding-top: 0rpx;
 background-image: linear-gradient(to bottom right, #d84088 , #c644eb);
 color: #fff;
 border-radius: 45rpx;
 position: absolute;
 bottom: -15rpx;
 left: 0rpx;
}
.shop_live_audio{
 display: inline-block;
 float: left;
 margin-left: 8rpx;
}
.shop_live_word{
 display: inline-block;
 font-size: 16rpx;
 color: #fff;
 margin-left: 5rpx;
 height: 30rpx;
 line-height: 35rpx;
 float: left;
}
.shop_live_audio view{
 display: inline-block;
 width: 5rpx;
 height: 30rpx;
 line-height: 30rpx;
 margin-left: 5rpx;
 background-color: #fff;
 /* float: left; */
}
.shop_live_audio .first {
 height: 5px;
 animation: first 0.5s linear 0s infinite alternate;
}

.shop_live_audio .second {
 height: 3px;
 animation: second 1s linear 0s infinite alternate;
}

.shop_live_audio .three {
 height: 5px;
 animation: three 0.8s linear 0s infinite alternate;
}
@keyframes first {
 0% {
   height: 4px;
 }

 50% {
   height: 8px;
 }

 100% {
   height: 10px;
 }
}

@keyframes second {
 0% {
   height: 12px;
 }

 50% {
   height: 9px;
 }

 100% {
   height: 7px;
 }
}

@keyframes three {
 0% {
   height: 14px;
 }

 50% {
   height: 12px;
 }

 100% {
   height: 10px;
 }
}
腾讯云11.11上云拼团Go,2核2G3M云服务器 28元/年

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://tpxhm.com/adetail/882.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸一
简忆博客壁纸二
简忆博客壁纸三
简忆博客壁纸四
简忆博客壁纸五
简忆博客壁纸六
简忆博客壁纸七
简忆博客壁纸八
头像

简忆博客
勤于学习,乐于分享

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×