腾讯视频jsapi模块
说明
1.引用js
<script type="text/javascript" src="http://qzs.qq.com/tencentwap/js/QQVideo/QQVideoBridge_v2.js">
2.h5调用jsApi的方式
QQVideoBridge.functionName(json_param).done(
function(json_result){
//do sth.
}
);
注:functionName:调用app的接口名,
json_param:调用参数,
json_result:结果返回
3.h5监听app触发的事件
QQVideoBridge.on("onEventName" , function(param){
});
注:onEventName:监听app的事件名,param:app传过来的参数
4.数据返回:
正确返回:
{
state: 0, //接口返回状态,0:成功, 1:失败
data: {} || "", //对应接口返回的原始数据,对字符串尝试json化,不能json的返回字符串
dataPlus:{}, //经过处理的一些的数据,有这个key的几个方法:getCookie ,getQQCookie,getWXCookie,getTVCookie,getMainCookie,其它方法没有这个key
}
错误返回:
{
state: 1, //接口返回状态,0:成功, 1:失败
msg: "" //错误信息
}
注:state为1时才有msg这个key,为0时才有data和dataPlus
例如:
getAppInfo接口的正确返回:
{
state: 0, //接口返回状态,0:成功, 1:失败
data: {
"errCode":"0",
"errMsg":"",
"result":{
"pkgName":"com.tencent.qqlive",
"version":"",
"buildVersion":"",
"installTime":1427702740,
"isJBOS":false
}
}
}
5.其它文档
播放器中的接口
显示页面 showH5
调用:QQVideoBridge.showH5()
参数: 无
返回: 无
隐藏页面 hideH5
调用:QQVideoBridge.hideH5()
或 QQVideoBridge.hideH5(params);
参数: 无:显示控制栏
或 params ={
//0不显示控制栏,1显示控制栏
isShowControl: 0
}
返回: 无
备注: 4.1.0后支持参数
关闭页面 close
调用:QQVideoBridge.close()
参数: 无
返回: 无
关闭页面 closeH5
调用:QQVideoBridge.closeH5()
参数: 无
返回: 无
暂停视频 pauseVideo
调用:QQVideoBridge.pauseVideo();
参数: 无
返回: 无
说明:jsapi内部调用setPlayerState方法,参数为1
继续播放视频 playVideo
调用:QQVideoBridge.playVideo();
参数: 无
返回: 无
说明:jsapi内部调用setPlayerState方法,参数为0
获取打点信息 getTagInfos
调用:QQVideoBridge.getTagInfos().done(function(res){
//do sth.
});
参数: 无
返回:{
state: 0,
data: [[{pt: 183000,cate:32,...}]] //打点信息
}
获取视频当前播放时间 getCurrentTime
调用:QQVideoBridge.getCurrentTime().done(function(res){
//do sth.
});
参数: 无
返回:{
state: 0,
data: 180000 //打点信息
}
设置h5页面实际作用区域 setH5Size
调用:QQVideoBridge.setH5Size(params);
参数: params = {
sizeArr : [
{left:"0",top:"50",width:"100",heigth:"200"},
{left:"120",top:"60",width:"80",heigth:"50"}
]
}
返回: 无
点击或滑动,询问app是否需要隐藏h5 isShouldHideH5
调用:QQVideoBridge.isShouldHideH5().done(function(res){
//do sth.
});
参数:无
返回: {
state:0,
data:{
某个key: 0//0:不隐藏 , 1:隐藏
}
}
获取播放器大小 getPlayerSize
调用:QQVideoBridge.getPlayerSize().done(function(res){
//do sth.
});
参数: 无
返回: {
state:0,
data:{
isFull: 0 //0表示竖屏(小窗),1全屏
}
}
获取视频信息 getVideoInfo
调用:QQVideoBridge.getVideoInfo().done(function(res){
//do sth.
});
参数: 无
返回: {
state:0,
data:{
cid:"",
vid:"",
lid:"",
...
}
}
getAppId
调用:QQVideoBridge.getAppId().done(function(res){
//do sth.
});
参数: 无
返回: res
显示app的某个native页面 showAppPage
调用:QQVideoBridge.showAppPage(params);
参数: params = {
mod:1 , //标识app的道具页面
args:{
pt: 660,
starId: 11111, //明星id
starName:"小A", //明星名称
starFaceImg:"http://i.gtimg.cn/qqlive/images/20150209/moren.png"//明星头像
}
}
返回: 无
跳转到当前视频的指定时间播放 jumpWatchTimeInVideo
调用:QQVideoBridge.jumpWatchTimeInVideo(params)
参数: params = {toWatchTime:90000};
返回: 无
专辑跳转 jumpVideo
调用:QQVideoBridge.jumpVideo(params)
参数: params = {
lid:"",
cid:"ngzbc3ljbp7hse8",
vid:"g0016o617kf",
watchTime:60000,//时间,以ms为单位
notPlayAD:false
};
返回: 无
分享 shareFromH5
调用:QQVideoBridge.shareFromH5(params).done(function(res){
//do sth.
});
参数: params = {
title:"share tile",
content:"share content",
imageUrl:"http://ugc.qpic.cn/tv/0/625112_370320/0",
url:"http://v.qq.com/cover/w/wucq6rnjfeiwvpn.html?vid=n014888qtyx",
cid:"wucq6rnjfeiwvpn",
vid:"n014888qtyx",
payType:8
}
返回: 无
备注: 老接口
拉起app的多路径分享 shareTo
调用:QQVideoBridge.shareTo(params).done(function(res){
//do sth.
});
参数: params = {
useCustomeInfo: 1,
webShareID: "11111", //无意义
webShareTitle: "shareTo标题",
webShareSubTitle: "shareTo副标题",
webShareImageURL: "http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/img/common/touch_icon.png",
webShareURL: "http://m.v.qq.com"
}
返回: {
state: 0, //接口返回状态,0:成功, 1:失败
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
登陆模块
统一登录 loginTv
调用:QQVideoBridge.loginTv();
参数: 无
返回: {
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
备注: jsapi内部调用actionLogin方法,参数为{"type":"tv"} (安卓3.9下默认拉微信登陆)
微信登录 loginWx
调用:QQVideoBridge.loginWx();
参数: 无
返回: {
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
说明:jsapi内部调用actionLogin方法,参数为{"type":"qq"}
QQ登录 loginQQ
调用:QQVideoBridge.loginQQ();
参数: 无
返回:{
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
说明:jsapi内部调用actionLogin方法,参数为{"type":"wx"}
获取主登录态 getMainLogin
调用:QQVideoBridge.getMainLogin().done(function(res){
//do sth.
});
参数: 无
返回: {
state: 0,
data: {
result: "qq"
errCode: 0,
errMsg: ""
}
}
获取主登陆用户信息 getMainUserInfo
调用:QQVideoBridge.getMainUserInfo().done(function(res){
//do sth.
});
参数: 无
返回: {
state: 0,
data: {
result:{
"userInfo":{
"nickname":"",
"headImgUrl":"",
"uin":""
},
"type":"qq"
}
errCode: 0,
errMsg: ""
}
}
获取所有的用户信息 getUserInfo
调用:QQVideoBridge.getUserInfo(params).done(function(res){
//do sth.
});
参数: params = {type:["qq","wx"]};
返回: {
state: 0,
data: {
result:{
"qq":{
"nickname":"",
"headImgUrl":"",
"uin":""
},
"wx":{
"nickname":"",
"headImgUrl":"",
"openId":""
}
}
errCode: 0,
errMsg: ""
}
}
获取主登陆的cookie getMainCookie
调用:QQVideoBridge.getMainCookie().done(function(res){
//do sth.
});
参数: 无
返回: {
state: 0,
data: {
result: {
cookie: "uin=2504981145;skey=MM1D13bKyp;lsky=00030000f39a74308eab906372e38b87b2653811caccb152b1b723748d0b8914051122eee8c17d173681fc3b;",
type: "qq"
}
errCode: 0,
errMsg: ""
}
}
获取所有账号cookie getCookie
调用:QQVideoBridge.getCookie().done(function(res){
//do sth.
});
参数: 无
返回: {
state: 0,
data: {
result:{
"qq":"uin=2504981145;skey=MM1D13bKyp;lsky=00030000f39a74308eab906372e38b87b2653811caccb152b1b723748d0b8914051122eee8c17d173681fc3b;",
"wx":""
}
errCode: 0,
errMsg: ""
}
}
获取qq账号cookie getQQCookie
调用:QQVideoBridge.getQQCookie(params).done(function(res){
//do sth.
});
参数: params = {type:["qq"]};
返回: {
state: 0,
data: {
result:{
"qq":"uin=2504981145;skey=MM1D13bKyp;lsky=00030000f39a74308eab906372e38b87b2653811caccb152b1b723748d0b8914051122eee8c17d173681fc3b;"
}
errCode: 0,
errMsg: ""
}
}
获取微信账号cookie getWXCookie
调用:QQVideoBridge.getWXCookie(params).done(function(res){
//do sth.
});
参数: params = {type:["wx"]};
返回: {
state: 0,
data: {
result:{
"wx":"appid=wxca942bbff22e0e51;openid=oQFqrjrT-tCt63gnrWhFV0Cr7wxs;access_token=OezXcEiiBSKSxW0eoylIeEj2CEOmBZxg1AwRpGsMHGziH0OaIy_AUZRqG7SDzsPo0hhHZGe_qqEFZ-UBbrLmAdOVDxt03j1GmsnPlggHRxXoEZHKgnlqFpqzkhNHOblHqdhOpyB5I9fqxo0MJInu7w"
}
errCode: 0,
errMsg: ""
}
}
获取tv账号cookie getTVCookie
调用:QQVideoBridge.getTVCookie(params).done(function(res){
//do sth.
});
参数: params = {type:["tv"]};
返回: {
state: 0,
data: {
result:{
"tv":"vuserid=38000421;vusession=a152bfd579066811ad94"
}
errCode: 0,
errMsg: ""
}
}
分享模块
分享朋友圈(安卓无副标题)shareWeixinTimeline
调用:QQVideoBridge.shareWeixinTimeline(params);
参数: params = {
"title":"share标题",
"subTitle":"share副标题",
"content":"share分享内容",
"imageUrl":"http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/img/common/touch_icon.png",
"imageData":"10101010100101",
"url":"http://m.v.qq.com"
};
返回: {
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
shareWeixinUser
调用:QQVideoBridge.shareWeixinUser(params);
参数: params = {
"title":"share标题",
"subTitle":"share副标题",
"content":"share分享内容",
"imageUrl":"http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/img/common/touch_icon.png",
"imageData":"10101010100101",
"url":"http://m.v.qq.com"
};
返回: {
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
分享到qq好友 shareQQUser
调用:QQVideoBridge.shareQQUser(params);
参数: params = {
"title":"share标题",
"subTitle":"share副标题",
"content":"share分享内容",
"imageUrl":"http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/img/common/touch_icon.png",
"imageData":"10101010100101",
"url":"http://m.v.qq.com"
};
返回: {
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
分享QQ空间 shareQzone
调用:QQVideoBridge.shareQzone(params);
参数: params = {
"title":"share标题",
"subTitle":"share副标题",
"content":"share分享内容",
"imageUrl":"http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/img/common/touch_icon.png",
"imageData":"10101010100101",
"url":"http://m.v.qq.com"
};
返回: {
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
分享新浪微博 shareSinaWeibo
调用:QQVideoBridge.shareSinaWeibo(params);
参数: params = {
"title":"share标题",
"subTitle":"share副标题",
"content":"share分享内容",
"imageUrl":"http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/img/common/touch_icon.png",
"imageData":"10101010100101",
"url":"http://m.v.qq.com"
};
返回: {
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
分享腾讯微博 shareTxWeibo
调用:QQVideoBridge.shareTxWeibo(params);
参数: params = {
"title":"share标题",
"subTitle":"share副标题",
"content":"share分享内容",
"imageUrl":"http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/img/common/touch_icon.png",
"imageData":"10101010100101",
"url":"http://m.v.qq.com"
};
返回: {
state: 0,
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
标准接口
判断当前客户端版本是否支持指定JS接口 checkApi
调用:QQVideoBridge.checkApi(params).done(function(){});
参数: params = {apiList:["getCookie","cookieForQQ"]};
返回: {
state: 0, //接口返回状态,0:成功, 1:失败
data: {
result: {
"getCookie":true,
"cookieForQQ":false
}
errCode: 0,
errMsg: ""
}
}
获取App相关信息 getAppInfo
调用:QQVideoBridge.getAppInfo(params).done(function(){});
参数: 无
返回: {
state: 0, //接口返回状态,0:成功, 1:失败
data: {
result: {
"pkgName":"com.tencent.qqlive",
"version":"",
"buildVersion":"",
"installTime":1427702740,
"isJBOS":false
}
errCode: 0,
errMsg: ""
}
}
获取设备信息 getDeviceInfo
调用:QQVideoBridge.getDeviceInfo().done(function(res){});
参数: 无
返回: {
state: 0, //接口返回状态,0:成功, 1:失败
data: {
result: {
"deviceId":"...",
"guid":"...",
"imei":"...",
"imsi":"...",
"mac":"...",
"isJBOS":false
}
errCode: 0,
errMsg: ""
}
}
触发app某个模块刷新 triggerAppRefresh
调用:QQVideoBridge.triggerAppRefresh(params);
参数: params ={
mod: 1,//加油模块
args:{}//用于扩展
}
返回: 无
设置More菜单 setMoreInfo
调用:QQVideoBridge.setMoreInfo(params).done(function(res){
//do sth.
});
参数: params = {
"hasRefresh":true,
"hasShare":true,
"hasFollow":true,
"shareInfo":{
"title":"abc",
"subTitle":"123456",
"singleTitle":"xxxxxxx",
"content":"abc 123456",
"contentTail":"xxxxxxx",
"imageUrl":"http://i.gtimg.cn/qqlive/images/20140907/i1410078602_1.jpg",
"url":"http://m.v.qq.com",
"style":"1",
"picList":[
{"imgUrl":"http://i.gtimg.cn/qqlive/images/20140907/i1410085060_1.jpg",
"thumbUrl":"http://i.gtimg.cn/qqlive/images/20140907/i1410078602_1.jpg"}
],
"coverId":"",
"videoId":""
},
"followInfo":{
"videoType":"1",
"title":"123456",
"imageUrl":"http://i.gtimg.cn/qqlive/images/20140907/i1410078602_1.jpg"",
"columnId":"100000",
"coverId":"",
"videoId":"",
"programId":"200000",
"dataKey":""
}
};
返回: {
state: 0, //接口返回状态,0:成功, 1:失败
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
openToolsDialog
调用:QQVideoBridge.openToolsDialog();
参数: 无
返回: 无
跳转到app某个页面 openView
调用:QQVideoBridge.openView(params).done(function(res){
//do sth.
});
参数: params = {
"url":"txvideo://v.qq.com/StarThemeSelectPopActivity?starthemeid=117"
}
返回: {
state: 0, //接口返回状态,0:成功, 1:失败
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
url跳转 openUrl
调用:QQVideoBridge.openUrl(params);
参数: params = {
"url":"http://m.v.qq.com/",
"style":"1"
}
返回:{
state: 0, //接口返回状态,0:成功, 1:失败
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
页面返回 goBack
调用:QQVideoBridge.goBack();
参数: 无
返回:{
state: 0, //接口返回状态,0:成功, 1:失败
data: {
result: ""
errCode: 0,
errMsg: ""
}
}
扩展功能
关注视频 actionFollow
调用:QQVideoBridge.actionFollow(params);
参数: params = {
"videoType":"1",
"title":"actionFollow123456",
"imageUrl":"http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/img/common/touch_icon.png",
"columnId":"",
"coverId":"ngzbc3ljbp7hse8",
"videoId":"g0016o617kf",
"programId":"",
"dataKey":""
}
触发事件: onActionFollow
回调事件: onActionFollowFinish
返回: {
state: 0,
data: {
result:"",
errCode: 0,
errMsg: ""
}
}
判断第三方app是否安装 isInstalled
调用:QQVideoBridge.isInstalled(params).done(function(res){
//do sth.
});
参数: params = {"pkgName":"com.tencent.mm"};
返回: {
state: 0,
data: {
result: {"installed":true}
errCode: 0,
errMsg: ""
}
}
备注:iPhone 4.0以及之前的版本由于设计不合理,使用和安卓相同的字段名称"pkgName",其值为shceme去掉"://",举例:scheme=tenvideo://,"pkgName"="tenvideo";scheme=weixin://,"pkgName"="weixin";iPhoone 4.1版本开始扩展支持"pkgUrl"字段,举例:scheme=tenvideo://,"pkgUrl"="tenvideo://";
拉起第三方app launch3rdApp
调用:QQVideoBridge.launch3rdApp(params);
参数: params = {"pkgName":"com.tencent.mm"};
返回:{
state: 0,
data: ""
}
获取地理位置 getLocation
调用:QQVideoBridge.getLocation().done(function(res){
//do sth.
});
参数: 无
返回: {
state: 0,
data: {
"result":{
"poiName":"深圳市南山区",
"lon":113.933145,
"lat":22.540734,
"address":"广东省深圳市南山区南山街道深南大道高新中四道31号"
},
"errCode":0,
"errMsg":""
}
}
相册选择图片 saveImage
调用:QQVideoBridge.saveImage(params);
参数: params = {"url":"http://img5.douban.com/view/photo/photo/public/p2235250327.jpg"};
返回: {
state: 0,
data: ""
}
备注: iPhone暂不支持(安卓失败)
上传照片/拍照上传 uploadPic
调用:QQVideoBridge.uploadPic();
参数: 无
返回: {
state: 0,
data: // file对象
}
备注: iPhone暂不支持(安卓失败)
拉起微信支付 pullWXPay
调用:QQVideoBridge.pullWXPay(params);
参数: params = {
"partnerid":"xxx",
"prepayid":"xxx",
"noncestr":"xxx",
"timestamp":"xxx",
"package":"xxx",
"sign":"xxx"
} ;
返回:
备注: 前往errorCode请点击
弹提示 toast
调用:QQVideoBridge.toast(params);
参数:params = {"content":"toast content"};
返回: 无
好莱坞模块
获取会员信息 getPayVip
调用:QQVideoBridge.getPayVip().done(function(res){
//do sth.
});
参数: 无
返回:
1.已登录
{
state: 0,
data: {
"result": {
"uin":"63631700",
"logoUrl":"http://i.gtimg.cn/qqlive/images/20140723/i1406107466_1.jpg",
"isAnnualVip":true,
"beginTime":1410435701,
"endTime":1477482101,
"level":4,
"isVip":true
},
"errCode":0,
"errMsg":""
}
}
2.未登录
{
state: 0,
data: {
"result": {},
"errCode":1,
"errMsg":"not login"
}
}
获取观影券数量 getTicketNum
调用:QQVideoBridge.getTicketNum().done(function(res){
//do sth.
});
参数: 无
返回: {
state: 0,
data: {
"result":{"num":6},
"errCode":0,
"errMsg":""
}
}