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 的handleOpenURL和openURL方法
因为你不一定只集成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就好了,坑爹呢?
老规矩,有问题下方留言或者评论,一定及时和大家探讨,欢迎欢迎🙏