腾讯视频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.其它文档

QQVideoBridge h5和app交互的jsAPI说明
WebView_JS_API接口规范

播放器中的接口

显示页面 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: ""
	}
}
					
执行实例:shareWeixinTimeline

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":""
	} 
}