这个过程其实很简单,就是腾讯的文档真的不敢恭维!
如果只是想把一段文字,或一张图片分享到QQ(包括好友、群、讨论组、空间),那么你看文档会感觉到很无助,不知道从那里开始,并且地魔(demo)跑不起来!(ps,腾讯的员工是不是经常跳槽到微信?)
(1)首先,把TencentOpenAPI.framework、TencentOpenApi_IOS_Bundle.bundle导入工程中。
ps: 我在搜索资料时,看到有人说TencentOpenAPI.framework要放在工程根目录,我在Xcode6下试了一下,结果是不放根目录也行,同时Xcode6下,导入framework就好,其它操作都自动了,官方sdk文档好像好久没更新了,我又想吐槽?不要阻止我!what’s up?
(2)添加SDK依赖的系统库文件。
- Security.framework
- libiconv.dylib
- SystemConfiguration.framework
- CoreGraphics.Framework
- libsqlite3.dylib
- CoreTelephony.framework
- libstdc++.dylib
- libz.dylib
(3)在AppDelegate.h中 导入 头文件
1 |
(4)在AppDelegate.m中向腾讯注册。(ps:只是集成分享功能,所以不用授权)
1 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { |
要特别注意以下3点:
1、上面代码中QQkey为APP ID,而不是APP KEY,并且与URL schemes不相同。
2、URL type 里的 URL schemes = tencent + appid。(因为微信、微博的两个值是相同的,所以要注意一下。)
3、这里delegate为空,因为没有授权,所以不用代理。
(5)重写AppDelegate 的handleOpenURL和openURL方法
1 | - (BOOL)application:(UIApplication*)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{ |
(ps:不用实现TencentSessionDelegate代理方法,手机QQ里分享时,会等到分享成功后,才会跳回原应用,所以不用监听发送情况)
(6)设置Bundle display name属性值。
如果是Xcode 6.0创建工程时,默认可能没有单独设置Bundle display name属性值。但是因为SDK需要用到Bundle display name的值,所以务必请检查确保这个属性存在,如果没有请添加上。如下图所示:
(ps:注意的是,这个名字会用在2个地方:1、应用显示的名字,2、分享到QQ界面时显示的“来自”小尾巴(到空间时,小尾巴是你注册腾讯appid时写的应用名字)
(7)在实现分享的ViewCotroller里加入头文件
1 |
(8)实现分享内容的代码(以分享图片为例)
1 | //用于分享图片内容的对象 |
相关连接:
《QQ SDK iOS SDK API使用说明.doc》下载
> 注:本文首发于 [iHTCboy's blog](http://iHTCboy.com),如若转载,请注来源