微信开发者工具接入短剧播放器插件

接入短剧播放插线

  • 申请添加插件
  • 基础接入
      • app.json
      • app.js
      • playerManager.js
          • 数据加密
      • 跳转到播放器页面
      • 运行出错
  • 示例
      • 小程序页面
      • 页面使用的方法
      • 小程序输入框绑定

申请添加插件

添加插件:登录微信开发者平台 ——> 设置 ——> 第三方设置 ——> 插件管理 ——> 搜索“短剧播放器”插件并添加。
添加插件

基础接入

app.json

找到app.json文件,加入以下配置:

  // 添加插件为“playlet-plugin”"plugins": {"playlet-plugin": {"version": "latest","provider": "wx94a6522b1d640c3b"}}

其中provider"字段为插件提供方的appid,设置为wx94a6522b1d640c3b即可。请确保将 version 字段设置为 latest,以使用最新版本的插件。
补充问题处理:

  • 在开发者工具调试时,可能会出现黑屏,或者报错Plugin module "__wx__/plugin-private-api" is not defined.问题,可以先去掉app.json中默认的设置"lazyCodeLoading": "requiredComponents"
  • 有些使用框架的开发者,例如uniapp,如果碰到自定义运营区域组件,或者充值组件无法渲染的问题,可能是该组件被框架删除了。可通过创建一个空的页面,去引用对应的组件,页面的json文件可参考:
  "usingComponents": {"charge-dialog": "/components/charge-dialog/charge-dialog","open-area-left": "/components/open-area-left/open-area-left","open-area-left-side": "/components/open-area-left-side/open-area-left-side","open-area-right": "/components/open-area-right/open-area-right"}

或者我看其他人提供的是:

  "usingComponents": {"charge-dialog": "/components/charge-dialog/charge-dialog","open-area-left": "/components/open-area-left/open-area-left","open-area-left-side": "/components/open-area-left-side/open-area-left-side","open-area-right": "/components/open-area-right/open-area-right","mp-cells": "weui-miniprogram/cells/cells","mp-cell": "weui-miniprogram/cell/cell"},

以下分别是:组件存储文件夹、新建项目默认组件(顶部导航栏)、以上新增组件文件夹
组件存储文件夹新建项目默认组件此时添加的组件
关于

  • 新增charge-dialog充值组件的JS代码见基础接入文档中的充值组件;
  • 新增的open-area-leftopen-area-left-sideopen-area-right组件的JS代码编写见文档。

app.js

// 引用下面的playerManager.js文件,./utils/playerManager为与app.js的相对路径
var PlayerManager = require('./utils/playerManager')/* 播放器页面和小程序之间有比较多的逻辑交互,例如某一集是否能解锁观看,需要开发者提供,插件提供了一些接口来让小程序去交互。接口通过const playletPlugin = requirePlugin('playlet-plugin')返回的插件实例来调用 */
// playlet-plugin必须与上面的app.json里面声明的插件名称一致(plugins插件名称也是playlet-plugin)
const playletPlugin = requirePlugin('playlet-plugin')//app.js
App({onLaunch(options) {// 注册播放器页面的onLoad事件playletPlugin.onPageLoad(this._onPlayerLoad.bind(this))},_onPlayerLoad(info) {// 初始化一个PlayerManager,封装了插件的接口const playerManager = new PlayerManager()playerManager._onPlayerLoad(info)},
})

onLaunch调用playletPlugin.onPageLoad(func)func是回调函数,这个回调函数会在播放器页面onLoad时触发,可以在该回调函数中进行其他信息的初始化。

上述文件位置:初始化文件

playerManager.js

上面的app.js里面引用了playerManager.js文件,新建一个文件夹utils,在其中加入一个playerManager.js文件:

/* 播放器页面和小程序之间有比较多的逻辑交互,例如某一集是否能解锁观看,需要开发者提供,插件提供了一些接口来让小程序去交互。接口通过const playletPlugin = requirePlugin('playlet-plugin')返回的插件实例来调用 */
// playlet-plugin必须与上面的app.json里面声明的插件名称一致(plugins插件名称也是playlet-plugin)
var playletPlugin = requirePlugin("playlet-plugin");// 点击按钮触发此函数跳转到播放器页面
function navigateToPlayer(obj) {// 下面的${dramaId}变量,需要替换成小程序管理后台的媒资管理上传的剧的dramaId// 变量${srcAppid}是提审方appid// 变量${serialNo}是活动的页面路径// 变量${extParam}是分享参数,分享的卡片和二维码会在分享的链接上携带此参数const { extParam, dramaId, srcAppid } = objwx.navigateTo({// 播放器的路径前缀为plugin-private://wx94a6522b1d640c3b/pages/playlet/playlet,再将数据进行拼接即可访问url: `plugin-private://wx94a6522b1d640c3b/pages/playlet/playlet?dramaId=${dramaId}&srcAppid=${srcAppid}&extParam=${extParam || ''}`})
}const proto = {_onPlayerLoad(info) {// PlayletManager是一个类,可通过playletPlugin.PlayletManager.getPageManager(playerId)获取其实例,大部分的接口都在该实例对象上提供,例如getInfo、showChargeDialog等const pm = playletPlugin.PlayletManager.getPageManager(info.playerId)// 定义全局this.pm参数,将pm赋值给this.pm全局参数,方便该方法之外的其他方法使用this.pm = pm// encryptedData是经过开发者后台加密后(不要在前端加密)的数据,具体实现见下面的加密章节// 调用 getEncryptData 方法获取加密后的数据,在 getEncryptData 方法中,需要自己实现一个后台接口来获取加密后的数据,并将其返回encryptedDatathis.getEncryptData({ serialNo: info.serialNo }).then(res => {// 在 setCanPlaySerialList 中,将加密后的数据传递给播放器管理器来设置,setCanPlaySerialList({ data, freeList })接口设置当前可播放的剧集,data参数就是上面提到的加密后的数据,表示那些集是可播放的,是LockDataReq类型对象经过JSON.stringify,然后再加密后得到的字符串pm.setCanPlaySerialList({data: res.encryptedData,  // encryptedData是后台加密后的数据,具体实现见下面的加密章节freeList: [{ // 1~10集是免费剧,data里面的字段也必须至少设置1~10集可播放start_serial_no: 1,end_serial_no: 10}],})})// 需要解锁的事件pm.onCheckIsCanPlay(this.onCheckIsCanPlay)// 关于分享的处理// 开启分享以及withShareTicketpm.setDramaFlag({share: true,withShareTicket: true})// 获取分享参数,页面栈只有短剧播放器一个页面的时候可获取到此参数// 例如从分享卡片进入、从投流广告直接跳转到播放器页面,从二维码直接进入播放器页面等情况playletPlugin.getShareParams().then(res => {console.log('getLaunch options query res', res)// 关于extParam的处理,需要先做decodeURIComponent之后才能得到原值const extParam = decodeURIComponent(res.extParam)console.log('getLaunch options extParam', extParam)// 如果设置了withShareTicket为true,可通过文档的方法获取更多信息// https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.htmlconst enterOptions = wx.getEnterOptionsSync()console.log('getLaunch options shareTicket', enterOptions.shareTicket)}).catch(err => {console.log('getLaunch options query err', err)})// 设置分享参数,extParam除了可以通过在path传参,还可以通过下面的接口设置pm.setExtParam('hellotest')},onCheckIsCanPlay(param) {// TODO: 碰到不可以解锁的剧集,会触发此事件,这里可以进行扣币解锁逻辑,如果用户无足够的币,可调用下面的this.isCanPlay设置console.log('onCheckIsCanPlay param', param)var serialNo = param.serialNothis.getEncryptData({ serialNo: serialNo }).then(res => {

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/291951.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot + Vue实现的校园失物招领系统设计与实现+毕业论文

介绍 系统包含用户和管理员两个角色 用户:登录、注册、留言板、公告信息、失物招领、失物认领、寻物启事、个人中心、我发布的失物信息、我的失物认领、我发布的寻物启事、寻物启事留言等功能。 管理员:登录、基础数据管理、系统管理、留言板管理、失物信…

Docker数据卷挂载

一、容器与数据耦合的问题: 数据卷是虚拟的,不真实存在的,它指向文件中的文件夹 ,属主机文件系统通过数据卷和容器数据进行联系,你改变我也改变。 解决办法: 对宿主机文件系统内的文件进行修改,会立刻反应…

Spring官方真的不建议使用属性进行依赖注入吗?

使用Spring进行依赖注入时,很多大佬都推荐使用构造方法注入,而非使用在属性上添加 Autowired 注入,而且还说这是Spring官方说的,真的是这样吗? 使用Spring进行依赖主要的方式有很多,主流的使用方式有两种&a…

微服务高级篇(五):可靠消息服务

文章目录 一、消息队列MQ存在的问题?二、如何保证 消息可靠性 ?2.1 生产者消息确认【对生产者配置】2.2 消息持久化2.3 消费者消息确认【对消费者配置】2.4 消费失败重试机制2.5 消费者失败消息处理策略2.6 总结 三、处理延迟消息?死信交换机…

系统需求分析报告(原件获取)

第1章 序言 第2章 引言 2.1 项目概述 2.2 编写目的 2.3 文档约定 2.4 预期读者及阅读建议 第3章 技术要求 3.1 软件开发要求 第4章 项目建设内容 第5章 系统安全需求 5.1 物理设计安全 5.2 系统安全设计 5.3 网络安全设计 5.4 应用安全设计 5.5 对用户安全管理 …

一文带你深刻了解控制台console那些事

一、前言 首先感谢小伙伴们访问我的博客,但是你是有多么的无聊才会选择打开我的控制台呢?不过还是很感谢大家通过邮件的形式,给我提出很多的宝贵意见。 借此机会正好和大家唠一唠前端console到底有什么魔法。 二、console.log调试必备 consol…

Android ImageView 的scaleType 属性图解

目录 前言测试素材测试布局xmlscaleType前言 一、ScaleType.FIT_CENTER 默认二、ScaleType.FIT_START三、ScaleType.FIT_END四、ScaleType.FIT_XY五、ScaleType.CENTER六、ScaleType.CENTER_CROP七、ScaleType.CENTER_INSIDE八、ScaleType.MATRIX 前言 原文链接: A…

阿里云服务器4核8G配置最新活动价格

阿里云服务器4核8g配置云服务器u1价格是955.58元一年,4核8G配置还可以选择ECS计算型c7实例、计算型c8i实例、计算平衡增强型c6e、ECS经济型e实例、AMD计算型c8a等机型等ECS实例规格,规格不同性能不同,价格也不同,阿里云服务器网al…

交换机干道链路

干道链路是用于交换机之间或交换机与路由器之间互连的物理链路。干道链路传输的数据帧都必须打上Tag,便于设备识别数据帧所属的VLAN。因此一条干道链路可以承载多个VLAN的数据帧,如图1-1所示。 图1-1 干道链路功能示意图 干道链路可以透传VLAN。换言之&…

鸿蒙应用开发与鸿蒙系统开发哪个更有前景?

随后迎来了不少互联网公司与华为鸿蒙原生应用达成了合作,像我们常见的阿里、京东、小红书、得物……等公司,还有一些银行也都与华为鸿蒙达成了合作。使得一时之间市场紧缺鸿蒙开发人才,不少公司不惜重金争抢人才。 据智联招聘的最新数据显示…

推特Twitter有直播功能吗?如何用Twitter直播?

现在各大直播平台已经成为社交媒体营销的一种重要渠道,它让品牌能够即时地与全球受众进行互动。据统计,直播市场正在迅速增长,预计到2028年将达到2230亿美元的规模。在这个不断扩张的市场中,许多社交媒体平台如YouTube、Facebook、…

[深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现二

【简单介绍】 基于目标检测算法YOLOv8和灵活的PyQt5界面开发框架,我们精心打造了一款集直观性、易用性和功能性于一体的目标检测GUI界面。通过深度整合YOLOv8在目标识别上的卓越能力与PyQt5的精致界面设计,我们成功研发出一款既高效又稳定的软件GUI。 …

【论文精读】CAM:基于上下文增强和特征细化网络的微小目标检测

文章目录 🚀🚀🚀摘要一、1️⃣ Introduction---介绍二、2️⃣Related Work---相关工作2.1 🎓 基于深度学习的对象检测器2.2 ✨多尺度特征融合2.3 ⭐️数据增强 三、3️⃣提议的方法3.1 🎓 具有上下文增强和特征细化的特…

Qt与编码

ASCII码:一个字节&#xff0c;256个字符。 Unicode:字母&#xff0c;汉字都占用两个字节。 utf-8:字母一个字节&#xff0c;汉字3个字节。 gbk:字母一个字节&#xff0c;汉字2个字节。 gb2312:可以表示汉字&#xff0c;gb2312<gbk。 编码查看&#xff1a; https://www.…

烫烫烫手的结构体大小计算来咯,很烫哦,慢慢消化。自定义类型(一)

emmm&#xff0c;在这炎热的夏天在宿舍吹着空调写着博客也是一件不错的事呢&#xff0c;今天就来来好好盘一下C语言中的自定义类型。 常常会回顾努力的自己&#xff0c;所以要给自己的努力留下足迹。 为今天努力的自己打个卡&#xff0c;留个痕迹吧 2024.03.29 小闭 目录 …

Linux之权限管理

Linux 下有两种用户&#xff1a;超级用户&#xff08; root &#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“#”&#xff0c;普通用户的命令提示符是…

【Qt 学习笔记】Day1 | Qt 开发环境的搭建

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Day1 | Qt 开发环境的搭建 文章编号&#xff1a;Qt 学习笔记 / 02 文…

mysql进阶知识总结

1.存储引擎 1.1MySQL体系结构 1).连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念&#xff0c;为通过认证…

Linux第84步_了解Linux中断及其函数

1、中断号 中断号又称中断线&#xff0c;每个中断都有一个中断号&#xff0c;通过中断号即可区分不同的中断。 2、Linux中断API函数 需要包含头文件“#include <linux/interrupt.h>” 1)、在使用某个中断功能的时候&#xff0c;需要执行“申请中断” int request_irq(…

左手医生:医疗 AI 企业的云原生提效降本之路

相信这样的经历对很多人来说并不陌生&#xff1a;为了能到更好的医院治病&#xff0c;不惜路途遥远奔波到大城市&#xff1b;或者只是看个小病&#xff0c;也得排上半天长队。这些由于医疗资源分配不均导致的就医问题已是老生长谈。 云计算、人工智能、大数据等技术的发展和融…