# 短剧播放器接口

本文主要介绍下短剧播放器插件提供的几个接口,在js代码里,插件接口示例通过下面的代码获取

// 名字 playlet-plugin 必须和 app.json 里面引用的插件名一致
const playletPlugin = requirePlugin('playlet-plugin')

# playletPlugin.onPageLoad()

onPageLoad就是播放器页面的 onLoad 事件,接受的参数是函数,直接在 app.js 的 onLaunch 里面调用即可

App({
  onLaunch(options) {
    playletPlugin.onPageLoad(this._onPlayerLoad.bind(this))
  },
  _onPlayerLoad(info) {
    console.log('onPlayerLoad', info.playerId, info)
    // 在这里可以调用
    const pm = playletPlugin.PlayletManager.getPageManager(info.playerId)
    console.log('get playlet manager', pm)
  },
})

# playletPlugin.getPluginVersion()

接口返回当前的插件版本,例如 0.1.4

# playletPlugin.getShareParams()

接口返回 Promise 实例,当从App跳转、分享、公众号、二维码等场景,直接进入到播放器页面的时候,开发者可通过此接口获取跳转到页面链接上的参数。

注意:如果不是直接进入播放器页面的,返回 Promise.reject({err: '首个页面不是播放器页面'})

playletPlugin.getShareParams().then(res => {
    console.log('getShareParams res', res)
}).catch(err => {
    console.log('getShareParams err', err)
})

# playletPlugin.setLoggerConfig(Object param)

设置播放器插件的日志输出:

字段名 类型 必填 描述
info boolean 是否输出 info 日志,默认为 false
debug boolean 是否输出 debug 日志,默认为 false
log boolean 是否输出 log 日志,默认为 false
warn boolean 是否输出 warn 日志,默认为 true
error boolean 是否输出 error 日志,默认为 true

# playletPlugin.PlayletManager

PlayletManager 是一个类,可通过 playletPlugin.PlayletManager.getPageManager(playerId) 获取其实例,大部分的接口都在该实例对象上提供,例如 getInfoshowChargeDialog 等。获取 PlayletManager 示例如下:

App({
  onLaunch(options) {
    playletPlugin.onPageLoad(this._onPlayerLoad.bind(this))
  },
  _onPlayerLoad(info) {
    console.log('onPlayerLoad', info.playerId, info)
    // 在这里可以调用
    const pm = playletPlugin.PlayletManager.getPageManager(info.playerId)
    console.log('get playlet manager', pm)
  },
})

在很多接口,都可以获取到 playerId,例如 onPageLoad 事件、充值组件、运营组件等,然后通过 playerId 可以获取到 PlayletManager 实例。

PlayletManager 实例的更多接口介绍如下:

# PlayletManager.setCanPlaySerialList(Object param)

设置可播放剧集,接受的参数字段定义如下:

字段名 类型 必填 描述
data string 可播放剧集的加密串
freeList Array<FreeItem> 免费剧集列表,注意:此字段仅改变目录中的剧集显示 ui,并不会做真正的解锁处理

data 是加密串,具体参考短剧播放器加密方案章节

FreeItem 字段定义如下:

字段名 类型 必填 描述
start_serial_no number 起始免费剧集编号,从 1 开始
end_serial_no number 结束免费剧集编号,包含此集

# PlayletManager.setFreeList(Object param)

在用户观看过程中重新设置免费剧列表,注意:此接口仅改变目录中的剧集显示 ui,并不会做真正的解锁处理。接受的参数字段定义如下:

字段名 类型 必填 描述
list Array<FreeItem> 免费剧集列表

FreeItem字段定义如下:

字段名 类型 必填 描述
start_serial_no number 起始免费剧集编号,从1开始
end_serial_no number 结束免费剧集编号,包含此集

# PlayletManager.getInfo()

获取当前剧集信息,返回 Object 字段定义如下:

字段名 类型 描述
playerId string 播放器页面唯一ID,可通过此参数获取到 PlayletManager 实例
srcAppid string 提审方 appid
dramaId string 媒资管理后台上传的剧目 id
serialNo number 当前播放到第几集
extParam string 扩展参数

注意:以上为固定常用字段,其他页面路径上的参数也会在此处返回。

# PlayletManager.onCheckIsCanPlay(Function func)

播放到需要解锁的剧集触发此事件,开发者可在此事件内解锁剧集。

参数名 类型 描述
serialNo number 剧集ID
isRetry boolean 是否因重试而触发。当遇到可能由于 session_key 过期等原因引发解密失败时,插件会重试一次触发 onCheckIsCanPlay

# PlayletManager.isCanPlay(Object param)

设置可播放剧集,接受的参数字段定义如下:

字段名 类型 必填 描述
data string 可播放剧集的加密串,当传入 useLastStatus=true 时可不传
serialNo number 剧集ID
useLastStatus boolean 表示维持之前设置的剧集上锁状态,此字段设置为 true 时可不传 data 字段,使用免开发激励视频广告解锁时不可使用此字段

data 是加密串,具体的含义和 setCanPlaySerialList 一样,可参考短剧播放器加密方案章节

# PlayletManager.onShowChargeDialog(Function func)

充值弹窗打开事件

# PlayletManager.onHideChargeDialog(Function func)

充值弹窗关闭事件

# PlayletManager.hideChargeDialog()

关闭充值弹窗

# PlayletManager.showChargeDialog()

打开充值弹窗

# PlayletManager.play()

继续播放

# PlayletManager.pause()

暂停播放

# PlayletManager.onDataReport(Function func)

播放器内相关事件的回调函数

# PlayletManager.onBack(Function func)

播放器内左上角返回点击事件

# PlayletManager.changeDrama(Object param)

更换剧目,接受的参数字段定义如下:

字段名 类型 必填 描述
queryString string key=value&key1=value1 格式的参数

# PlayletManager.updateChargeDialogInfo(Object param)

更新充值弹窗,接受的参数字段定义如下:

字段名 类型 必填 描述
isTransparentBackground boolean 默认为 false;设置为 true 表示弹窗背景为透明
isDestroyOnHide boolean 默认为 false;设置为 true 表示每次收起充值弹窗后销毁充值组件
maskTransparent boolean 默认为 false;设置为 true 表示弹窗遮罩为透明
maskClosable boolean 默认为 true;设置为 false 表示不可点击弹窗遮罩来关闭弹窗

# PlayletManager.updateChargeDialogHeight(Object param)

更新充值弹窗高度,接受的参数字段定义如下:

字段名 类型 必填 描述
height number 设置充值弹窗高度

# PlayletManager.setVisualEffectOnCapture(Object param)

接口同 wx.setVisualEffectOnCapture

# PlayletManager.setDramaFlag(Object param)

设置分享参数,接受的参数字段定义如下:

字段名 类型 必填 描述
share boolean 默认 true,是否打开分享
withShareTicket boolean 默认 true,同小程序分享的 withShareTicket

# PlayletManager.setExtParam(string extParam)

修改extParam参数

# PlayletManager.onCustomEvent(string name, Function func)

注册自定义事件,用于在充值组件、playletManager、自定义运营位等组件间通信

# PlayletManager.offCustomEvent(string name, Function func)

销毁通过 onCustomEvent 注册的事件

# PlayletManager.emitCustomEvent(string name, Function func)

触发通过 onCustomEvent 注册的事件函数

# PlayletManager.updateOpenArea(Object param)

设置自定义开放区域参数,接受的参数字段定义如下:

字段名 类型 必填 描述
showLeft boolean 默认 false,是否显示组件 open-area-left
showRight boolean 默认 false,是否显示组件 open-area-right
leftWidth number 设置组件 open-area-left 的宽度
leftHeight number 设置组件 open-area-left 的高度
rightHeight number 设置组件 open-area-right 的高度
leftsideAreaList Array<LeftSideOption> 设置多个 open-area-left-side 组件,数组每一项为 LeftSideOption 对象
ext string 自定义参数,组件 open-area-left、open-area-right、open-area-left-side 均可通过属性获取到此参数

LeftSideOption对象定义如下:

字段名 类型 必填 描述
left number 默认 false,设置组件的距离左侧位置
top number 默认 false,设置组件的距离顶部位置
width number 设置组件宽度
height number 设置组件高度

# PlayletManager.setVideoOption(Object param)

设置播放器的播放配置,接受的参数字段定义如下:

字段名 类型 必填 描述
objectFit string 同 video 组件的 object-fit 属性,默认会根据视频宽高进行计算
aspectRatio number 视频高宽比,当 objectFit 为 fill 时有效
loop boolean 是否循环播放,默认 false

# PlayletManager.startBackgroundPreview(Object param)

设置剧集未解锁时的视频预览播放,接受的参数字段定义如下:

字段名 类型 必填 描述
loop boolean 是否循环播放,默认为 true
mask boolean 是否显示遮罩,默认为 true
muted boolean 是否静音,默认为 true

# PlayletManager.stopBackgroundPreview()

停止剧集未解锁时的视频预览播放。

# PlayletManager.navigateTo(Object param)

接口含义和参数同 wx.navigateTo。

注意:接口调用成功的前提是用户必须至少点击过页面。

# PlayletManager.navigateBack(Object param)

接口含义和参数同 wx.navigateBack。

注意:接口调用成功的前提是用户必须至少点击过页面。

# PlayletManager.redirectTo(Object param)

接口含义和参数同 wx.redirectTo。

注意:接口调用成功的前提是用户必须至少点击过页面。

# PlayletManager.switchTab(Object param)

接口含义和参数同 wx.switchTab。

注意:接口调用成功的前提是用户必须至少点击过页面。

# PlayletManager.reLaunch(Object param)

接口含义和参数同 wx.reLaunch。

注意:接口调用成功的前提是用户必须至少点击过页面。