TencentOpenAPI SDK接入与API注意事项

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

一 搭建环境

  1. 下载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文件加入了开发工程中。(这是说明文档原话)

  1. 添加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。

  1. 添加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>CFBundleTypeRolekey>
<string>Editorstring>
<key>CFBundleURLNamekey>
<string>tencentstring>
<key>CFBundleURLSchemeskey>
<array>
<string>tencent12345string>
array>
dict>

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

二 QQ分享

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

  1. 文件类分享
  2. 大小限制:5MB;
  3. 非图片分享:

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好友。

  1. 网址分享
+(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL;

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

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

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

已将QQ分享API进行封装,方便分享图片、二进制数据及网址,请到此Github网址查看下载。

你可能感兴趣的:(ios开发)