QQApiInterface#isQQInstalled
和QQApiInterface#isQQSupportApi
检测发现QQ没安装或当前版本QQ不支持API调用,可引导用户通过打开此链接下载最新版QQ。
+ \return iPhoneQQ下载地址
+ */
++ (NSString *)getQQInstallUrl;
+
+/**
+ 获取TIM下载地址
+
+ 如果App通过QQApiInterface#isTIMInstalled
检测发现TIM没安装或当前版本TIM不支持API调用,可引导用户通过打开此链接下载最新版TIM。
+ \return iPhoneTIM下载地址
+ */
++ (NSString *)getTIMInstallUrl;
+@end
diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h b/ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h
new file mode 100644
index 0000000..3a73da4
--- /dev/null
+++ b/ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h
@@ -0,0 +1,645 @@
+///
+/// \file QQApiInterfaceObject.h
+/// \brief QQApiInterface所依赖的请求及应答消息对象封装帮助类
+///
+/// Created by Tencent on 12-5-15.
+/// Copyright (c) 2012年 Tencent. All rights reserved.
+///
+
+#ifndef QQApiInterface_QQAPIOBJECT_h
+#define QQApiInterface_QQAPIOBJECT_h
+
+#import error | errorDescription | 注释 |
0 | nil | 成功 |
-1 | param error | 参数错误 |
-2 | group code is invalid | 该群不在自己的群列表里面 |
-3 | upload photo failed | 上传图片失败 |
-4 | user give up the current operation | 用户放弃当前操作 |
-5 | client internal error | 客户端内部处理错误 |
QQApiExtendObject
实例
+ */
++ (id)objectWithData:(NSData*)data previewImageData:(NSData*)previewImageData title:(NSString*)title description:(NSString*)description;
+
+/**
+ helper方法获取一个autorelease的QQApiExtendObject
对象
+ @param data 数据内容
+ @param previewImageData 用于预览的图片
+ @param title 标题
+ @param description 此对象,分享的描述
+ @param imageDataArray 发送的多张图片队列
+ @return
+ 一个自动释放的QQApiExtendObject
实例
+ */
++ (id)objectWithData:(NSData*)data previewImageData:(NSData*)previewImageData title:(NSString*)title description:(NSString*)description imageDataArray:(NSArray*)imageDataArray;
+
+@end
+
+// QQApiImageObject
+/** @brief 图片对象
+ 用于分享图片内容的对象,是一个指定为图片类型的QQApiExtendObject
+ */
+@interface QQApiImageObject : QQApiExtendObject
+@end
+
+// QQApiImageForQQAvatarObject
+/** @brief 图片对象
+ 用于设置QQ头像内容的对象,是一个指定为图片类型的QQApiExtendObject
+ */
+@interface QQApiImageForQQAvatarObject : QQApiExtendObject
+@end
+/**
+ * @brief 视频对象
+ * 用于设置动态头像
+ * assetURL可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier
+ 从手Q返回的错误码:
+ //第三方设置动态头像结果
+ @"ret=0"//设置成功
+ @"ret=-10&error_des=user cancel"//用户取消设置
+ @"ret=-11&error_des=pasteboard have no video data"//剪切板没有数据
+ @"ret=-12&error_des=export data failed"//从剪切板导出数据到本地失败
+ @"ret=-13&error_des=url param invalid"//sdk传递过来的数据有误
+ @"ret=-14&error_des=video param invalid"//视频的参数不符合要求(检测第三方视频源方案:1、分辨率跟480*480保持一致;2、视频长度0.5s~8s)
+ @"ret=-15&error_des=app authorised failed"//应用鉴权失败
+ @"ret=-16&error_des=upload video failed"//设置头像,上传到后台失败
+ @"ret=-17&error_des=account diff"//账号不一致
+ */
+@interface QQApiVideoForQQAvatarObject : QQApiExtendObject
+@property(nonatomic, retain) NSString *assetURL;
+@end
+
+// QQApiImageArrayForFaceCollectionObject
+/** @brief 图片数组对象
+ 用于分享图片组到表情收藏,是一个指定为图片类型的QQApiObject
+ */
+@interface QQApiImageArrayForFaceCollectionObject : QQApiObject
+
+@property(nonatomic,retain) NSArray* imageDataArray;///图片数组
+
+/**
+ 初始化方法
+ @param imageDataArray 图片数组
+ */
+- (id)initWithImageArrayData:(NSArray*)imageDataArray;
+/**
+ helper方法获取一个autorelease的QQApiObject
对象
+ @param imageDataArray 发送的多张图片队列
+ @return
+ 一个自动释放的QQApiObject
实例
+ */
++ (id)objectWithimageDataArray:(NSArray *)imageDataArray;
+
+@end
+
+// QQApiImageArrayForQZoneObject
+/** @brief 图片对象
+ 用于分享图片到空间,走写说说路径,是一个指定为图片类型的,当图片数组为空时,默认走文本写说说QQApiObject
+ */
+@interface QQApiImageArrayForQZoneObject : QQApiObject
+
+@property(nonatomic,retain) NSArray* imageDataArray;///图片数组
+@property(nonatomic,retain) NSDictionary* extMap; // 扩展字段
+
+/**
+ 初始化方法
+ @param imageDataArray 图片数组
+ @param title 写说说的内容,可以为空
+ @param extMap 扩展字段
+ */
+- (id)initWithImageArrayData:(NSArray*)imageDataArray title:(NSString*)title extMap:(NSDictionary *)extMap;
+
+/**
+ helper方法获取一个autorelease的QQApiExtendObject
对象
+ @param title 写说说的内容,可以为空
+ @param imageDataArray 发送的多张图片队列
+ @param extMap 扩展字段
+ @return
+ 一个自动释放的QQApiExtendObject
实例
+ */
++ (id)objectWithimageDataArray:(NSArray*)imageDataArray title:(NSString*)title extMap:(NSDictionary *)extMap;
+
+@end
+
+// QQApiVideoForQZoneObject
+/** @brief 视频对象
+ 用于分享视频到空间,走写说说路径QQApiObject
,assetURL和videoData两个参数必须设置至少一个参数,如果assetURL设置了忽略videoData参数
+ @param assetURL可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier
+ @param extMap 扩展字段
+ @param videoData 视频数据,大小不超过50M
+ */
+@interface QQApiVideoForQZoneObject : QQApiObject
+
+@property(nonatomic, retain) NSString *assetURL;
+@property(nonatomic,retain) NSDictionary* extMap; // 扩展字段
+@property(nonatomic,retain) NSData* videoData;
+
+- (id)initWithAssetURL:(NSString*)assetURL title:(NSString*)title extMap:(NSDictionary *)extMap;
+
++ (id)objectWithAssetURL:(NSString*)assetURL title:(NSString*)title extMap:(NSDictionary *)extMap;
+
+- (id)initWithVideoData:(NSData*)videoData title:(NSString*)title extMap:(NSDictionary *)extMap;
+
++ (id)objectWithVideoData:(NSData*)videoData title:(NSString*)title extMap:(NSDictionary *)extMap;
+
+@end
+
+// QQApiWebImageObject
+/** @brief 图片对象
+ 用于分享网络图片内容的对象,是一个指定网络图片url的: 该类型只在2.9.0的h5分享中才支持,
+ 原有的手q分享是不支持该类型的。
+ */
+@interface QQApiWebImageObject : QQApiObject
+
+@property(nonatomic, retain) NSURL *previewImageURL; ///<预览图像URL
+
+/**
+ 初始化方法
+ @param previewImageURL 用于预览的图片
+ @param title 标题
+ @param description 此对象,分享的描述
+ */
+- (id)initWithPreviewImageURL:(NSURL*)previewImageURL title:(NSString*)title description:(NSString*)description;
+
+/**
+ helper方法获取一个autorelease的QQApiWebImageObject
对象
+ @param previewImageURL 用于预览的图片
+ @param title 标题
+ @param description 此对象,分享的描述
+ */
++ (id)objectWithPreviewImageURL:(NSURL*)previewImageURL title:(NSString*)title description:(NSString*)description;
+
+@end
+
+
+//QQApiFileObject
+/** @brief 本地文件对象(暂只支持分享到手机QQ数据线功能)
+ 用于分享文件内容的对象,是一个指定为文件类型的QQApiExtendObject
+ */
+@interface QQApiFileObject : QQApiExtendObject
+{
+ NSString* _fileName;
+}
+@property(nonatomic, retain)NSString* fileName;
+@end
+
+// QQApiAudioObject
+/** @brief 音频URL对象
+ 用于分享目标内容为音频的URL的对象
+ */
+@interface QQApiAudioObject : QQApiURLObject
+
+@property (nonatomic, retain) NSURL *flashURL; ///<音频URL地址,最长512个字符
+
+/**
+ 获取一个autorelease的QQApiAudioObject
+ @param url 音频内容的目标URL
+ @param title 分享内容的标题
+ @param description 分享内容的描述
+ @param data 分享内容的预览图像
+ @note 如果url为空,调用QQApi#sendMessage:
时将返回FALSE
+ */
++(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data;
+
+/**
+ 获取一个autorelease的QQApiAudioObject
+ @param url 音频内容的目标URL
+ @param title 分享内容的标题
+ @param description 分享内容的描述
+ @param previewURL 分享内容的预览图像URL
+ @note 如果url为空,调用QQApi#sendMessage:
时将返回FALSE
+ */
++(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL;
+
+@end
+
+// QQApiVideoObject
+/** @brief 视频URL对象
+ 用于分享目标内容为视频的URL的对象
+
+ QQApiVideoObject类型的分享,目前在Android和PC QQ上接收消息时,展现有待完善,待手机QQ版本以后更新支持
+ 目前如果要分享视频,推荐使用 QQApiNewsObject 类型
+ */
+@interface QQApiVideoObject : QQApiURLObject
+
+@property (nonatomic, retain) NSURL *flashURL; ///<视频URL地址,最长512个字符
+
+/**
+ 获取一个autorelease的QQApiVideoObject
+ @param url 视频内容的目标URL
+ @param title 分享内容的标题
+ @param description 分享内容的描述
+ @param data 分享内容的预览图像
+ @note 如果url为空,调用QQApi#sendMessage:
时将返回FALSE
+ */
++(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data;
+
+/**
+ 获取一个autorelease的QQApiVideoObject
+ @param url 视频内容的目标URL
+ @param title 分享内容的标题
+ @param description 分享内容的描述
+ @param previewURL 分享内容的预览图像URL
+ @note 如果url为空,调用QQApi#sendMessage:
时将返回FALSE
+ */
++(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL;
+
+@end
+
+// QQApiNewsObject
+/** @brief 新闻URL对象
+ 用于分享目标内容为新闻的URL的对象
+ */
+@interface QQApiNewsObject : QQApiURLObject
+/**
+ 获取一个autorelease的QQApiNewsObject
+ @param url 视频内容的目标URL
+ @param title 分享内容的标题
+ @param description 分享内容的描述
+ @param data 分享内容的预览图像
+ @note 如果url为空,调用QQApi#sendMessage:
时将返回FALSE
+ */
++(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data;
+
+/**
+ 获取一个autorelease的QQApiNewsObject
+ @param url 视频内容的目标URL
+ @param title 分享内容的标题
+ @param description 分享内容的描述
+ @param previewURL 分享内容的预览图像URL
+ @note 如果url为空,调用QQApi#sendMessage:
时将返回FALSE
+ */
++(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL;
+
+@end
+
+// QQApiCommonContentObject;
+/** @brief 通用模板类型对象
+ 用于分享一个固定显示模板的图文混排对象
+ @note 图片列表和文本列表不能同时为空
+ */
+@interface QQApiCommonContentObject : QQApiObject
+/**
+ 预定义的界面布局类型
+ */
+@property(nonatomic,assign) unsigned int layoutType;
+@property(nonatomic,assign) NSData* previewImageData;///<预览图
+@property(nonatomic,retain) NSArray* textArray;///<文本列表
+@property(nonatomic,retain) NSArray* pictureDataArray;///<图片列表
++(id)objectWithLayoutType:(int)layoutType textArray:(NSArray*)textArray pictureArray:(NSArray*)pictureArray previewImageData:(NSData*)data;
+/**
+ 将一个NSDictionary对象转化为QQApiCommomContentObject,如果无法转换,则返回空
+ */
++(id)objectWithDictionary:(NSDictionary*)dic;
+-(NSDictionary*)toDictionary;
+@end
+
+// QQApiExtraServiceObject;
+/**
+ @brief OpenSDK扩展支持的服务,通用接口,后续会扩充能力
+ @param serviceID [必选] 扩展支持的服务类型ID,参考官方文档说明
+ @param openID [必选] 授权登录后对该用户的唯一标识
+ @param toUin [可选] 对方的QQ号码
+ @param extraInfo [可选] 扩展字段
+ @note 该接口的使用须先登录
+ */
+@interface QQApiExtraServiceObject : QQApiObject
+@property (nonatomic,retain) NSString* serviceID;
+@property (nonatomic,retain) NSString* openID;
+@property (nonatomic,retain) NSString* toUin;
+@property (nonatomic,retain) NSDictionary* extraInfo;
+
+- (id)initWithOpenID:(NSString *)openID serviceID:(NSString *)serviceID;
++ (id)objecWithOpenID:(NSString *)openID serviceID:(NSString *)serviceID;
+@end
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Ad item object definition
+////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/** @brief 广告数据对象
+ */
+@interface QQApiAdItem : NSObject
+@property(nonatomic,retain) NSString* title; ///<名称
+@property(nonatomic,retain) NSString* description;///<描述
+@property(nonatomic,retain) NSData* imageData;///<广告图片
+@property(nonatomic,retain) NSURL* target;///<广告目标链接
+@end
+
+
+#pragma mark - QQApi请求消息类型
+
+/**
+ QQApi请求消息类型
+ */
+typedef NS_ENUM(NSUInteger, QQApiInterfaceReqType) {
+ EGETMESSAGEFROMQQREQTYPE = 0, ///< 手Q -> 第三方应用,请求第三方应用向手Q发送消息
+ ESENDMESSAGETOQQREQTYPE = 1, ///< 第三方应用 -> 手Q,第三方应用向手Q分享消息
+ ESHOWMESSAGEFROMQQREQTYPE = 2, ///< 手Q -> 第三方应用,请求第三方应用展现消息中的数据
+ ESENDMESSAGEARKTOQQREQTYPE = 3, ///< 第三方应用 -> 手Q,第三方应用向手Q分享Ark消息
+ ESENDMESSAGE_MINI_TOQQREQTYPE = 4 ///< 第三方应用 -> 手Q,第三方应用向手Q分享小程序消息
+};
+
+/**
+ QQApi应答消息类型
+ */
+typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) {
+ ESHOWMESSAGEFROMQQRESPTYPE = 0, ///< 第三方应用 -> 手Q,第三方应用应答消息展现结果
+ EGETMESSAGEFROMQQRESPTYPE = 1, ///< 第三方应用 -> 手Q,第三方应用回应发往手Q的消息
+ ESENDMESSAGETOQQRESPTYPE = 2 ///< 手Q -> 第三方应用,手Q应答处理分享消息的结果
+};
+
+/**
+ QQApi请求消息基类
+ */
+@interface QQBaseReq : NSObject
+
+/** 请求消息类型,参见\ref QQApiInterfaceReqType */
+@property (nonatomic, assign) int type;
+
+@end
+
+/**
+ QQApi应答消息基类
+ */
+@interface QQBaseResp : NSObject
+
+/** 请求处理结果 */
+@property (nonatomic, copy) NSString* result;
+
+/** 具体错误描述信息 */
+@property (nonatomic, copy) NSString* errorDescription;
+
+/** 应答消息类型,参见\ref QQApiInterfaceRespType */
+@property (nonatomic, assign) int type;
+
+/** 扩展信息 */
+@property (nonatomic, assign) NSString* extendInfo;
+
+@end
+
+/**
+ GetMessageFromQQReq请求帮助类
+ */
+@interface GetMessageFromQQReq : QQBaseReq
+
+/**
+ 创建一个GetMessageFromQQReq请求实例
+ */
++ (GetMessageFromQQReq *)req;
+
+@end
+
+@interface SendMessageToQQReq : QQBaseReq
+
+/**
+ 创建一个SendMessageToQQReq请求实例
+ \param message 具体分享消息实例
+ \return 新创建的SendMessageToQQReq请求实例
+ */
++ (SendMessageToQQReq *)reqWithContent:(QQApiObject *)message;
+
+/**
+ 创建一个支持Ark的SendMessageToQQReq请求实例
+ \param message 具体分享消息实例
+ \return 新创建的SendMessageToQQReq请求实例
+ */
++ (SendMessageToQQReq *)reqWithArkContent:(ArkObject *)message;
+/**
+ * 创建一个支持小程序的消息请求实例
+ * @param miniMessage 小程序实例对象
+ * @return 消息请求实例
+ */
++(SendMessageToQQReq*) reqWithMiniContent:(QQApiMiniProgramObject *)miniMessage;
+/** 具体分享消息 */
+@property (nonatomic, retain) QQApiObject *message;
+
+/** 支持Ark的具体分享消息 */
+@property (nonatomic, retain) ArkObject *arkMessage;
+/** 支持小程序的具体分享消息 */
+@property (nonatomic, retain) QQApiMiniProgramObject *miniMessage;
+@end
+
+/**
+ SendMessageToQQResp应答帮助类
+ */
+@interface SendMessageToQQResp : QQBaseResp
+
+/**
+ 创建一个SendMessageToQQResp应答实例
+ \param result 请求处理结果
+ \param errDesp 具体错误描述信息
+ \param extendInfo 扩展信息
+ \return 新创建的SendMessageToQQResp应答实例
+ */
++ (SendMessageToQQResp *)respWithResult:(NSString *)result errorDescription:(NSString *)errDesp extendInfo:(NSString*)extendInfo;
+
+@end
+
+/**
+ ShowMessageFromQQReq请求帮助类
+ */
+@interface ShowMessageFromQQReq : QQBaseReq
+
+/**
+ 创建一个ShowMessageFromQQReq请求实例
+ \param message 具体待展现消息实例
+ \return 新创建的ShowMessageFromQQReq请求实例
+ */
++ (ShowMessageFromQQReq *)reqWithContent:(QQApiObject *)message;
+
+/** 具体待展现消息 */
+@property (nonatomic, retain) QQApiObject *message;
+
+@end
+
+
+#endif
diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h b/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h
new file mode 100644
index 0000000..1bb4189
--- /dev/null
+++ b/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h
@@ -0,0 +1,494 @@
+///
+/// \file TencentOAuth.h
+/// \brief QQ互联开放平台授权登录及相关开放接口实现类
+///
+/// Created by Tencent on 12-12-21.
+/// Copyright (c) 2012年 Tencent. All rights reserved.
+///
+
+#import