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

2024-03-29 12:44

本文主要是介绍微信开发者工具接入短剧播放器插件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接入短剧播放插线

  • 申请添加插件
  • 基础接入
      • 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.chinasem.cn/article/858627

相关文章

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

maven中的maven-antrun-plugin插件示例详解

《maven中的maven-antrun-plugin插件示例详解》maven-antrun-plugin是Maven生态中一个强大的工具,尤其适合需要复用Ant脚本或实现复杂构建逻辑的场景... 目录1. 核心功能2. 典型使用场景3. 配置示例4. 关键配置项5. 优缺点分析6. 最佳实践7. 常见问题

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行