1. SSO安全登录QQ帐号
iOS SDK支持应用跳转到手机QQ进行登录,给用户提供更加安全、快捷的体验 。如果用户没有安装手机QQ,将打开登录页面。
2. 分享到QQ和QQ空间
2.1 分享到QQ好友
在用户安装了手机QQ时通过手机QQ进行分享,否则调用浏览器页面进行分享。
其中文本消息,图文消息和音频消息的title是必须的,summary可以不填,具体调用请参考2.3 分享示例代码
使用分享到QQ好友功能需要设置QQ业务回调,请参考6. 处理QQ业务的回调
2.2 分享到QQ空间
分享到QQ空间的接口用于取代老的分享接口addShareWithParams(该接口已经废弃)。
在用户安装了手机QQ(4.6版本以上)时通过手机QQ中的QZone结合版进行分享,否则调用
浏览器页面进行分享。
分享时调用浏览器页面进行分享。其中title是必须的,summary可以不填,具体调用请参考2.3 分享示例代码
使用分享到QQ空间功能需要设置QQ业务回调,请参考6. 处理QQ业务的回调
 
在分享到QQ好友和QQ空间的时候,根据是本地分享还是浏览器中的分享,支持分享的消息类型不同。
因为webQQ好友分享和web QQ空间的分享都不支持非URL类型的分享,所以这里建议在分享到QQ好友或者QQ空间的时候尽量避免这两种类型的调用,避免发生不支持的错误。
分享消息类型
QQ好友
QQ空间
web QQ好友
web QQ空间
QQApiTextObject
支持
不支持
不支持
不支持
QQApiImageObject
支持
不支持
不支持
不支持
QQApiNewsObject
支持
支持
支持
支持
QQApiImageObject
支持
支持
支持
支持
QQApiVideoObject
支持
支持
支持
支持
2.3 分享示例代码
下面是各种分享消息的实例代码,作为开发者调用QQ好友分享和QQ空间分享的参考:
纯文本分享:
//开发者分享的文本内容
QQApiTextObject *txtObj = [QQApiTextObject objectWithText:@"text"];
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:txtObj];
//将内容分享到qq
QQApiSendResultCode sent = [QQApiInterface sendReq:req]; 
纯图片分享:
//开发者分享图片数据
NSData *imgData = [NSData dataWithContentsOfFile:path];
//
QQApiImageObject *imgObj = [QQApiImageObject objectWithData:imgData
                                              previewImageData:imgData
                                              title:@"title"
                                              description:@"description"];
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:imgObj];
//将内容分享到qq
QQApiSendResultCode sent = [QQApiInterface sendReq:req];
 
新闻分享:
//分享跳转URL
NSString *url = @"/";
//分享图预览图URL地址
NSString *previewImageUrl = @"preImageUrl.png";
QQApiNewsObject *newsObj = [QQApiNewsObject
objectWithURL:[NSURL URLWithString:utf8String]
title: @"title";
description:@"description";
previewImageURL:[NSURL URLWithString:previewImageUrl]];
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:newsObj];
//将内容分享到qq
//QQApiSendResultCode sent = [QQApiInterface sendReq:req];app开发者需要更新此app以在此ios上正常使用
//将内容分享到qzone
QQApiSendResultCode sent = [QQApiInterface SendReqToQZone:req]; 
 
音乐分享:
//分享跳转URL
NSString *url = @"/";
//分享图预览图URL地址
NSString *previewImageUrl = @"preImageUrl.png";
//音乐播放的网络流媒体地址
NSString *flashURL = @"xxx.mp3 ";
QQApiAudioObject *audioObj =[QQApiAudioObject objectWithURL:[NSURL URLWithString:url]
title:@"title" description:@"description" previewImageURL:[NSURL URLWithString:previewImageUrl]];
//设置播放流媒体地址
[audioObj setFlashUrl:flashURL];
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:audioObj]
//将内容分享到qq
//QQApiSendResultCode sent = [QQApiInterface sendReq:req];
//将被容分享到qzone
QQApiSendResultCode sent = [QQApiInterface SendReqToQZone:req];
注意:
分享到QQ空间接口暂时不支持发送多张图片的能力,若开发者传入多张图片,则会自动选入第一张图片作为预览图。多图的能力将在以后支持。
 
3. 调用OpenAPI
SDK中具体支持的API种类和每条API的参数说明,请参照API列表。这里用设置用户头像举例说明。
3.1 OpenAPI参数字典封装
在封装各接口的参数字典时,推荐使用为每个接口新增的参数封装辅助类,如:
接口(BOOL)addShareWithParams:(NSMutableDictionary *)params
对应辅助类TCAddShareDic
 
TCAddShareDic辅助类中属性:
@property (nonatomic, retain) TCRequiredStr paramTitle;
对应于CGI请求中参数"title"
 
TCRequiredStr 表示这是一个必填参数,类型是字符串
TCOptionalStr 表示这是一个可选参数,类型是字符串
 
3.2 设置用户头像调用示例
设置QQ头像时,调用TencetnOAuth对象的setUserHeadpic方法:
1
2
3
4
5
6
7
8
TCSetUserHeadpic *params = [TCSetUserHeadpic dictionary];
params.paramImage = image;
params.paramFileName = @"make";
UIViewController *headController = nil;
[_tencentOAuth setUserHeadpic:params andViewController:&headController];
UIViewController *rootController = [[[app delegate] window] rootViewController];
[rootController dismissModalViewControllerAnimated:NO];
[rootController presentModalViewController:headController animated:YES];
 
设置头像完成后,会调用TencentSessionDelegate中的tencentOAuth:doCloseViewController通知应用界面需要关闭:
1
2
3
4
5
6
7
8
9
10
11
@protocol TencentSessionDelegate
- (void)setUserHeadpicResponse:(APIResponse*) response
- (void)tencentOAuth:(TencentOAuth *)tencentOAuth doCloseViewController:(UIViewController *)viewController
{
if (tencentOAuth == _tencentOAuth)
{
UIApplication *app = [UIApplication sharedApplication];
UIViewController *rootController = [[[app delegate] window] rootViewController];
[rootController dismissModalViewControllerAnimated:YES];
}
}
 
设置头像完成后,会调用TencentSessionDelegate中的setUserHeadpicResponse返回调用结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@protocol TencentSessionDelegate
- (void)setUserHeadpicResponse:(APIResponse*) response
{
    if (nil == response)
    {
        return;
    }
    if (URLREQUEST_FAILED == Code
        && kOpenSDKErrorUserHeadPicLarge == response.detailRetCode)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"操作失败" message:[NSString stringWithFormat:@"您的图片大小超标啦,请更换一张试试呢:)"]
        delegate:self cancelButtonTitle:@"我知道啦" otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
}