qq


qq模块实现QQ登录,分享,获取用户资料功能。通过rd.qq获取管理对象。使用此模块需要到腾讯开放平台申请注册应用,具体流程参照腾讯开放平台。(注:图片size小于1M

如何创建应用

1.请点击腾讯开放平台页面右上角的“登录”按钮,使用QQ帐号登录。如下图所示:
image 重要提示: 开发者QQ号码一旦注册不能变更,建议使用公司公共QQ号码而不是员工私人号码注册,以免遇到员工离职等情况造成不必要的麻烦。
2.登录成功后会跳转到注册页面,在注册页面需要提交公司或个人的基本资料。下图所示的是公司注册页面:
image
3.基本资料提交后,开发者需要进行邮箱验证。如下图所示:
image
image
image
4.验证完成后,开发者可以去创建应用,也可以继续完善资料。
5.邮箱验证成功后,回到刚才页面,刷新页面.点击创建应用。
6.选择您所需要的平台(单选).点击创建应用:
image
7.安卓示例:保留APP ID 用在初始化和配置 URL scheme.并填写相应信息:
image
8.iOS示例: 保留APP ID 用在初始化和配置 URL scheme.并填写相应信息:
image
9.在基础服务一栏查看已有的基础功能.点击某个功能.为其添加调试者.在上线前通过这个调试者来调试app:
image

配置:

为使得应用可以启动QQ客户端,并与之交换数据,同时可以从QQ客户端返回到应用,需要配置pluginConfigs文件的config。方法如下:

名称:qq
描述:

配置QQ专用的URL Scheme,使得本应用可以启动QQ客户端,并与之交换数据,同时可以从QQ客户端返回到应用

配置示例:
  <config pluginName="qq">
    <ios>
        <param key="Scheme" value="tencent100371282"></param>
        <param key="Scheme" value="QQ05FB8B52"></param>
    </ios>
    <android>
        <param key="Scheme" value="tencent100371282"></param>
    </android>
</config>
字段描述:
1、param-Scheme:声明此字段为URL Scheme类型
2、param- value:对应Scheme类型的值。
Scheme类型的值:
  • QQ : 由腾讯开放平台申请appId,再加上‘tencent’前缀构成。
  • QQ : 为了兼容旧版本的手机QQ,需要增加 URL Scheme。格式为:'QQ' + appId的16进制(如果appId转换的16进制数不够8位则在前面补0,如转换的是:5FB8B52,则最终填入为:QQ05FB8B52 注意:转换后的字母要大写)。(此值iOS平台需要配置,Android平台不需要配置)

分享类型(Number):

  • rd.qq.QFriend: 值为0,分享到好友

  • rd.qq.QZone: 值为1, 分享到空间

登录状态(Number):

  • rd.qq.LoginSuccess: 值为0, 登录成功

  • rd.qq.LoginFailed: 值为1, 登录失败

  • rd.qq.Logout: 值为2, 注销

分享状态(Number):

  • rd.qq.ShareSuccess: 值为0,分享成功

  • rd.qq.NotInstalled: 值为1,未安装QQ

  • rd.qq.NotSupportAPI: 值为2,API接口不支持

  • rd.qq.MsgTypeInvalid: 值为3,发送类型错误

  • rd.qq.MsgContentNull: 值为4,发送空内容

  • rd.qq.MsgContentInvalid: 值为5,发送内容错误

  • rd.qq.AppNotRegisted: 值为6,App未注册

  • rd.qq.SendFailed:值为-1,发送失败

  • rd.qq.CancelShare: 值为-4,用户取消分享

  • rd.qq.QZoneNotSupportText:值为10000,QZone分享不支持纯文本分享

  • rd.qq.QZoneNotSupportImage:值为10001,QZone分享不支持本地图片分享

获取用户信息状态(Number):

  • rd.qq.GetSuccess: 值为0,获取用户资料成功(网络请求成功发送至服务器,并且服务器返回数据格式正确)

  • rd.qq.GetFailed: 值为1,获取用户资料失败(网络异常,QQ未登录或服务器返回的数据格式不正确导致无法解析)

方法:

对象:

回调方法:

关于iOS9支持:

init


初始化QQ

rd.qq.init(appId);
说明:

初始化QQ。

参数:
  • appId: (String) 必选 从腾讯开放平台申请应用的appId,具体信息参照腾讯开放平台
返回值:

无返回值

示例:
rd.qq.init('100371282');

isInstalled


检测QQ是否安装

var boolResult = rd.qq.isInstalled();
说明:

检测QQ是否安装。对iOS而言,只有QQ已安装,才可以进行QQ分享与登录操作。

参数:

返回值:
  • boolResult: (Boolean) 如果手机安装了QQ,结果为true,否则,为false。
示例:
var boolResult = rd.qq.isInstalled();

isLogin


检测是否已经登录QQ

var boolResult = rd.qq.isLogin();
说明:

检测是否已经登录QQ。

参数:

返回值:
  • boolResult: (Boolean) 如果已经登录QQ,结果为true,否则,为false。
示例:
var boolResult = rd.qq.isLogin();

login


用户登录

rd.qq.login(callback);
说明:

用户登录操作,执行callback回调函数。

参数:
  • callback :(LogCallback) 必选 用户登录的回调函数.
返回值:

无返回值

示例:
rd.qq.login(function(state){alert(state);});

logout


用户注销

rd.qq.logout(callback);
说明:

用户注销操作,执行callback回调函数。

参数:
  • callback :(LogCallback) 必选 用户注销的回调函数.
返回值:

无返回值

示例:
rd.qq.logout(function(state){alert(state);});

shareMessage


分享纯文本

rd.qq.shareMessage(option,callback);
说明:

分享纯文本操作,通过option设置分享内容参数,执行callback回调函数。此方法iOS支持,Android不支持。

参数:
返回值:

无返回值

示例:
var option = {
            content : 'share text',
        };

rd.qq.shareMessage(option,function(state,msg){alert(msg);});

shareImage


分享纯图片

rd.qq.shareImage(option,callback);
说明:

分享纯图片操作,仅支持本地图片。通过option设置分享内容参数,执行callback回调函数。

参数:
返回值:

无返回值

示例:
var option = {
            content : 'share text',
            title:'image title',
            imageUrl : 'cpts://main/img/pic1.jpg',
        };

rd.qq.shareImage(option,function(state,msg){alert(msg);});

shareNews


分享新闻

rd.qq.shareNews(option,callback);
说明:

分享新闻操作。通过option设置分享内容参数,执行callback回调函数。

参数:
返回值:

无返回值

示例:
var option = {
            content : 'share text',
            title:'music title',
            imageUrl:'http://cc.cocimg.com/api/uploads/150701/c6fc11ad17203d01cb5a571d264f3ba6.jpg',
            targetUrl:'http://www.baidu.com',
            type:rd.qq.QFriend
        };

rd.qq.shareNews(option,function(state,msg){alert(msg);});

shareAudio


分享音乐

rd.qq.shareAudio(option,callback);
说明:

分享音乐操作。通过option设置分享内容参数,执行callback回调函数。

参数:
返回值:

无返回值

示例:
var option = {
            content : 'share text',
            title:'music title',
            imageUrl:'http://cc.cocimg.com/api/uploads/150701/c6fc11ad17203d01cb5a571d264f3ba6.jpg',
            targetUrl:'http://www.baidu.com',
            mediaUrl:'http://sc1.111ttt.com/2015/5/08/25/101251011120.mp3',
            type:rd.qq.QFriend
        };

rd.qq.shareAudio(option,function(state,msg){alert(msg);});

getUserInfo


获取用户资料

rd.qq.getUserInfo(callback);
说明:

获取用户资料。

参数:
返回值:

无返回值

示例:
rd.qq.getUserInfo(function(state,userInfo,error){if (state == 0)alert(JSON.stringify(userInfo));});

ShareOption


JSON对象 设置分享参数

ShareOption 
{
     property String  title,
     property String  content,
     property String  imageUrl,
     property String  targetUrl,
     property String  mediaUrl, 
     property Numbere  type
}
说明:

用于设置分享信息的参数。对于支持内部特定属性字段的方法而言,此特定属性字段必选。

属性:
示例:
var option = {
            content : 'share text',
            title:'music title',
            imageUrl:'http://cc.cocimg.com/api/uploads/150701/c6fc11ad17203d01cb5a571d264f3ba6.jpg',
            targetUrl:'http://www.baidu.com',
            mediaUrl:'http://sc1.111ttt.com/2015/5/08/25/101251011120.mp3',
            type:rd.qq.QFriend
        };

LogCallback


用户登录的回调函数

function LogCallback(state,info) {

}
说明:

参数:
  • state: ( 登录状态) 必选 用户登录操作状态信息
  • info: ( JSON) 必选 登录用户的accessToken、openId以及过期时间。仅当state为成功(rd.qq.LoginSuccess)时,有此信息,其他状态为空。
    • accessToken:(String) 登录用户的accessToken
    • openId:(String) 登录用户的openId
    • expirationDate:(String) accessToken的有效期的时间戳形式
返回值:

无返回值

GetUserInfoCallback


获取用户信息的回调函数

function GetUserInfoCallback(state,userInfo,error) {

}
说明:

参数:
返回值:

无返回值

ShareCallback


用户分享的回调函数

function ShareCallback(state,message) {

}
说明:

参数:
  • state: ( 分享状态) 必选 用户分享操作状态信息。
  • message: ( String ) 必选 用户分享操作结果
返回值:

无返回值

添加HTTP请求白名单


为了强制增强数据访问安全,iOS9默认会把大部分的HTTP请求都改为HTTPS请求。本插件基于qq集成。 所以,如果想在iOS9环境下使用本插件.则需要在pluginConfig.xml中进行配置。配置方式如下:

<!--找到InfoPlistEdit节点 在这里设置HTTPS相关参数.-->
<config pluginName="InfoPlistEdit">
    <ios>
        <!--表示开启http协议模式-->
        <param key="AllowAllHttpConnection" value="false"></param>
        <!--节点HttpWhiteList里填写的协议可以访问http请求.-->
        <param key="HttpWhiteList">
            <string>idqqimg.com</string>
            <string>qlogo.cn</string>
            <string>qplus.com</string>
            <string>qq.com</string>
            <string>gtimg.cn</string>
        </param>
    </ios>
</config>
说明:

将以上配置参数拷贝至项目中的pluginConfig.xml文件中即可.若已有相同的配置项.则不需要再次拷贝.在原基础上添加即可.

添加URLScheme白名单


苹果官方指出在iOS9.0及以上系统中,如果使用canOpenURL方法,该方法所涉及到的URL scheme必须在工程中将它们列为白名单,否则不能使用。 所以,如果想在iOS9环境下使用本插件.则需要在pluginConfig.xml中进行配置。配置方式如下:

<config pluginName="InfoPlistEdit">
    <ios>
        <!--将所需要用到的scheme添加到这里.-->
        <param key="SchemeWhiteList">
            <string>mqq</string>
            <string>mqqapi</string>
            <string>mqqwpa</string>
            <string>mqqbrowser</string>
            <string>mttbrowser</string>
            <string>mqqOpensdkSSoLogin</string>
            <string>mqqopensdkapiV2</string>
            <string>mqqopensdkapiV3</string>
            <string>wtloginmqq2</string>
            <string>mqzone</string>
            <string>mqzoneopensdk</string>
            <string>mqzoneopensdkapi</string>
            <string>mqzoneopensdkapi19</string>
            <string>mqzoneopensdkapiV2</string>
            <string>mqqapiwallet</string>
            <string>mqqopensdkfriend</string>
            <string>mqqopensdkdataline</string>
            <string>mqqgamebindinggroup</string>
            <string>mqqopensdkgrouptribeshare</string>
            <string>tencentapi.qq.reqContent</string>
            <string>tencentapi.qzone.reqContent</string>
        </param>
    </ios>
</config>
说明:

将以上配置参数拷贝至项目中的pluginConfig.xml文件中即可.若已有相同的配置项.则不需要再次拷贝.在原基础上添加即可.