iOS QQ和QQ空间分享(非友盟等第三方)

一、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如下:


iOS QQ和QQ空间分享(非友盟等第三方)_第1张图片
屏幕快照 2016-11-16 下午11.43.35.png

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 
#import 
#import 

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];
        }

}

你可能感兴趣的:(iOS QQ和QQ空间分享(非友盟等第三方))