vk-hybrid
v2.0.1
Published
与APP通信的桥协议SDK
Downloads
2
Readme
vk-hybrid APP桥协议SDK
背景:
目前项目较多,不同团队可能在负责不同的项目,但每个项目中都使用了相同的接口与端通信。这些接口较为分散,没有复用性。
为了便于统一管理和及时更新端的通信能力,现将这些接口封装成NPM包,方便各个团队和业务线安装使用。
安装:
npm install vk-hybrid --registry=http://registry.vnpm.vipkid.com.cn
npm install http://registry.vnpm.vipkid.com.cn/vk-hybrid/download/vk-hybrid-版本号.tgz --save
当前最新版本是 2.0.1
一、基础能力
使用:
import {CommonBridge} from 'vk-hybrid'
//后退
CommonBridge.historyBack()
//显示toast
ParentBridge.toastShow({
text: '显示toast',
duration: 1000 (可选,默认为2000)
})
app的基础信息
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | appEnv | 获取native侧的基础信息 | 无 | 有 内容为json串,如下 |
{
uid: 设备id
app: app名称 study-iPad
vn: app三位版本号,字符串类型 1.0.1
vc: app版本码,数字类型,根据四位版本号计算得出的
os: 操作系统标识, iOS: i, android: a
ovn: 操作系统名称 iPhone OS
ovc: 操作系统版本
mod: 设备类型 iPad3,1
man: 设备制造商 Apple
dis: 屏幕宽高: height_width 1024_768
den: 屏幕密度 2
net: 网络类型
aid: app包名 com.vipkid.study-iPad
apn: 手机网络运营商
}
app暴露的方法
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | appAvailable | 获取app可供JS调用的方法列表 | 无 | 有 内容为json串,如下 |
{
module1: [method1, method2, method3],
module2: [method1, method2]
}
跳转页面
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | appOpenUrl | 获取app可供JS调用的方法列表 | url: 必选参数,页面路径target:可选参数,为'_blank'时,页面会在native的新页面打开;\为'_self'或者未指定时,页面会在当前页面跳转 | 无 |
后退
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | historyBack | H5页面需要后退时调用此API,native判断webview容器是否可后退,如果可以后退,则调用容器的后退方法,如果不可以后退,则关闭当前页面(viewcontroller或者activity) | 无 | 无 |
显示loading
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | loadingStart | 显示native提供的loading | 无 | 无 |
隐藏loading
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | loadingStop | 隐藏native提供的loading | 无 | 无 |
显示toast
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | toastShow | 调用native的toast提示,可以指定提示文本及toast显示时长 | text: '要提示的文本内容'duration: 显示时间,默认2000 #单位毫秒 | 无 |
事件
| 事件名 | 说明 | | :------| :------ | | pageShow | 1、页面第一次展示或者返回到该页面时触发2、v2.0.1版本开始支持 | | pageHide | 1、页面即将跳转到别的页面或者回退时触发2、v2.0.1版本开始支持 | 例: Common.on('pageShow', () => { //TODO })
二、家长端:
使用:
import {ParentBridge} from 'vk-hybrid'
调用方法:
//打开相册
ParentBridge.applyPermission({
permissions: 'album|camera'
})
.then(res => {
//TODO
})
.catch(err => {
//TODO
})
//音频播放
ParentBridge.audio.play({
index: 0
})
事件监听
//iOS内购
ParentBridge.on('innerPurchaseFinish', function(res){
// TODO
})
当前页面是否加载完成
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | webLoadReady | 无 | 无 | 无 回调无需实际字段,只要有回调,即认为页面已加载成功 |
应用权限
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | applyPermission | 1、查询应用是否拥有使用相应功能的权限,例如相册、相机、电话、通讯录2、iOS不支持电话和通讯录3、Android v1.10.1后开始支持 | permissions: (必选),album|camera|phone|contacts | 有 | | applyScheme | 1、查询客户端有没有安装对应scheme的应用2、仅支持iOS3、2.7.0后开始支持 | scheme: (必选) | 有 | | applyOpenScheme | 1、查询客户端有没有安装对应scheme的应用2、仅支持iOS3、2.7.0后开始支持 | installSchemeURL(必选):如果装了对应应用需要跳转的应用scheme的URLuninstallSchemeURL(非必选):如果没有安装对应应用需要跳转的URL,URL有两种情况,1.对应APP的appstore安装地址;2.空。为空时,若用户未装对应APP,则toast提示“跳转失败,请重试”。 | 有 |
音视频播放
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | videoPlay | 1、android v1.9.0后开始支持 | url(必选参数):视频链接title(必选参数):视频播放页面标题start_time(必选参数):进入时开始播放的时间点,单位秒 | 无 |
电话
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | phoneCall | 1、android v1.9.0后开始支持 | phone_number(必选参数):待拨打的电话号码 | 无 |
日历
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | calendarSyncCourse | 1、添加事件到系统日历2、v2.9.0后开始支持 | studentId(必选参数):添加日历对应的学生id,用于筛选日历calendarData(必选参数):添加所有日历需要的数据,数组类型,如下 | 有 如下 |
calendarData:
[{
title:日历的title,字符串类型
location:日历位置信息,可以作为副标题,目前为空,字符串类型
startDate:日历开始时间,毫秒时间戳
endDate:日历结束时间,毫秒时间戳
alarmArray:日历提醒的时间,数组中是提醒的分钟数
notes:日历的备注,目前包括课程详细信息和课表短链,字符串类型
onlineClassId:对应此节课的课程id(用于唯一标识日历)
}]
回调:
{
"status":客户端同步状态结果
"message": 失败信息,字符串,如果成功,传OK
}
日历状态同步结果:1xx
权限状态同步结果:2xx
101:课表已同步至手机日历
102:课表同步失败,请刷新界面后重试
103:暂无课表信息同步至日历
104:尚未设定日历(iOS)
201:日历权限申请失败,暂无法同步(Android)
Link分享
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | shareLink | 1、v1.12.0后开始支持,接口中track和trackContent参数从v1.14.0版本开始支持 2、端dev包不支持分享功能,需要用release包 | title:必选参数;分享标题description:必选参数;分享描述thumbnail:必选参数;分享icon链接link:必选参数;分享链接channel:分享渠道;若不传或值非法,则会弹出分享模块的渠道选择页,供用户选择;分享渠道值说明见下表track:是否使用服务统计,若不传或值非法,默认为不使用统计;值为0,表示不使用;值为1,表示使用trackContent:使用服务统计时,用于扩展统计内容,可由调用方自行决定内容,最终会统一落到统计数据中 | 有 如下 | channel: wechat:微信好友 moments:朋友圈 sina:新浪微博 qqzone:QQ空间
回调:
{
"result": 分享结果;值为0,表示分享成功;值为1,表示分享失败;值为2,表示分享取消;值为3,表示未知;
"channel": 实际分享的渠道;值跟参数说明中的渠道值相对应,且值一致
}
小程序分享
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | shareWXApplet | 1、v2.5.1后开始支持 | title:分享的小程序名称,长度不能超过512字节desc:分享的小程序的描述,长度不能超过1KimgUrl:兼容旧版本节点的图片,小于32K,新版本优先使用WXMiniProgramObject的hdImageData属性link:用于兼容低版本的网页链接channel:如果不传就会调起客户端分享的四个按钮的View,非微信对话渠道都会以链接分享出去(分享到朋友圈(moment)、微博(sina)和QQ空间(qqzone))miniId:小程序原始id(登陆微信开放平台在绑定的小程序中有这个id)miniPath:小程序页面的路径(个人理解为跳转到小程序的哪个页面)miniHdImage:小程序节点高清大图,小于128KminiShareTicket:可选,布尔类型,是否需要通过分享打开小程序时获取到更多信息 | 有 如下 |
图片分享
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | shareImg | 1、android v1.9.0后开始支持 | imgUrl(必选参数):分享时对应的图片内容channel(可选参数):参数值为异常或不存在时,分享模块会弹出分享渠道选择界面,由用户主动选择分享渠道后进行分享。参数值存在且无异常时,分享模块会直接将数据分享到相应的渠道track(可选参数):为0时或不传,表示不使用服务端统计;为1时,表示使用服务端统计trackContent:不使用服务端统计时,参数被忽略。使用服务端统计时,字段值会作为统计信息上报给服务端记录 | 无 |
微信支付
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | payWechat | 1、仅支持安卓系统2、v2.0.0后开始支持 | data:必传参数;实际支付数据,需参考Ping++相关支付细节 | 有 如下 |
回调:
{
"result": 支付结果;值为0,表示支付成功;值为1,表示支付失败;值为2,表示支付取消;值为3,表示异常,
"reason": 支付结果异常时的具体原因。 NOT_SUPPORT:渠道不支持;INVALID_PARAMS:参数错误;INVALID_DATA:数据错误;NOT_INSTALL:第三方应用未安装
}
默认方式支付
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | payDirect | 1、仅支持安卓系统2、v2.4.0后开始支持 | channel:必选参数;支付渠道,具体如下data:由订单组提供 | 有 同payPingpp |
channel:
cmblife:掌上生活
zl:招联(v2.5.0开始支持)
webank:微众(v2.6.0开始支持,待测试,请勿直接使用,使用前联系 何行舟(R&D))
baidu:百度钱包(v2.6.0开始支持,待测试,请勿直接使用,使用前联系 何行舟(R&D))
支付宝支付
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | payAli | 1、仅支持安卓系统2、v1.14.0后开始支持 | 无 | 有 同payPingpp |
获取当前网络
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | getNetType | 无 | 无 | 有 如下 |
{
"netType": 当前网络状态。none(无网络);2g;3g;4g;wifi;other(其他)
}
用户登录
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | userLogin | 无 | phone:可选参数;跳转到登录页时,预填写的手机号loginType:必选参数;用户退出后,跳转到登录页时,选择是页面切换到短信登录/密码登录;值为sms时,表示短信登录;值为pwd时,表示密码登录;参数值不正确时,默认定位到短信登录 | 有 如下 |
{
"state": 用户若取消登录,则返回cancel;若登录成功,则返回success
"channel": 用户是登录方式登录成功,则返回login;用户是注册的方式登录成功,则返回register
}
用户退出
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | userLogout | 用户退出登录后,会跳转到登录页 | 同userLogin | 无 |
获取接口请求的必要字段
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | userGetRequestInfo | 无 | 无 | 如下 |
未登录:
{
"vkSessionId":"xxxx"//当前使用的session id
}
已登陆:
{
"parentId":"",//家长id
"token":"xxxx",//当前用户token
“studentId”:"",//当前孩子id
"vkSessionId":"xxxx"//当前使用的session id
}
标签栏
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | tabbarVisibility | 接口仅支持在特定场景的WebView上调用,请确定好调用时机,接口调用将底部标签栏隐藏后,应该确保在无需隐藏底部标签栏时将底部标签栏设置为可见,确保APP后续其他业务逻辑正常 | isVisible:必选参数;是否可见function:必选参数;控制标签栏上具体某个标签页显示时,底部标签栏的可见性;例如,若值为booklist,则只在标签对应的约课页面时,底部状态栏根据isVisible的状态进行显示处理;默认情况下,所有标签对应的页面下,底部标签栏均为可见 | 有 如下 |
{
"result": 表示设置操作是否成功;若返回true,则表示设置成功;若返回false,则表示不支持相应的设置
}
点击事件埋点
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | trackClick | 1、v2.5.0版本后开始支持2、iOS从2.7.0后开始支持3、clickId以及params中用到的字段都需要在上线前确认可以正确上传到神策,避免字段重复或者类型不匹配造成上传失败埋点确实 | clickId:点击事件id,神策记录使用params:其他需要统计到埋点的相关信息,采用字典结构 | 无 |
触发事件埋点
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | trackTrigger | 1、v2.5.0版本后开始支持2、iOS从2.7.0后开始支持3、triggerId以及params中用到的字段都需要在上线前确认可以正确上传到神策,避免字段重复或者类型不匹配造成上传失败埋点确实 | triggerId:触发事件id,神策记录使用,神策记录使用params:其他需要统计到埋点的相关信息,采用字典结构 | 无 |
生命周期埋点
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | trackPageview | 1、v2.5.0版本后开始支持2、pageName、pageEvent以及params中用到的字段都需要在上线前确认可以正确上传到神策,避免字段重复或者类型不匹配造成上传失败埋点确实 | pageName:统计用的页面标示,可以使用url或者独立配置event:页面生命周期节点,目前可用的有enter\exitparams:其他需要统计到埋点的相关信息,采用字典结构 | 无 |
显示升级提示
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | upgradeShowTips | 仅支持安卓 | upgradeInfo: String 如下 | 无 |
{
"data":"https://file.vipkid.com.cn/apps/vipkid_v2.5.1_33882368_default.apk",
"message":"更新内容:\n1. 课表添加了取消约课按钮,一键取消预约\n2. 修复部分设备界面底部黑条问题\n3. 优化部分页面体验\n",
"version":"33882368",
"versionName":"2.5.1",
"forceUpgrade":false,
"slientDownload":false,
"title":"有新版本啦",
"titleApkExist":"新版本下载完啦",
"negativeButtonTitle":"暂不升级",
"positiveButtonTitle":"立即升级",
"negativeButtonTitleApkExist":"暂不安装",
"positiveButtonTitleApkExist":"立即安装",
"apkMD5":"6fce8704ef9dc01bc0371ec7f971560b",
"apkSize":"28M"
}
剪切板功能
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | clipboardCopy | 1、调用系统剪切板的复制字符串功能2、v2.10.0版本后支持 | "content":"需要复制的字符串内容" | 有 如下 |
{
"result":true
}
扫码功能
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | scanOpenQR | 1、qr扫码能力页面 支持相机和相册2、目前仅支持单方面调用扫码能力,暂不支持获取扫码解析结果3、Android>=2.12.0 iOS>=2.12.0 | 无 | 有 |
{
"result":true(或者false)
}
IM入口展示隐藏
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | imEntry | 1、H5页面展示IM入口2、2.14.0及后开始支持| status: 必选参数,'show'/'hide'eventId: H5页面对应的打点eventId值,详见PRD| 有 如下 |
{
"result":200/400,
"message":"OK"
}
ios内购
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | innerPurchase | 1、接口仅iOS版本支持2、iOS>=2.12.0 | "productId": 必选参数,购买商品对应的商品ID | 有 如下 |
{
"status":200, //发起购买时客户端的状态结果 200:客户端发起购买成功;500:客户端发起购买失败;501:客户端有之前未结束的购买
"message":"OK" //失败信息,字符串,如果成功,传OK
}
| 事件名称 | 事件说明 | 回调参数 | | :------| :------ | | innerPurchaseFinish | 将iOS内购最终结果返回给H5 | 有 如下 |
{
"result":200, //内购最终结果情况 200:内购最终结果成功;500:内购最终结果失败
"msg":"OK" //失败信息,字符串,如果成功,传OK
}
本地音频播放器
| 状态名称 | 状态说明 | | :------| :------ | | ParentBridge.audio.ERROR | 播放器处于错误状态 | | ParentBridge.audio.STOPPED | 播放器处于停止状态 | | ParentBridge.audio.PAUSED | 播放器处于暂停状态 | | ParentBridge.audio.PLAYING | 播放器处于播放状态 | | ParentBridge.audio.READY | 播放器处于准备状态 | | ParentBridge.audio.CYCLE_MODE_ORDER | 'ORDER'----列表循环 | | ParentBridge.audio.CYCLE_MODE_SINGLE | 'SINGLE'----单曲循环 |
| 属性名称 | 属性说明 | | :------| :------ | | ParentBridge.audio.currentSong | 当前歌曲信息 Object | | ParentBridge.audio.currentList | 当前播放列表 Array | | ParentBridge.audio.currentStatus | 当前播放状态 Number | | ParentBridge.audio.currentCycleMode | 当前循环模式 String |
| 方法名称 | 方法说明 | 参数 | 回调 | | :------| :------ | :------ | :------ | | ParentBridge.audio.statusSync | 当前播放器状态。1、用来更新同步前端页面 2、未初始化也可以调用 | 无 | 有,但无返回值 | | ParentBridge.audio.init | 初始化播放器接口1、每次初始化都以最新信息覆盖2、init接口调用后会将列表刷新并停止播放,列表一致性由业务通过3、statusSync接口获取当前播放信息进行判断后决定是否初始化,除statusSync接口外,其余所有功能接口需要调用init后才有效 | {targetUrl:"",//播放器跳转落地页面(version>=2.8.0) businessCode:"",//业务代码songsList:[{//歌单列表storyId:11, //故事idcname:"", //歌曲中文名称ename:"", //歌曲英文名称cover:"", //封面urlaudio:"", //歌曲资源地址 }]} | 有 如下 | | ParentBridge.audio.play | 开始播放任务 如果不传参数,则继续当前播放任务,如果当前处于播放状态,则无响应,如当前无播放任务切播放列表不为空,则播放第一首;如果传入序号,则切换指定歌曲播放,切换失败则继续播放当前任务 | {index: 0} | 无 | | ParentBridge.audio.pause | 暂停播放任务 如果当前处于暂停,则无响应 | 无 | 无 | | ParentBridge.audio.close | 停止播放任务并关闭播放器 包括app内部展示模块、通知模块、锁屏模块| 无 | 无 | | ParentBridge.audio.pre | 切换到上一首歌曲并开始播放 优先切换资源,而后开始加载播放 | 无 | 无 | | ParentBridge.audio.next | 切换到下一首歌曲并开始播放 优先切换资源,而后开始加载播放 | 无 | 无 | | ParentBridge.audio.getProgress | 获取播放进度 播放器处于关闭、错误状态时返回-1;其余状态返回当前进度,单位秒 | 无 | 有 如下 | | ParentBridge.audio.setProgress | 变更当前播放任务的进度 1、播放状态中调整后在指定进度开始播放 2、暂停状态中调整后依然处于暂停状态 3、优先调整进度,而后开始加载播放| {progress: 10} | 无 | | ParentBridge.audio.setCycleMode | 歌单循环模式single:单曲循环;order:列表顺序循环(默认)| {mode: ""} | 无 |
ParentBridge.audio.init的回调:
{
"result": true:表示初始化参数正确合法;false:表示初始化参数异常或者播放器初始化,
"message": 错误信息
}
ParentBridge.audio.getProgress的回调:
{
"progress":10// 播放进度
}
| 事件名称 | 事件说明 | | :------| :------ | | startPlay | 开始播放事件 | | pausePlay | 暂停播放事件 | | completePlay | 播放完成事件 | | startLoad | 资源开始加载事件 | | endLoad | 资源结束加载事件 | | errorLoad | 资源加载失败事件 | | closePlay | 播放器关闭事件 | | unInit | 未初始化调用错误事件 | | errorParams | 传递参数错误 | | errorHandle | 播放器异常错误 |
例:
ParentBridge.audio.on('startPlay', (msg) => {
// TODO
})
三、教师端:
使用:
import {TeacherBridge} from 'vk-hybrid'
//打开相册
TeacherBridge.shareInfo({
"title":"" 分享内容标题
"desc":"" 分享内容描述
"imgUrl":"", 分享图片链接
"link":"",分享链接
})
//录音功能
TeacherBridge.record.startRecord({
maxDuration: '20000'
})
录音功能
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | startRecord | H5通过native开始录音 | maxDuration:String,必选参数,录音时长 | 有 内容为json串,如下 |
{
"nativeType":"android",//设备
"eventType":"", //事件类型(EVENT_NATIVE_RECORD_AMPLITUDE_UPDATE//录音音量振幅事件 EVENT_NATIVE_RECORD_COMPLETED //录音完成事件EVENT_NATIVE_RECORD_EXCEPTION //录音失败事件)
"amplitude":XXXX,//录音音量振幅
"filePath":"XXXX",//录音文件本地地址
"errorCode":XXXX//录音失败错误码
}
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | stopRecord | H5通过native停止录音 | 无 | 有 内容为json串,如下 |
{
"nativeType":"android",//设备
"filePath":"XXXX",//录音文件本地地址
}
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | cancelRecord | H5通过native 取消录音 | 无 | 无 |
媒体播放功能:
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | startPlay | H5通过native 开始播放 | 无 | 有 | | stopPlay | H5通过native 停止播放 | 无 | 无 | | pausePlay | H5通过native 暂停播放 | 无 | 无 | | resumePlay | H5通过native 继续播放 | 无 | 无 |
上传功能
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | startUpload | H5通过native 开始上传 | 无 | 有 如下 |
{
"nativeType": "android", //设备
"eventType": "",//事件类型(EVENT_NATIVE_UPLOAD_COMPLETED//上传完成事件
EVENT_NATIVE_UPLOAD_EXCEPTION//上传失败事件)
"fileInfo": {
"fileUrl": "",
"bucketName": "",
"key": "",
"teacherId": ""
}
}
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | cancelUpload | H5通过native 取消上传 | 无 | 无 | | pauseUpload | H5通过native 暂停上传 | 无 | 无 | | resumeUpload | H5通过native 继续上传 | 无 | 无 |
分享
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | shareInfo | H5调用native分享功能支持link分享 link不能为空 | 如下 | 无 |
{
"title":"" 分享内容标题
"desc":"" 分享内容描述
"imgUrl":"", 分享图片链接
"link":"",分享链接
}
选择视频等自运营相关功能
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | feedSend | H5 调起 APP 的选择视频弹窗,进而能够让老师录制视频或者从相册选择,最后压缩并上传视频,发送 feed | 如下 |
javascript:window.nativeCallBack() |
{
“duration”: 视频时长限制,
"framerate": 视频帧率,
"coderate": 视频码率,
"forbidconvert": 禁止转码,1禁止,0不禁止,
"maxsize": 视频上传最大大小 MB,
"exportLevel": iOS相册压缩质量(0、1、2)
"title": 活动标题,
"tag": 活动 tag,
"activityId": 活动 ID
}
H5 检查 APP 权限
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | checkCameraPermission | 检查是否有摄像头权限 | 无 | 有 如下 | | requestCameraPermission | 弹窗申请摄像头权限 | 无 | 有 如下 | | checkMicrophonePermission | 检查是否有麦克风权限 | 无 | 有 如下 | | requestMicrophonePermission | 弹窗申请麦克风权限 | 无 | 有 如下 | | checkExternalStoragePermission | 检查是否有外存储权限 | 无 | 有 如下 | | requestExternalStoragePermission | 弹窗申请外存储权限 | 无 | 有 如下 |
{
code: 200/500,
message: "xxxx"
}
注:200为申请成功,500为申请失败
page功能
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | pageNavigation | 显示或隐藏导航栏 | 有 show=true/false | 无 | | pageClose | 关闭页面 | 无 | 无 |
recruit功能
| 方法 | 说明 | 参数 | 回调 | | :------| :------ | :------ | :-----: | | recruitCompleteQuiz | 客户端跳转H5链接的答题页,会加上字段app_support=false,成功提交该题答案之后,需要调用桥能力 vkappbridge://recruit/complete_quiz 来告知客户端,通知客户端跳转别的页面继续答题 | 无 | 无 |