好脾气的程序员也会一边看腾讯的SDK一边骂娘! ---- 一哥哥php
作完腾讯官方的集成才感觉到来自鹅厂的一万点伤害,相比之下私觉得没有比环信SDK更有爱的了,有事没事都能骚扰在线客服,吐槽结束,下面介绍如何集成QQ的官方分享c++
1,在腾讯开放平台申请分享须要使用的APPID (点击我进入腾讯开发平台)程序员
2,下载官方最新版本的SDK(进入下载页面)sql
1,添加SDK依赖的系统库文件。分别是”Security.framework”, “libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。app
2,添加URL schemes,注意QQ的URL schemes为 tencent + 你的appid测试
3,添加白名单(方法点此查看)url
1,AppDelegate.h中 导入头文件#import <TencentOpenAPI/TencentOAuth.h>spa
2,遵循<QQApiInterfaceDelegate>协议3d
3,在didFinishLaunchingWithOptions方法中注册:orm
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就行了,坑爹呢?
老规矩,有问题下方留言或者评论,必定及时和你们探讨,欢迎欢迎🙏