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

接入短剧播放插线

  • 申请添加插件
  • 基础接入
      • 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://xiahunao.cn/news/2906085.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构 | 图论】如何用链式前向星存图(保姆级教程,详细图解+完整代码)

一、概述 链式前向星是一种用于存储图的数据结构,特别适合于存储稀疏图,它可以有效地存储图的边和节点信息,以及边的权重。 它的主要思想是将每个节点的所有出边存储在一起,通过数组的方式连接(类似静态数组实现链表…

云存储比起自建服务器做数据存储的好处是什么?

近年来,国内科技行业开始趋于饱和,越来越多的企业将海外业务作为新的增长点。 但由于国内外政策、市场等因素不同,在出海过程中,安全合规、海外业务保障、应对各地区合规挑战成为企业最普遍的需求之一。 最基本的问题之一是&…

餐饮行业在线预约小程序 提前取号小程序源码系统 带完整的安装代码包以及搭建教程

移动互联网的快速发展,餐饮行业也在不断探索与新兴技术的融合。传统的餐厅预约、取号方式已经无法满足消费者日益增长的便捷性需求。下面,小编给大家分享一款专为餐饮行业打造的在线预约小程序源码系统,旨在帮助餐厅实现智能化、高效化的服务…

软件测试基础理论、测试用例及设计方法、易混淆概念总结【软件测试】

一.软件测试基础理论 1.软件定义 软件是计算机系统中与硬件相互依存的一部分,包括程序、数据以及与其相关文档 的完整集合。 程序是按事先设计的功能和性能要求执行的指令序列; 数据是使程序能正常操作信息的数据结构; 文档是与程序开发、维…

【Python函数和类2/6】函数的参数

目录 目标 为函数设置参数 传递实参 关键字实参 关键字实参的顺序 位置实参 常见错误 缺少实参 位置实参的顺序 默认值形参 参数的优先级 默认值形参的位置 总结 目标 上篇博客中,我们在定义函数时,使用了空的括号。这表示它不需要任何信息就…

使用AOP实现打印日志

首先创建annotation.SystemLog类: package com.gjh.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target(ElementType.METHOD…

海外短剧系统搭建影视类分销软件APP开发网剧CPS分销系统H5,海外短剧国际版源码系统:连接世界,共享短剧文化。

目录 一、海外短剧系统搭建部署流程 二、开发完善的系统模板功能展示 总结: 一、海外短剧系统搭建部署流程 搭建和部署海外短剧系统需要经过以下步骤: 系统设计:首先需要进行系统设计,确定系统的功能和需求。包括用户注册登录、…

区块链dapp开发 dapp系统开发方案

在区块链技术的兴起和普及的推动下,去中心化应用程序(DApp)成为了当前数字世界中的热门话题之一。DApp 的开发不仅需要考虑技术方面的挑战,还需要深入了解区块链的工作原理和应用场景。本文将介绍一种 DApp 系统开发的基本方案&am…

没学数模电可以玩单片机吗?

我们首先来看一下数电模电在单片机中的应用。数电知识在单片机中主要解决各种数字信号的处理、运算,如数制转换、数据运算等。模电知识在单片机中主要解决各种模拟信号的处理问题,如采集光照强度、声音的分贝、温度等模拟信号。而数电、模电的相互转换就…

华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代

3月21日,在巴黎举办的云原生顶级峰会KubeCon EU 2024上 ,华为云首席架构师顾炯炯在“Cloud Native x AI:以持续开源创新开启智能时代”的主题演讲中指出,云原生和AI技术的融合,是推动产业深刻变革的关键所在。华为云将…

报错:torch.distributed.elastic.multiprocessing.errors.ChildFailedError:

错误: torch.distributed.elastic.multiprocessing.errors.ChildFailedError: 这个主要是torch的gpu版本和cuda不适配 我的nvcc -V是11.8 torch使用的: pip install torch2.0.1 torchvision0.15.2 torchaudio2.0.2 --index-url https://download.pyt…

C#自定义最大化、最小化和关闭按钮

目录 1.资源文件 2.读取资源文件中的图片 3.WindowState属性 4. 示例 用户在制作应用程序时,为了使用户界面更加美观,一般都自己设计窗体的外观,以及窗体的最大化、最小化和关闭按钮。本例通过资源文件来存储窗体的外观,以及最…

【机器学习之---数学】随机游走

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 随机游走 1. 概念 1.1 例1 在你的饮食俱乐部度过了一个富有成效的晚上后,你在不太清醒的状态下离开了。因此,你会醉醺醺地在展…

算法系列--动态规划--回文子串系列

💕"我们好像在池塘的水底,从一个月亮走向另一个月亮。。"💕 作者:Mylvzi 文章主要内容:算法系列–动态规划–回文子串系列 今天为大家带来的是算法系列--动态规划--回文子串系列(1),本文重点掌握如何快速判…

esp单片机下arduino_gfx不相干显示驱动优化对flash空间的占用对比

一般情况下,很多esp32或者esp8266下的tft模块驱动都会包含很多种,而我们只需要其中一种,那就有个疑问这些被编译进的显示驱动到底占用了多少空间,是否需要把他优化掉? 这是默认的驱动列表: 84个文件&…

Java毕业设计-基于springboot开发的原创歌曲分享平台-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、平台功能模块2、后台功能模块2.1管理员功能模块2.2用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开…

Node爬虫:原理简介

在数字化时代,网络爬虫作为一种自动化收集和分析网络数据的技术,得到了广泛的应用。Node.js,以其异步I/O模型和事件驱动的特性,成为实现高效爬虫的理想选择。然而,爬虫在收集数据时,往往面临着诸如反爬虫机…

HarmonyOS 应用开发之任务(Mission)管理场景介绍

任务(Mission)管理相关的基本概念如下: AbilityRecord:系统服务侧管理一个UIAbility实例的最小单元,对应一个应用侧的UIAbility组件实例。系统服务侧管理UIAbility实例数量上限为512个。MissionRecord:任务…

Unity类银河恶魔城学习记录11-7 p109 Aplly item modifiers源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemData_Equipment.cs using System.Collections; using System.Collecti…

1. Java概述

文章目录 1.Java语言概述1.1 Java介绍1.1.1 软件开发概述1.1.2 计算机语言1.1.3 Java 简史1.1.4 Java 技术体系平台1.1.5 Java在各领域的应用1.1.6 Java语言特点1.1.7 Java核心机制一-Java虚拟机1.1.8 Java核心机制二-垃圾回收1.1.9 Java开发工具 1.2 Java环境搭建1.2.1 JDK、J…