一、QQ分享的准备工作
1.首先,把TencentOpenAPI.framework、TencentOpenApi_IOS_Bundle.bundle导入工程中。
2.添加SDK依赖的系统库文件。
“Security.framework”、“libiconv.dylib”、“SystemConfiguration.framework”、“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。
3.在info.plist中加入LSApplicationQueriesSchemes,type是数组
item如下:
4..选择项目,targets,点击info,点开下面的URL Types,点击加号
在URL Schemes里填写tencent + appid。
二、QQ分享的代码实现
0.初始化SDK
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[TencentOAuth alloc] initWithAppId:@"1105593761" andDelegate:self];
}
1.在相应的控制器中加入
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterfaceObject.h>
2.点击分享按钮后的代码
// 分享跳转URL
NSString *url = @"http://wiki.open.qq.com";
// 分享图、预览图URL地址
NSString *previewImageUrl = @"qq";
//分享内容
QQApiNewsObject *newsObj = [QQApiNewsObject objectWithURL:[NSURL URLWithString:url] title:@"标题" description:@"描述" previewImageURL:[NSURL URLWithString:previewImageUrl]];
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:newsObj];
// 将内容分享到qzone
QQApiSendResultCode send = [QQApiInterface SendReqToQZone:req];
// 分享到QQ
// SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:newsObj];
三、分享成功后的回调
1.从QQ客户端打开第三方APP会调用此方法
// 从微信端打开第三方APP会调用此方法,此方法再调用代理的onResp方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
[TencentOAuth HandleOpenURL:url];
return YES;
}
- (BOOL)application:(UIApplication*)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{
[TencentOAuth HandleOpenURL:url];
return YES;
}
2.让AppDelegate遵守QQApiInterfaceDelegate
3.实现代理中的onResp方法
- (void)onResp:(BaseResp *)resp {
if ([resp isKindOfClass:[QQBaseResp class]]){ //失败
if (resp.errCode == 0) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil
message:@"分享成功"
delegate:nil
cancelButtonTitle:NSLocalizedString(@"确定", nil)
otherButtonTitles:nil];
[alert show];
}else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil
message:@"分享失败"
delegate:nil
cancelButtonTitle:NSLocalizedString(@"确定", nil)
otherButtonTitles:nil];
[alert show];
}
}