-mqqapi内核的方法和属性
>= iOS 4.2
>= android 4.2
使用说明 : 如果在 iOS 中,值为 true,否则为 false
>= iOS 4.2
>= android 4.2
使用说明 : 如果在 android 中,值为 true,否则为 false
>= iOS 4.2
>= android 4.2
使用说明 : mqqapi自身的版本号
>= iOS 4.2
>= android 4.2
使用说明 : 如果在 手机 QQ中,值为手机QQ的版本号,如:4.6.2,否则为 0
>= iOS 4.2
>= Android 4.2
使用说明 : 用于生成回调名字,跟着 invoke 的参数传给客户端,客户端执行回调时,根据该回调名字找到相应的回调处理函数并执行
警告: 如果在 UI 相关接口的回调中调用 alert 等 UI 接口,会导致 WebView 假死,只能关进程处理
严重: 如果在接口 A 的回调中继续调用接口 B,接口 B 的调用可能会无效亦或者返回结果不正确
参数
名称 | 类型 | 描述 |
---|---|---|
handler() | Function | 必选:是 说明:接口的回调处理函数 |
deleteOnExec() | Boolean | 必选:否 说明: 若为 true 则执行完该回调之后删除之,用于防止同一个回调被多次执行(某些情况下有用) |
execOnNewThread() | Boolean | 必选:否 说明: 若为 true 则在另一个线程执行回调,iOS 中,以下两种场景须指定该参数为 true 默认值:true |
Example
var callbackName = mqq.callback(function(type, index){
console.log("type: " + type + ", index: " + index);
});
//弹出 ActionSheet
mqq.invoke("ui", "showActionSheet", {
"title" : "title",
"items" : ["item1", "item2"],
"cancel" : "cancel",
"close" : "close",
"onclick": callbackName
}
-本地和远程数据接口
>=iOS 4.6
>=android 4.6
使用说明:定制分享出去的url,图片,和文字等
注意:share_url必须跟页面url同一个域名,否则设置不生效
setShareInfo(params, callback)
必选
Object
可选
String
页面可以定制分享出去的url,可去掉某些敏感参数等,如果不传,则使用页面的url,长度不能超过120字节,超过的请转短链。另外,url必须跟页面url同一个域名,否则设置不生效。必选
String
分享的标题,最大45字节必选
String
分享的摘要,最大60字节可选
String
图片URL,原 imageUrl 参数,可以继续使用 imageUrl。Function
可选
回调Example
// 另外使用meta同样可以达到该接口的作用
<meta itemprop="name" content="这是分享的标题"/>
<meta itemprop="image" content="http://imgcache.qq.com/qqshow/ac/v4/global/logo.png" />
<meta name="description" itemprop="description" content="这是要分享的内容" />
H5应用设置方法
window.mqq.invoke("data","setShareInfo", {
share_url: window.OPEN_DATA && window.OPEN_DATA.shareurl,
title: 'H5应用',
desc: 'H5开放平台',
image_url: 'http://i.gtimg.cn/open/app_icon/05/58/35/77/1105583577_100_m.png'
});
严重:iOS端不支持callback回调,安卓超过60字符会转短地址
-系统和硬件相关信息
>=iOS 4.5
>=android 4.6
使用说明:获取客户端信息
参数
[必选]
{Function}
回调[必选]
{Object}
[必选]
{String}
获取手机QQ版本号,如"4.5.0"[必选]
{String}
获取手机QQ构建版本号,如"4.5.0.1",一般不需要使用到这个东东
>=iOS 5.2
>=android 5.2
使用说明:获取细化的具体网络类型
参数
[必选]
{Function}
回调[必选]
{Object}
[必选]
{Number}
网络类型,和原本的getNetworkType接口一样[必选]
{String}
细化的网络类型-传感器相关接口
>=iOS 4.6
>=android 4.6
使用说明:开始监听重力感应数据,回调会获得三个轴的数值,监听频率 50次/秒
参数
[必选]
{Function}
回调函数[必选]
{Boolean}
是否成功启动传感器[必选]
{Number}
[必选]
{Number}
[必选]
{Number}
>=iOS 4.6
>=android 4.6
使用说明:开始监听罗盘数据
参数
[必选]
{Function}
回调函数[必选]
{Boolean}
是否成功启动传感器[必选]
{Number}
面对的方向度数,频率50次/秒
>=iOS 4.6
>=android 4.6
使用说明:停止监听重力感应数据
>=iOS 4.6
>=android 4.6
使用说明:停止监听罗盘数据
-界面相关接口
>=iOS 4.7
>=android 4.7
使用说明:查询页面的可见性。当当前可见view/activity不是本页面,或应用退到后台时,此接口返回false,否则返回true。
参数
[必选]
{Function}
[必选]
{Boolean}
页面可见返回 true,不可见返回 falseExample
mqq.invoke('ui', 'pageVisibility', function (r) {
console.log("visible ?", r);
})
document.addEventListener("qbrowserVisibilityChange", function(e){
console.log(e.hidden);
});
警告:另外当页面可见性发生改变时,document会抛出qbrowserVisibilityChange事件。
>=iOS 4.5
>=android 4.6
使用说明:关闭当前webview
Example
mqq.invoke('ui', 'popBack');
>=iOS 4.6
android not support
使用说明:刷新客户端显示的网页标题。在iOS中,网页标题动态改变后,显示WebView的导航栏标题不会改变,请调用refreshTitle来手动刷新。Android不需要。
Example
document.title="新标题";
mqq.invoke('ui', 'refreshTitle');
>= iOS 4.7
>= android 4.7
使用说明 : 唤起扫一扫来扫描二维码
参数
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
name | String | 是 | 扫描结果如果要放到url的#参数上,则指定一个参数名 |
callback(result) | Function | 是 | 扫描结果回调 |
返回值
名称 | 类型 | 描述 |
---|---|---|
result | String | 扫描的结果字符串 |
Example
mqq.ui.scanQRcode({}, function(result){
console.log(retCode, decodeURIComponent(result));
})
>=iOS 4.7.2
>=android 5.1
使用说明:配置webview的行为
参数
[必选]
{Object}
[必选]
{Number}
是(1)否(0)支持右划关闭手势[必选]
{Number}
是(1)否(0)显示右上角按钮[必选]
{Number}
背景颜色,例如:0xFF0000[必选]
{Number}
文字颜色,例如:0xFF0000[必选]
{Boolean}
设置为false允许js不经用户触发来弹起键盘Example
//关闭右滑
mqq.invoke('ui', 'setWebViewBehavior', {
swipeBack:0
})
//设置导航栏为黑色背景、红色文字:
mqq.invoke('ui', 'setWebViewBehavior', {navBgColor:0x000000, navTextColor:0xFF0000});
//只修改背景颜色为灰色,文字颜色不变:
mqq.invoke('ui', 'setWebViewBahavior', {navBgColor:0x666666});
//只修改文字颜色为黑色,背景颜色不变:
mqq.invoke('ui', 'setWebViewBahavior', {navTextColor:0});
//恢复默认样式:
mqq.invoke('ui', 'setWebViewBehavior', {navBgColor:-1, navTextColor:-1});
-手Q空间接口
>= Android 6.6
>= IOS 6.6
使用说明 : 呼起说说发表界面
参数
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
text | String | 是 | 默认文字 |
photoList | Array<Object> | 是 | 图片列表 |
参数 photoList<Object>
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
url | string | 是 | 图片url地址 |
width | Number | 是 | 图片宽度 |
height | Number | 是 | 图片高度 |
Example
window.mqq.invoke('Qzone','writeMood',{
text: '这是默认文字',
photoList: [
{
url : 'http://p.qpic.cn/relation/2262359184/2262359184_1475072537827692_19518/0',
width: 640,
height: 340
},
{
url : 'http://p.qpic.cn/relation/2262359184/2262359184_1475072728850158_27169/0',
width: 300,
height: 450
}
]
});
>= Android 6.7
>= IOS 6.7
使用说明 : 图片分享(base64),建议图片大小在500k以内,最大不超过1M
参数
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
type | String | 是 | 分享的目标类型,默认为 0 0:QQ好友; 1:QQ空间; 2:微信好友; 3:微信朋友圈。 |
base64 | String | 是 | 图片的base64 |
返回值
名称 | 类型 | 描述 |
---|---|---|
retCode | int | 返回码 |
Example
window.mqq.invoke('Qzone','sharePicture',{
type: '0',
base64: 'data:image/jpg;base64,/9j/4AAQ...'
}, function(data){
//data.retCode
// 0 -- 用户点击发送,完成整个分享流程
// -1 -- 用户点击取消,中断分享流程(android)
// -2 -- 用户点击取消,中断分享流程(ios)
// xx -- 分享微信失败错误码(ios) e.g. 404-未找到微信,其他透传微信错误码
});
注意
var base64 = canvas.toDataURL("image/jpeg")
.replace('data:image/jpeg;','data:image/jpg;');
使用说明 : 开启监听群相册红点通知
参数
名称 | 类型 | 描述 |
---|---|---|
groupCode | Number | 必选:是 说明:群号 |
Example
mqq.invoke("Qzone", "StartQunRedPointNotify", {groupCode: 123456});
//接收红点数据
window.QZQunRedPointInterface = window.QZQunRedPointInterface || {};
window.QZQunRedPointInterface.onReceive = function(ret) {
// 红点个数 ret.data
};
使用说明 : 关闭监听群相册红点通知
Example
mqq.invoke("Qzone", "EndQunRedPointNotify");
使用说明 : 打开群相册上传图片组件
参数
名称 | 类型 | 描述 |
---|---|---|
groupCode | Number | 必选:是 说明:群号 |
Example
mqq.invoke("Qzone", "GroupUploadPhoto", {groupCode: 123456});
使用说明 : 下载指定 url 图片
参数
名称 | 类型 | 描述 |
---|---|---|
photos | Array | 必选:是 说明:url 数组 |
Example
mqq.invoke("Qzone", "QunDownloadPhoto", {
photos: [{
originurl: '原图 url',
bigurl: '大图 url'
}]
});
使用说明 : 从空间转载到群相册
参数
名称 | 类型 | 描述 |
---|---|---|
groupCode | Number | 必选:是 说明:群号 |
Example
mqq.invoke("Qzone", "GroupQuote", {groupCode: 123456});
使用说明 : native 选择 h5 群相册,将选择的 h5 群相册信息传给 native
参数
名称 | 类型 | 描述 |
---|---|---|
albumid | String | 必选:是 说明:相册id |
albumname | String | 必选:是 说明:相册名 |
Example
mqq.invoke("Qzone", "QunDidPickAlbum", {
albumid: 'id',
albumname: 'name'
});
使用说明 : h5 选择 native 空间相册,将选择的 native 空间相册信息传给 h5
Example
mqq.invoke("Qzone", "QunPickQzoneAlbum", {}, function(result) {
result {
albumid: xx,
albumname: xx,
albumcover: xx,
albumpermission: xx
}
});
使用说明 : 打开评论组件
参数
名称 | 类型 | 描述 |
---|---|---|
content | String | 必选:是 说明:默认内容 |
placeholder | String | 必选:是 说明:占位符 |
needEmoticonBtn | Boolean | 必选:是 说明:1表示显示,0表示隐藏 默认为0 |
needAtBtn | Boolean | 必选:是 说明:1表示显示@好友按钮,0表示隐藏 默认为0 |
needPrivateBtn | Boolean | 必选:是 说明:1表示显示私密评论按钮,0表示隐藏 ,默认为0 |
privateCommentStatus | Boolean | 必选:是 说明:1表示点亮私密评论按钮,0表示不点亮, 默认为0 |
isReply | Boolean | 必选:是 说明:1表示是回复,0表示不是回复。当isReply和privateCommentStatus都为1时,私密评论按钮亮起并不可点,注意此时needPrivateBtn需要设置为1,needPrivateBtn优先级最高 |
maxTextLength | Number | 必选:是 说明:允许输入的最大字符长度,字符长度计算逻辑同客户端现有逻辑,没传表示使用客户端现在的默认值 |
groupdId | Number | 必选:是 说明:如果是要@群成员的场景,需要传入群id,用于拉取群的成员来@ |
Example
mqq.invoke("Qzone", "TopicComment", {
content: '默认内容',
placeholder: '占位符',
needEmoticonBtn: 1,
needAtBtn: 1,
needPrivateBtn: 1,
privateCommentStatus: 1,
isReply: 1,
maxTextLength: 140,
groupdId: 111122333,
}, function(result) {
result {
content: 'xxx', //用户在输入框中输入的内容,表情需要转为[em]xxxx[/em]的格式,@某人要转成 : @{uin:183852032,nick:diaodiao}
privateComment: 1 //私密状态开启为1,不开启为0,请返回数字类型,如果不能返回数字,则改成,开启返回字符串1,未开启返回空字符串
}
});
使用说明 : 关闭评论框
Example
mqq.invoke("Qzone", "HideTopicComment");
>=iOS 6.6.0
使用说明 : 预加载音效文件,配合playSuperLikeMusic使用
参数
名称 | 类型 | 描述 |
---|---|---|
likeID | String | 必选:是 说明:音效ID |
url | String | 必选:是 说明:音效地址,格式须是zip,zip包里面是mp3文件 |
md5 | String | 必选:是 说明:音效文件的md5 |
Example
mqq.invoke("Qzone", "downloadSuperLikeMusic", {
likeID: '10140',
url: 'http://qzone.cm.com/qzone/space_item/material/BroadcastLike/org/0/10144/rock2.zip',
md5: 'ebe105397e7c4f04e8599728d0180803'
}, function(){
});
>=iOS 6.6.0
使用说明 : 播放预加载的音效文件,配合downloadSuperLikeMusic使用
参数
名称 | 类型 | 描述 |
---|---|---|
likeID | String | 必选:是 说明:音效ID |
md5 | String | 必选:是 说明:音效文件的md5 |
Example
mqq.invoke("Qzone", "playSuperLikeMusic", {
likeID: '10140',
md5: 'ebe105397e7c4f04e8599728d0180803'
});
>=iOS 7.3.0
>=Android 7.3.0
使用说明 : 打开全透明的Webview
参数
名称 | 类型 | 描述 |
---|---|---|
url | String | 必选:是 说明:url |
transparent | boolean | 必选:是 说明:1 表示打开透明Webview,0表示非透明 |
Example
mqq.invoke("Qzone", "OpenUrl", {
url: 'https://h5.qzone.qq.com/hybrid/app/show/recoverDialog?type=',
transparent: 1
});
-手Q音乐播放接口
使用说明 : 获取正在播放的音乐信息
参数:无需参数
Example
mqq.invoke("QzMusic", "getPlayingSongInfo", {});
使用说明 : 监听播放器信息变化
Example
mqq.invoke("QzMusic", "listenMusicState", {isOpen: 1});
特别说明 : 在调用getPlayingSongInfo 和 listenMusicState 之前,应先绑定回调函数,如下示例:
window.QQMusicJSInterface = {
onRecieve : function(ret){
if(ret && ret.type == 'WEBAPP_MUSIC' && ret.data){
var data = ret.data;
data.type = $.trim(data.type); // 剔除前后的空格(客户端写得有问题)
if('songinfo' == data.type) {//native有歌曲播放时进入这里
if('playing' == data.value.state) {
var currentTime = data.value.curr;
} else if('paused' == data.value.state) {
} else {
}
}
}
}
}
使用说明 : 播放音乐
参数
名称 | 类型 | 描述 |
---|---|---|
currentTime | Number | 必选:是 说明:开始播放时间,单位s |
detailUrl | String | 必选:是 说明:点击播放条跳转的h5 url |
duration | Number | 必选:是 说明:歌曲时长,单位s |
name | String | 必选:是 说明:播放条展示文案 |
playUrl | String | 必选:是 说明:音频url |
type | Number | 必选:是 说明:播放类型,一般固定填6 |
songId | Number | 必选:是 说明:歌曲id,如果你填了又正好songId是qq音乐的,ios下点击播放条会忽视你填的detailUrl,直接跳到qq音乐的h5页面,所以一般直接填0 |
Example
mqq.invoke("QzMusic", "playMusic", {
currentTime: 0,
detailUrl: 'http://fm.qq.com/luobo/hot?_wv=1',
duration: 100,
name: '好友热播榜',
playUrl: 'xxx',
type: 6,
songId: 0
});
使用说明 : 暂停正在播放的歌曲
参数:无需参数
Example
mqq.invoke("QzMusic", "pausePlay");
使用说明 : 恢复播放
参数:无需参数
Example
mqq.invoke("QzMusic", "resumePlay");
>= Android 6.1
>= IOS 6.3
使用说明 : Qzone 6.1及以上版本支持
离线预加载wns+html
参数
名称 | 类型 | 描述 |
---|---|---|
proxyUrl | string | 必选:是 要预加载的url(proxyUrl中必须带_proxy=1或_proxy=true) |
isCheckCache | boolean | 是否检查本地缓存 |
返回值
名称 | 类型 | 描述 |
---|---|---|
code | int | 返回码 |
msg | String | 错误信息 |
Example
mqq.invoke("QzoneData","offlineHttpProxy", {
proxyUrl:"url...",//要预加载的url
isCheckCache:true//是否检查本地缓存
}, function(evt){
alert(evt.data);
});
>= Android 7.1
>= IOS 7.1
使用说明 : 开始录音,最多能录5分钟
参数:无需参数
返回值:android QQ没有实现回调函数,所以音频本地id千万别从这里取,应从下面的stopRecord回调里取
名称 | 类型 | 描述 |
---|---|---|
audioClientKey | String | 音频本地id |
Example
mqq.invoke("QzoneAudio","startRecord", {}, function(data){
alert(data.audioClientKey);
});
//录音满5分钟自动停止,这里提供监听事件
mqq.addEventListener("QzoneJSBridgeQzoneAudioPlugin_RecordState",function(data){
alert(data.audioClientKey);
});
>= Android 7.1
>= IOS 7.1
使用说明 : 停止录音,获取音频本地id
参数:无需参数
返回值
名称 | 类型 | 描述 |
---|---|---|
audioClientKey | String | 音频本地id |
Example
mqq.invoke("QzoneAudio","stopRecord", {}, function(data){
alert(data.audioClientKey);
});
>= Android 7.1
>= IOS 7.1
使用说明 : 播放本地录音
参数:
名称 | 类型 | 描述 |
---|---|---|
audioClientKey | String | 必选:是 要播放的本地音频id |
返回值:无意义
Example
mqq.invoke("QzoneAudio","startPlay", {
audioClientKey: xxx
}, function(data){
alert(data);
});
//播放完成的监听事件
mqq.addEventListener("QzoneJSBridgeQzoneAudioPlugin_PlayState",function(data){
alert(data);
});
>= Android 7.1
>= IOS 7.1
使用说明 : 暂停播放
参数:
名称 | 类型 | 描述 |
---|---|---|
audioClientKey | String | 必选:是 要暂停播放的本地音频id |
返回值:无意义
Example
mqq.invoke("QzoneAudio","pausePlay", {
audioClientKey: xxx
}, function(data){
alert(data);
});
>= Android 7.1
>= IOS 7.1
使用说明 : 停止播放
参数:
名称 | 类型 | 描述 |
---|---|---|
audioClientKey | String | 必选:是 要停止播放的本地音频id |
返回值:无意义
Example
mqq.invoke("QzoneAudio","stopPlay", {
audioClientKey: xxx
}, function(data){
alert(data);
});
>= Android 7.1
>= IOS 7.1
使用说明 : 上传音频
参数:
名称 | 类型 | 描述 |
---|---|---|
audioClientKey | String | 必选:是 要上传的本地音频id |
返回值:
名称 | 类型 | 描述 |
---|---|---|
audioServerKey | String | 音频服务器id,下载音频时候需要 |
Example
mqq.invoke("QzoneAudio","startUpload", {
audioClientKey: xxx
}, function(data){
alert(data.audioServerKey);
});