QQPlus

概述

腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频通话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与多种通讯终端相连。2015年,QQ继续为用户创造良好的通讯体验!其标志是一只戴着红色围巾的小企鹅。

QQPlus 原生插件是 qq 原生插件的升级版,开放平台的移动端 SDK,开发者集成此原生插件可以实现登陆、获取用户信息、分享内容到 QQ 客户端等功能。登陆授权时,原生插件内部会先判断当前设备是否已安装 QQ 客户端,若没安装则弹出网页版登陆页面,若已安装则跳转到 QQ 客户端提示用户登陆授权。

开发者使用本原生插件之前需要先到腾讯开放平台申请开发者账号,并在账号内填写相应信息创建自己的 APP,从而获取 APP ID。详情参考腾讯开放平台应用接入新手指引

实例widget下载地址

原生插件使用攻略

使用此原生插件之前需先配置config文件的Feature,方法如下:

  • 名称:qq
  • 参数:urlScheme、apiKey
  • 配置示例:
 <feature name="QQPlus">
    <param name="urlScheme" value="tencent101064640" />
    <param name="apiKey" value="101064640" />
 </feature>
  • 字段描述:

    urlScheme:(必须配置)用于实现应用间跳转及数据交换,本应用可以启动QQ客户端,也可以从QQ客户端跳回本应用。urlScheme 的 value 值是从腾讯开放平台获取的 APP ID 与 tencent 拼接而成。APP ID 申请方法参考腾讯开放平台应用接入简介

    apiKey:(必须配置)从腾讯开放平台获取的 APP ID,申请方法参考腾讯开放平台应用接入简介

**关于 Universal Link **

Universal Links(通用链接),是苹果在iOS9之后,提供的一种“通过传统HTTP链接来跳转APP”的能力。该特性相较于传统的Custom URL Scheme方式,具备唯一、安全、私有和简单的优势。

如何使用

  • 创建 entitlements 文件,Yonbuilder 移动开发平台上的开发者,可通过此文件告诉编译服务器开通 Associated Domain 功能。配置方法参考论坛帖子。配置示例如下:

        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
        <plist version="1.0">
        <dict>
            <key>com.apple.developer.associated-domains</key>
            <array>
                <string>applinks:developer.yonyou.com</string>
            </array>
        </dict>
        </plist>
    

    其中 com.apple.developer.associated-domains 对应的值applinks:developer.yonyou.com 是配置的你的应用的

  • 开通 Associated Domains。 登录苹果开发者账号,在左侧列表里找到 Identifiers,选中后再找到你的 Bundle ID (包名),选中该包名,配置开启其 Associated Domains 功能。如下下图所示:

illustration

原生插件接口

setIsPermissionGranted

// 在调用互联SDK相关功能接口之前,需要应用在确认用户已授权应用获取设备信息后,调用下面代码通知 SDK:
setIsPermissionGranted({
    granted:true
});
// 如果未调用该接口或传参为false时,调用其它功能接口将直接返回失败。

通知sdk是否获得获取手机信息的权限

setIsPermissionGranted({params})

params

granted:

  • 类型:布尔类型
  • 描述:是否获得获取手机信息的权限

示例代码

var qq = api.require('QQPlus');
qq.setIsPermissionGranted({
    granted:true
});

可用性

iOS系统,Android系统

可提供的1.1.9及更高版本

installed

判断当前设备是否安装了 QQ 客户端

注:在高版本的iPhone手机上,需要配置

<preference name="querySchemes" value="mqq,mqqapi"/>  

installed(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
       status:         	//布尔类型;是否安装了 QQ 客户端
}

示例代码

var qq = api.require('QQPlus');
qq.installed(function(ret, err) {
    if (ret.status) {
        api.alert({ msg: "安装" });
    } else {
        api.alert({ msg: "没有安装" });
    }
});

可用性

iOS系统,Android系统

可提供的1.0.2及更高版本

login

登陆qq

login({parmas},callback(ret, err))

params

apiKey:

  • 类型:字符串
  • 描述:(可选项)从腾讯开放平台申请的APP ID,为空则从当前widget的config文件读取

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,        //布尔类型;操作成功状态值
    accessToken:'',      //字符串类型;返回token
    openId:''            //字符串类型;返回openID
    eventType:'',        //字符串类型;只有iOS端返回unionid时有值didGetUnionID
    unionid:''           //字符串类型;QQ用户的统一标示,对当前开发者账号唯一,iOS端仅当eventType为didGetUnionID时有值
                         //必须先通过邮件向腾讯官方申请,获取权限,否则unionID无法获取,申请邮箱:connect@qq.com
                         //详情参考:http://www.jianshu.com/p/5775fcead59b
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:''             //字符串类型;错误描述
}

示例代码

var qq = api.require('QQPlus');
qq.login(function(ret, err) {
    api.alert({
        title: 'id和token',
        msg: ret.openId + ret.accessToken
    });
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

logout

登出qq

logout(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true           //布尔类型;操作成功状态值
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:''                  //字符串类型;错误描述
}

示例代码

var qq = api.require('QQPlus');
qq.logout(function(ret, err) {
    if (ret.status) {
        api.alert({ msg: '登出成功' });
    } else {
        api.alert({ msg: err.msg });
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getUserInfo

获取用户信息

getUserInfo(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,        //布尔类型;操作成功状态值
    info:                //JSON对象;包含用户信息描述,内部字段如下:
                            // city :用户所在城市
                            // figureurl  :空间小头像(30)地址 
                            // figureurl_1  :空间中头像(50)地址
                            // figureurl_2  :空间大头像(100)地址
                            // figureurl_qq_1  :用户小头像(40)地址
                            // figureurl_qq_2   :用户大头像(100)地址
                            // gender   	 :用户性别
                            // is_yellow_vip  :是否为黄钻用户
                            // level    	 :用户账号级别
                            // nickname  :用户昵称
                            // province    :用户所在省份
                            // yellow_vip_level   :用户账户黄钻等级               
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:''                 //字符串类型;错误描述
}

示例代码

var qq = api.require('QQPlus');
qq.getUserInfo(function(ret, err) {
    if (ret.status) {
        api.alert({ msg: JSON.stringify(ret) });
    } else {
        api.alert({ msg: err.msg });
    }
});

可用性

iOS系统,Android系统

可提供的1.0.1及更高版本

shareText

分享纯文本到手机 QQ(空间、群聊、讨论组、好友),在 android 平台上此接口无回调,在 iOS 平台分享成功无回调

shareText({params}, callback(ret, err))

params

text:

  • 类型:字符串
  • 描述:要分享的文本

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true     //布尔类型;操作成功状态值
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg: '',         //字符串类型;错误描述
    code: 0          //数字类型;错误码,错误码说明:
                      0:EQQAPISENDSUCESS
                      1:EQQAPIQQNOTINSTALLED
                      2:EQQAPIQQNOTSUPPORTAPI
                      3:EQQAPIMESSAGETYPEINVALID
                      4:EQQAPIMESSAGECONTENTNULL
                      5:EQQAPIMESSAGECONTENTINVALID
                      6:EQQAPIAPPNOTREGISTED
                      7:EQQAPIAPPSHAREASYNC
                     -1:EQQAPISENDFAILD
                     -4:用户取消分享
                    10000:qzone分享不支持text类型分享
                    10001:qzone分享不支持image类型分享 
                    10002:当前QQ版本太低,需要更新至新版本才可以支持       
}

示例代码

var qq = api.require('QQPlus');
qq.shareText({
    text: 'testtext'
},function(ret,err){
  if (ret.status){
    alert("分享成功!");
  } else {
    api.alert({msg: JSON.stringify(err)});
  }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

shareImage

分享单张本地图片到 QQ 空间或 QQ 好友、讨论组、群聊

shareImage({params}, callback(ret, err))

params

type:

  • 类型:字符串
  • 描述:(可选项)分享内容到好友或空间
  • 默认值:QZone
  • 取值范围:
    • QZone:分享到 QQ 空间
    • QFriend:分享给好友、讨论组、群聊

imgPath:

  • 类型:字符串
  • 描述:要分享的图片路径,要求本地路径(widget://、fs://)

title:

  • 类型:字符串
  • 描述:(可选项)要分享的图片标题,本参数仅支持 iOS 平台

description:

  • 类型:字符串
  • 描述:(可选项)要分享的图片描述,本参数仅支持 iOS 平台

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true      //布尔类型;操作成功状态值
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:''            //字符串类型;错误描述
    code: 0          //数字类型;错误码,错误码说明:
                      0:EQQAPISENDSUCESS
                      1:EQQAPIQQNOTINSTALLED
                      2:EQQAPIQQNOTSUPPORTAPI
                      3:EQQAPIMESSAGETYPEINVALID
                      4:EQQAPIMESSAGECONTENTNULL
                      5:EQQAPIMESSAGECONTENTINVALID
                      6:EQQAPIAPPNOTREGISTED
                      7:EQQAPIAPPSHAREASYNC
                     -1:EQQAPISENDFAILD
                     -4:用户取消分享
                    10000:qzone分享不支持text类型分享
                    10001:qzone分享不支持image类型分享 
                    10002:当前QQ版本太低,需要更新至新版本才可以支持         
}

示例代码

var qq = api.require('QQPlus');
qq.shareImage({
    type : 'QZone',
    imgPath: 'widget://res/img.png'
},function(ret,err){
  if (ret.status){
    alert("分享成功!");
  } else {
    api.alert({msg: JSON.stringify(err)});
  }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

shareNews

分享新闻到 QQ 空间或 QQ 好友、讨论组、群聊

shareNews({params}, callback(ret, err))

params

url:

  • 类型:字符串
  • 描述:要分享的新闻链接地址

title:

  • 类型:字符串
  • 描述:要分享的新闻标题

description:

  • 类型:字符串
  • 描述:要分享的新闻描述(分享到空间无效)

imgUrl:

  • 类型:字符串
  • 描述:要分享的新闻缩略图的url(网络/本地资源图片)Android平台只支持网络图片

type:

  • 类型:字符串
  • 描述:分享内容到好友或空间
  • 默认值:QZone
  • 取值范围:
    • QZone:分享到 QQ 空间
    • QFriend:分享到好友、讨论组、群聊(在 iOS 平台此分享成功后无回调)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;操作成功状态值
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:''           //字符串类型;错误描述
    code: 0          //数字类型;错误码,错误码说明:
                      0:EQQAPISENDSUCESS
                      1:EQQAPIQQNOTINSTALLED
                      2:EQQAPIQQNOTSUPPORTAPI
                      3:EQQAPIMESSAGETYPEINVALID
                      4:EQQAPIMESSAGECONTENTNULL
                      5:EQQAPIMESSAGECONTENTINVALID
                      6:EQQAPIAPPNOTREGISTED
                      7:EQQAPIAPPSHAREASYNC
                     -1:EQQAPISENDFAILD
                     -4:用户取消分享
                    10000:qzone分享不支持text类型分享
                    10001:qzone分享不支持image类型分享 
                    10002:当前QQ版本太低,需要更新至新版本才可以支持       
}

示例代码

var qq = api.require('QQPlus');
qq.shareNews({
    url: 'http://www.uzmap.com',
    title: '新闻分享',
    description: '新闻描述',
    imgUrl: 'http://upload.wabei.cn/2011/0807/20110807025817844.jpg'
},function(ret,err){
  if (ret.status){
    alert("分享成功!");
  } else {
    api.alert({msg: JSON.stringify(err)});
  }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

shareMusic

分享音乐到QQ 空间或 QQ 好友、讨论组、群聊

shareMusic({params}, callback(ret, err))

params

audioUrl:

  • 类型:字符串
  • 描述:要分享的音乐链接地址

targetUrl:

  • 类型:字符串
  • 描述:点击跳转的网页地址,iOS 平台暂不支持本参数

title:

  • 类型:字符串
  • 描述:(可选项)要分享的标题

description:

  • 类型:字符串
  • 描述:(可选项)要分享的描述

imgUrl:

  • 类型:字符串
  • 描述:要分享的音乐缩略图url(网络/本地资源图片)

type:

  • 类型:字符串
  • 描述:分享内容到好友或空间
  • 默认值:QZone
  • 取值范围:
    • QZone:分享到 QQ 空间
    • QFriend:分享到好友、讨论组、群聊(在 iOS 平台此分享成功后无回调)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true      //布尔类型;操作成功状态值
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:''            //字符串类型;错误描述
    code: 0          //数字类型;错误码,错误码说明:
                      0:EQQAPISENDSUCESS
                      1:EQQAPIQQNOTINSTALLED
                      2:EQQAPIQQNOTSUPPORTAPI
                      3:EQQAPIMESSAGETYPEINVALID
                      4:EQQAPIMESSAGECONTENTNULL
                      5:EQQAPIMESSAGECONTENTINVALID
                      6:EQQAPIAPPNOTREGISTED
                      7:EQQAPIAPPSHAREASYNC
                     -1:EQQAPISENDFAILD
                     -4:用户取消分享
                    10000:qzone分享不支持text类型分享
                    10001:qzone分享不支持image类型分享 
                    10002:当前QQ版本太低,需要更新至新版本才可以支持      
}

示例代码

var qq = api.require('QQPlus');
qq.shareMusic({
    audioUrl: 'http://7xq864.com1.z0.glb.clouddn.com/builder/591bde468d4e44b21cc225b7b6e1129a.mp3',
    targetUrl: 'http://douban.fm/?start=8508g3c27g-3&amp;cid=-3',
    title: '桔子香水',
    description: '任贤齐',
    imgUrl: 'http://upload.wabei.cn/2011/0807/20110807025817844.jpg'
},function(ret,err){
  if (ret.status){
    alert("分享成功!");
  } else {
    api.alert({msg: JSON.stringify(err)});
  }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

shareVideo

分享本地视频到 QQ 空间

shareVideo({params}, callback(ret, err))

params

videoUrl:

  • 类型:字符串
  • 描述:要分享的本地视频地址,在 android 平台上要求本地路径(widget://、fs://)。在 iOS 平台上要求系统相册内视频地址,可用 UIMediaScanner 原生插件获取(无需调用transPath接口转换)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true        //布尔类型;操作成功状态值
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg: '',         //字符串类型;错误描述
    code: 0          //数字类型;错误码,错误码说明:
                      0:EQQAPISENDSUCESS
                      1:EQQAPIQQNOTINSTALLED
                      2:EQQAPIQQNOTSUPPORTAPI
                      3:EQQAPIMESSAGETYPEINVALID
                      4:EQQAPIMESSAGECONTENTNULL
                      5:EQQAPIMESSAGECONTENTINVALID
                      6:EQQAPIAPPNOTREGISTED
                      7:EQQAPIAPPSHAREASYNC
                     -1:EQQAPISENDFAILD
                     -4:用户取消分享
                    10000:qzone分享不支持text类型分享
                    10001:qzone分享不支持image类型分享 
                    10002:当前QQ版本太低,需要更新至新版本才可以支持  
}

示例代码

var qq = api.require('QQPlus');
qq.shareVideo({
    videoUrl: 'fs://video.mp4'
},function(ret,err){
  if (ret.status){
    alert("分享成功!");
  } else {
    api.alert({msg: JSON.stringify(err)});
  }
});
//iOS测试代码
var UIMediaScanner = api.require('UIMediaScanner');
UIMediaScanner.open({
 type: 'video',
 column: 4,
 classify: true,
 max: 4,
 sort: {
     key: 'time',
     order: 'desc'
 },
 texts: {
     stateText: '已选择*项',
     cancelText: '取消',
     finishText: '完成'
 },
 styles: {
     bg: '#fff',
     mark: {
         icon: '',
         position: 'bottom_left',
         size: 20
     },
     nav: {
         bg: '#eee',
         stateColor: '#000',
         stateSize: 18,
         cancelBg: 'rgba(0,0,0,0)',
         cancelColor: '#000',
         cancelSize: 18,
         finishBg: 'rgba(0,0,0,0)',
         finishColor: '#000',
         finishSize: 18
     }
 },
 exchange: true,
 rotation: true
}, function(ret) {
 if (ret) {
     var video = ret.list[0];
     var qq = api.require('QQPlus');
     qq.shareVideo({
         videoUrl: video.path,
         title: "hello! test."
     },function(ret,err){
         if (ret.status){
             alert("分享成功!");
         } else {
             api.alert({msg: JSON.stringify(err)});
         }
     });
 }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

shareMood

发表说说到 QQ 空间

shareMood({params}, callback(ret, err))

params

summary:

  • 类型:字符串
  • 描述:(可选项)分享的说说的内容,注:当 imgUrls 有值时,summary 参数无效

imgUrls:

  • 类型:数组
  • 描述:(可选项)要分享的本地图片地址数组,要求本地路径(widget://、fs://),当本参数为空时,表示发表纯文本说说

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true        //布尔类型;操作成功状态值
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:''            //字符串类型;错误描述
    code: 0          //数字类型;错误码,错误码说明:
                      0:EQQAPISENDSUCESS
                      1:EQQAPIQQNOTINSTALLED
                      2:EQQAPIQQNOTSUPPORTAPI
                      3:EQQAPIMESSAGETYPEINVALID
                      4:EQQAPIMESSAGECONTENTNULL
                      5:EQQAPIMESSAGECONTENTINVALID
                      6:EQQAPIAPPNOTREGISTED
                      7:EQQAPIAPPSHAREASYNC
                     -1:EQQAPISENDFAILD
                     -4:用户取消分享
                    10000:qzone分享不支持text类型分享
                    10001:qzone分享不支持image类型分享 
                    10002:当前QQ版本太低,需要更新至新版本才可以支持       
}

示例代码

var qq = api.require('QQPlus');
qq.shareMood({
    summary: '测试分享说说',
    imgUrls: ['fs://img1.jpg','fs://img2.jpg']
},function(ret,err){
  if (ret.status){
    alert("分享成功!");
  } else {
    api.alert({msg: JSON.stringify(err)});
  }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/12/2