iOS QQ分享-官方集成

好脾气的程序员也会一边看腾讯的SDK一边骂娘! ---- 一哥哥

 

做完腾讯官方的集成才感受到来自鹅厂的一万点伤害,相比之下私以为没有比环信SDK更有爱的了,有事没事都能骚扰在线客服,吐槽结束,下面介绍如何集成QQ的官方分享

 

一.准备工作

1,在腾讯开放平台申请分享需要使用的APPID (点击我进入腾讯开发平台

2,下载官方最新版本的SDK(进入下载页面

二.环境配置

1,添加SDK依赖的系统库文件。分别是”Security.framework”, “libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。

2,添加URL schemes,注意QQ的URL schemes为 tencent + 你的appid

3,添加白名单方法点此查看

三.代码编写

1,AppDelegate.h中 导入头文件#import <TencentOpenAPI/TencentOAuth.h>

2,遵循<QQApiInterfaceDelegate>协议

3,在didFinishLaunchingWithOptions方法中注册:

TencentOAuth *OAuth = [[TencentOAuth alloc] initWithAppId:@"你的appid" andDelegate:nil];

4,重写AppDelegate handleOpenURLopenURL方法 

因为你不一定只集成QQ分享,所以在这两个方法里,需要做判断,如下图:

其中TENCENT_CONNECT_APP_KEY就是你的appid ,源码为

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {

    if ([url.absoluteString hasPrefix:[NSString stringWithFormat:@"tencent%@",TENCENT_CONNECT_APP_KEY]]) {

        [QQApiInterface handleOpenURL:url delegate:self];

        return [TencentOAuth HandleOpenURL:url];

    }return YES;

}

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

    if ([url.absoluteString hasPrefix:[NSString stringWithFormat:@"tencent%@",TENCENT_CONNECT_APP_KEY]]) {

        [QQApiInterface handleOpenURL:url delegate:self];

        return [TencentOAuth HandleOpenURL:url];

    }

    return YES;

}

5,进行分享:

代码如下:

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

    NSURL *preimageUrl = [NSURL URLWithString:@"http://www.sizzee.com/index.php/catalog/product/view/id/55730/s/10196171/?SID=au0lhpg54f11nenmrjvhsh0rq6?uk=Y3VzdG9tZXJfaWQ9Mjc0fHByb2R1Y3RfaWQ9NTU3MzA"];

    QQApiNewsObject* img = [QQApiNewsObject objectWithURL:url title:@"测试分享" description:[NSString stringWithFormat:@"分享内容------新闻URL对象分享 ------test"] previewImageURL:preimageUrl];

    

    //请求帮助类,分享的所有基础对象,都要封装成这种请求对象。

    SendMessageToQQReq* req = [SendMessageToQQReq reqWithContent:img];

    QQApiSendResultCode sent = [QQApiInterface sendReq:req];

    NSLog(@"QQApiSendResultCode %d",sent);

其中[QQApiInterface sendReq:req] 里的sendReq为发送到QQ好友列表,SendReqToQZone为发送到QQ空间,详细的方式可以点击QQApiInterface进行查看

至此,QQ分享就完成了,以下为亲身实遇的几个bug:

1,QQApiSendResultCode 2 控制台打印出这个错误说明没有配置白名单

2,QQApiSendResultCode -2 这个错误是最值得骂娘的,当然挨骂的是鹅厂,我因为这个错误整整修了五天,最后排查出的结果竟然是SDK错了,多试试几个版本的SDK就好了,坑爹呢?

老规矩,有问题下方留言或者评论,一定及时和大家探讨,欢迎欢迎🙏

 

posted @ 2017-05-05 11:19  OC大人  阅读(1518)  评论(0编辑  收藏  举报