iOS单独集成QQ分享功能的苦逼经验

简介: 这个过程其实很简单,就是腾讯的文档真的不敢恭维!如果只是想把一段文字,或一张图片分享到QQ(包括好友、群、讨论组、空间),那么你看文档会感觉到很无助,不知道从那里开始,并且地魔(demo)跑不起来!(ps,腾讯的员工是不是经常跳槽到微信?)(1)首先,把TencentOpenAPI.framework、TencentOpenApi_IOS_Bundle.bundle导入工程中。

这个过程其实很简单,就是腾讯的文档真的不敢恭维!

如果只是想把一段文字,或一张图片分享到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中 导入 头文件

#import <TencentOpenAPI/TencentOAuth.h>

4)在AppDelegate.m中向腾讯注册。(ps:只是集成分享功能,所以不用授权)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

[[TencentOAuth alloc] initWithAppId:QQKey andDelegate:nil]; //注册

【要特别注意以下3点:

1、上面代码中QQkey为APP ID,而不是APP KEY,并且与URL schemes不相同。

2、URL type 里的 URL schemes  = tencent + appid。(因为微信、微博的两个值是相同的,所以要注意一下。)


img_e3e9834201664690ca831102aeed81d1.png
appid是1104292447

3、这里delegate为空,因为没有授权,所以不用代理。

(5)重写AppDelegate 的handleOpenURL和openURL方法

- (BOOL)application:(UIApplication*)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{

return[TencentOAuth HandleOpenURL:url];

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

return[TencentOAuth HandleOpenURL:url];

}

(ps:不用实现TencentSessionDelegate代理方法,手机QQ里分享时,会等到分享成功后,才会跳回原应用,所以不用监听发送情况)

(6)设置Bundle display name属性值。

如果是Xcode 6.0创建工程时,默认可能没有单独设置Bundle display name属性值。但是因为SDK需要用到Bundle display name的值,所以务必请检查确保这个属性存在,如果没有请添加上。如下图所示:


img_eaeb920b1ee0b5ef27db092e66c0bd42.png
Bundle display name 为桂林理工大学

(ps:注意的是,这个名字会用在2个地方:1、应用显示的名字,2、分享到QQ界面时显示的“来自”小尾巴(到空间时,小尾巴是你注册腾讯appid时写的应用名字)

(7)在实现分享的ViewCotroller里加入头文件

#import  <TencentOpenAPI/QQApi.h>

#import <TencentOpenAPI/QQApiInterface.h>

(8)实现分享内容的代码(以分享图片为例)

//用于分享图片内容的对象

QQApiImageObject *imgObj = [QQApiImageObject objectWithData:imgData

previewImageData:previewImage

title:self.newsModel.title

description:@"由 桂林理工大学-校园通 转码"];

SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:imgObj];

//将内容分享到qq

QQApiSendResultCode sent = [QQApiInterface sendReq:req];

其它内容,大家还是磨磨官方文档,或者用集成化的sdk吧,同时希望腾讯的iOS开发者不要在打酱油了~.~

nice~


相关连接:

QQ SDK 介绍页

QQSDK IOS_API调用说明

《QQSDK iOS SDK环境搭建》下载

《QQSDK iOS SDK API使用说明》下载


- 如果有什么疑问,可以在评论区一起讨论;

- 如果有什么不正确的地方,欢迎指导!

> 注:本文首发于iHTCboy's blog,如若转载,请注明来源。

目录
相关文章
|
3月前
|
存储 Go
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
本文将探讨几个热门的 go 日志库如 logrus、zap 和官网的 slog,我将分析这些库的的关键设计元素,探讨它们是如何支持日志轮转与切割功能的配置。
100 0
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
27 0
|
4月前
|
Java 数据库连接 数据库
MyBatis与Spring的集成整合加优化分页功能
MyBatis与Spring的集成整合加优化分页功能
|
5月前
|
开发框架 Java easyexcel
如何使用 SpringBoot 集成 EasyExcel 3.x 来实现优雅的 Excel 导入导出功能?
如何使用 SpringBoot 集成 EasyExcel 3.x 来实现优雅的 Excel 导入导出功能?
277 2
如何使用 SpringBoot 集成 EasyExcel 3.x 来实现优雅的 Excel 导入导出功能?
|
5月前
|
分布式计算 DataWorks 关系型数据库
MaxCompute支持通过DataWorks数据集成功能将其他数据源数据同步至MaxCompute
MaxCompute支持通过DataWorks数据集成功能将其他数据源数据同步至MaxCompute
37 1
|
7月前
|
小程序 JavaScript API
支付宝小程序集成mqtt兼容IOS和安卓
支付宝小程序集成mqtt兼容IOS和安卓
137 0
|
7月前
|
iOS开发 开发者 Perl
使用mPaaS iOS通过Pod集成"mPaaS_TinyApp"时遇到了错误
使用mPaaS iOS通过Pod集成"mPaaS_TinyApp"时遇到了错误
86 2
|
7月前
|
存储 对象存储 索引
针对OSS数据集成场景下的功能全面优化【Dataphin V3.12]
OSS(Object Storage Service)是对象存储服务,适用于存放各种文件类型,Dataphin已经支持连接到OSS进行文件数据的读取与写入。本期版本升级中,Dataphin对于OSS的数据同步场景做了全面的功能升级,包括数据源、输入组件与数据组件,一起来了解一下吧~
212 0
|
8月前
|
API 开发工具 iOS开发
一点就通,社交源码IOS客户端开发集成SDK
所谓SDK,全称是SoftwaredevelopmentKit,翻译成软件开发工具包。SDK用助开发某种软件,今天给大家简单讲解下如何在社交源码IOS客户端上开发集成 SDK。
|
8月前
|
API 开发工具 iOS开发
一点就通,社交源码IOS客户端开发集成SDK
所谓SDK,全称是SoftwaredevelopmentKit,翻译成软件开发工具包。SDK用助开发某种软件,今天给大家简单讲解下如何在社交源码IOS客户端上开发集成 SDK。