您的位置:首页 > 运维架构

TencentOpenAPI SDK接入与API注意事项

2017-01-16 20:12 531 查看
因项目需要,必须接入QQ分享的SDK来实现分享到手机QQ的功能。期间遇到不少坑,特写此文,愿给需要的人一点帮助。


一 搭建环境

下载SDK并加入工程

1.1 在腾讯开放平台网站下载好SDK,解压后按照使用说明文档(下载),将TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拷贝到应用开发的目录下,注意必须放在项目主文件夹的根目录下,否则会出错。然后将TencentOpenAPI.framework从保存的目录拖动到工程的FrameWorks虚拟目录下,

1.2 在弹出的对话框中勾选“Create groups for any added folders”,去掉“copy items into destination group’s folder(if needed)”,在Add to targets中选择要加入SDK的target之后点击finish。完成之后就将iOS SDK的framework文件加入了开发工程中。(这是说明文档原话)

添加SDK依赖的系统库文件

依次选中:项目文件(xcodeproj后缀名文件)-> Build Phases->Link Binary With Libraries.点击右下角的加号(:heavy_plus_sign:)按钮,添加缺失的库文件。[本来想上个截图,但截了几张图上传时提示不符合要求,作罢]

经过验证,我加了下面这几项,与说明不一致,编译通过。

Security.framework
libiconv.2.dylib
SystemConfiguration.framework
CoreGraphics.Framework
CoreTelephony.framework
libstdc++.dylib
libz.dylib
TencentOpenAPI.framework


Security.framework,libiconv.2.dylib,SystemConfiguration.framework,CoreGraphics.Framework,CoreTelephony.framework,libstdc++.dylib,libz.dylib,TencentOpenAPI.framework。

添加TencentOpenApi_IOS_Bundle.bundle

依次选中:项目文件(xcodeproj后缀名文件)-> Build Phases->Copy Bundle Resources

.点击右下角的加号(➕)按钮,在弹出的对话框中选择左下角的“Add Other”,之后在弹出的文件浏览框中找到TencentOpenApi_IOS_Bundle.bundle,回车或单击“Open”确认选择。

4 修改工程配置属性

4.1 依次选中:项目文件(xcodeproj后缀名文件)-> Info->URL Types.

添加1个URL Type:

Identifier:tencent

URL Schemes:tencent+appId

其中的appId为在QQ互联注册登记的appId,如果是12345,则URL Schemes栏输入:tencent12345。

4.2 配置plist文件

这个一定得配置对,否则无法在分享到QQ后返回到自己的app。

仍然以上述appId为例,右键plist文件,选择“Open As”->“Source Code”,在

CFBundleURLTypes



之间添加如下代码

<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>tencent</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tencent12345</string>
</array>
</dict>


建议使用代码方式更改,笔者第一次使用可视化编辑器,tencent12345编辑到和CFBundleURLSchemes一级了,造成无法返回到app。因为这是个XML文件,编辑出错也不易发现。

二 QQ分享

demo中有示例代码,我添加一些demo和API说明中没有的注意事项:warning:。

文件类分享

大小限制:5MB;

非图片分享:

2.1 必须保证缩略图不超过1MB。

+ (id)objectWithData:(NSData*)data previewImageData:(NSData*)previewImageData title:(NSString*)title description:(NSString*)description;


函数中previewImageData的大小不能超过1MB,否则出错。

2.2

QQApiFileObject对象(假设为fileObject)的cflag:

[fileObject setCflag:kQQAPICtrlFlagQQShareDataline];


即只能分享到“我的电脑”,不能分享给普通QQ好友。

网址分享

+(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL;


函数中url,title和description 3者均不能为空,否则不能分享。

这些在demo和API说明中都没有,出错还不知原因。

时间仓促,写得粗糙。若有帮助,莫大荣幸。

已将QQ分享API进行封装,方便分享图片、二进制数据及网址,请到此Github网址查看下载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息