QQApiInterfaceObject.h 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. ///
  2. /// \file QQApiInterfaceObject.h
  3. /// \brief QQApiInterface所依赖的请求及应答消息对象封装帮助类
  4. ///
  5. /// Created by Tencent on 12-5-15.
  6. /// Copyright (c) 2012年 Tencent. All rights reserved.
  7. ///
  8. #ifndef QQApiInterface_QQAPIOBJECT_h
  9. #define QQApiInterface_QQAPIOBJECT_h
  10. #import <Foundation/Foundation.h>
  11. typedef NS_ENUM(NSInteger, QQApiSendResultCode) {
  12. EQQAPISENDSUCESS = 0,
  13. EQQAPIQQNOTINSTALLED = 1, // QQ未安装
  14. EQQAPIQQNOTSUPPORTAPI = 2, // QQ api不支持
  15. EQQAPIMESSAGETYPEINVALID = 3,
  16. EQQAPIMESSAGECONTENTNULL = 4,
  17. EQQAPIMESSAGECONTENTINVALID = 5,
  18. EQQAPIAPPNOTREGISTED = 6,
  19. EQQAPIAPPSHAREASYNC = 7,
  20. EQQAPIQQNOTSUPPORTAPI_WITH_ERRORSHOW = 8, // QQ api不支持 && SDK显示error提示(已废弃)
  21. EQQAPIMESSAGEARKCONTENTNULL = 9, // ark内容为空
  22. EQQAPIMESSAGE_MINI_CONTENTNULL = 10, // 小程序参数为空
  23. EQQAPISENDFAILD = -1, // 发送失败
  24. EQQAPISHAREDESTUNKNOWN = -2, // 未指定分享到QQ或TIM
  25. EQQAPITIMSENDFAILD = -3, // 发送失败
  26. EQQAPITIMNOTINSTALLED = 11, // TIM未安装
  27. EQQAPITIMNOTSUPPORTAPI = 12, // TIM api不支持
  28. EQQAPI_INCOMING_PARAM_ERROR = 13, // 外部传参错误
  29. EQQAPI_THIRD_APP_GROUP_ERROR_APP_NOT_AUTHORIZIED = 14, // APP未获得授权
  30. EQQAPI_THIRD_APP_GROUP_ERROR_CGI_FAILED = 15, // CGI请求失败
  31. EQQAPI_THIRD_APP_GROUP_ERROR_HAS_BINDED = 16, // 该组织已经绑定群聊
  32. EQQAPI_THIRD_APP_GROUP_ERROR_NOT_BINDED = 17, // 该组织尚未绑定群聊
  33. EQQAPI_THIRD_APP_GROUP_ERROR_HAS_UNBINDED = 18, // 该组织已经解绑群聊
  34. EQQAPIQZONENOTSUPPORTTEXT = 10000, // qzone分享不支持text类型分享
  35. EQQAPIQZONENOTSUPPORTIMAGE = 10001, // qzone分享不支持image类型分享
  36. EQQAPIVERSIONNEEDUPDATE = 10002, // 当前QQ版本太低,需要更新至新版本才可以支持
  37. ETIMAPIVERSIONNEEDUPDATE = 10004, // 当前TIM版本太低,需要更新至新版本才可以支持
  38. EAPPURLTYPESILLEGALITY = 20000, // (>=3.3.8)第三方APP的info.plist中UrlTypes字段存在QQ的UrlScheme
  39. EQQAPI_ERROR_USER_NOT_AGREED_AUTHORIZATION = 30001, // 用户未同意隐私协议,用户同意隐私协议后,需要设置[TencentOAuth setIsUserAgreedAuthorization:YES];
  40. };
  41. #pragma mark - QQApiObject(分享对象类型)
  42. // QQApiObject control flags
  43. typedef NS_ENUM(NSUInteger,kQQAPICtrlFlag) {
  44. kQQAPICtrlFlagQZoneShareOnStart = 0x01,
  45. kQQAPICtrlFlagQZoneShareForbid = 0x02, //屏蔽好友选择器上的空间入口
  46. kQQAPICtrlFlagQQShare = 0x04,
  47. kQQAPICtrlFlagQQShareFavorites = 0x08, //收藏
  48. kQQAPICtrlFlagQQShareDataline = 0x10, //数据线
  49. kQQAPICtrlFlagQQShareEnableArk = 0x20, //支持ARK
  50. kQQAPICtrlFlagQQShareEnableMiniProgram = 0x40, //支持小程序
  51. };
  52. // 分享到QQ或TIM
  53. typedef NS_ENUM(NSUInteger, ShareDestType) {
  54. ShareDestTypeQQ = 0,
  55. ShareDestTypeTIM,
  56. };
  57. //小程序的类型
  58. typedef NS_ENUM(NSUInteger, MiniProgramType) {
  59. MiniProgramType_Develop = 0, // 开发版
  60. MiniProgramType_Test = 1, // 测试版
  61. MiniProgramType_Online = 3, // 正式版,默认
  62. MiniProgramType_Preview = 4, // 预览版
  63. };
  64. /// 打印回调的block
  65. typedef void(^QQApiLogBolock)(NSString *logStr);
  66. // QQApiObject
  67. /** \brief 所有在QQ及插件间发送的数据对象的根类。
  68. */
  69. __attribute__((visibility("default"))) @interface QQApiObject : NSObject
  70. @property (nonatomic, copy) NSString *title; ///< 标题,最长128个字符
  71. @property (nonatomic, copy) NSString *description; ///<简要描述,最长512个字符
  72. @property (nonatomic, copy) NSString *universalLink; ///(>=3.3.7)支持第三方传入在互联开放平台注册的universallink
  73. @property (nonatomic, assign) uint64_t cflag;
  74. //353新增两个字断给游戏侧使用,对齐微信sdk
  75. @property (nonatomic, copy) NSString *tagName;
  76. @property (nonatomic, copy) NSString *messageExt;
  77. /*
  78. * 分享到QQ/TIM
  79. * SDK根据是否安装对应客户端进行判断,判断顺序:QQ > TIM
  80. * 默认分享到QQ,如果QQ未安装检测TIM是否安装
  81. */
  82. @property (nonatomic, assign) ShareDestType shareDestType;
  83. @end
  84. // ArkObject
  85. /** \brief 支持Ark的根类。
  86. */
  87. __attribute__((visibility("default"))) @interface ArkObject : NSObject
  88. @property (nonatomic, copy) NSString *arkData; ///< 显示Ark所需的数据,json串,长度暂不限制
  89. @property (nonatomic,assign) QQApiObject* qqApiObject; ///<原有老版本的QQApiObject
  90. - (id)initWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject;
  91. + (id)objectWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject;
  92. @end
  93. #pragma mark QQ小程序
  94. //分享小程序消息 - QQ 8.0.8
  95. __attribute__((visibility("default"))) @interface QQApiMiniProgramObject : NSObject
  96. @property (nonatomic, strong) QQApiObject* qqApiObject; //原有老版本的QQApiObject
  97. @property (nonatomic, copy) NSString *miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定)
  98. @property (nonatomic, copy) NSString *miniPath; //必填,小程序的展示路径
  99. @property (nonatomic, copy) NSString *webpageUrl; //必填,兼容低版本的网页链接
  100. @property (nonatomic,assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、预览版(4)
  101. @end
  102. //唤起小程序 - QQ 8.1.8
  103. __attribute__((visibility("default"))) @interface QQApiLaunchMiniProgramObject : QQApiObject
  104. @property (nonatomic, copy) NSString *miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定)
  105. @property (nonatomic, copy) NSString *miniPath; //小程序的展示路径,不填展示默认小程序首页
  106. @property (nonatomic,assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、开发版(0)
  107. @end
  108. //小程序唤起第三方 - SDK 3.3.9
  109. __attribute__((visibility("default"))) @interface QQApiMiniProgramLaunchObject : QQApiObject
  110. @property (nonatomic, copy) NSString *appParameter; //小程序带来的数据,透传
  111. + (instancetype)newWithAppParameter:(NSString *)parameter;
  112. @end
  113. // QQApiResultObject
  114. /** \brief 用于请求回应的数据类型。
  115. <h3>可能错误码及描述如下:</h3>
  116. <TABLE>
  117. <TR><TD>error</TD><TD>errorDescription</TD><TD>注释</TD></TR>
  118. <TR><TD>0</TD><TD>nil</TD><TD>成功</TD></TR>
  119. <TR><TD>-1</TD><TD>param error</TD><TD>参数错误</TD></TR>
  120. <TR><TD>-2</TD><TD>group code is invalid</TD><TD>该群不在自己的群列表里面</TD></TR>
  121. <TR><TD>-3</TD><TD>upload photo failed</TD><TD>上传图片失败</TD></TR>
  122. <TR><TD>-4</TD><TD>user give up the current operation</TD><TD>用户放弃当前操作</TD></TR>
  123. <TR><TD>-5</TD><TD>client internal error</TD><TD>客户端内部处理错误</TD></TR>
  124. </TABLE>
  125. */
  126. __attribute__((visibility("default"))) @interface QQApiResultObject : QQApiObject
  127. @property (nonatomic, copy) NSString *error; ///<错误
  128. @property (nonatomic, copy) NSString *errorDescription; ///<错误描述
  129. @property (nonatomic, copy) NSString *extendInfo; ///<扩展信息
  130. @property (nonatomic, copy) NSDictionary *otherInfo; ///<其他扩展信息
  131. @end
  132. // QQApiTextObject
  133. /** \brief 文本对象
  134. */
  135. @interface QQApiTextObject : QQApiObject
  136. @property (nonatomic, copy)NSString *text; ///<文本内容,必填,最长1536个字符
  137. - (id)initWithText:(NSString *)text; ///<初始化方法
  138. + (id)objectWithText:(NSString *)text;///<工厂方法,获取一个QQApiTextObject对象.
  139. @end
  140. // QQApiURLObject
  141. typedef NS_ENUM(NSUInteger, QQApiURLTargetType) {
  142. QQApiURLTargetTypeNotSpecified = 0x00,
  143. QQApiURLTargetTypeAudio = 0x01,
  144. QQApiURLTargetTypeVideo = 0x02,
  145. QQApiURLTargetTypeNews = 0x03
  146. };
  147. /** @brief URL对象类型。
  148. 包括URL地址,URL地址所指向的目标类型及预览图像。
  149. */
  150. __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject
  151. /**
  152. URL地址所指向的目标类型.
  153. @note 参见QQApi.h 中的 QQApiURLTargetType 定义.
  154. */
  155. @property (nonatomic)QQApiURLTargetType targetContentType;
  156. @property (nonatomic, strong) NSURL *url; ///<URL地址,必填,最长512个字符
  157. @property (nonatomic, copy) NSData *previewImageData;///<预览图像数据,最大1M字节
  158. @property (nonatomic, strong) NSURL *previewImageURL; ///<预览图像URL **预览图像数据与预览图像URL可二选一
  159. /**
  160. 初始化方法
  161. */
  162. - (id)initWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data targetContentType:(QQApiURLTargetType)targetContentType;
  163. - (id)initWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL targetContentType:(QQApiURLTargetType)targetContentType;
  164. /**
  165. 工厂方法,获取一个QQApiURLObject对象
  166. */
  167. + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data targetContentType:(QQApiURLTargetType)targetContentType;
  168. + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL targetContentType:(QQApiURLTargetType)targetContentType;
  169. @end
  170. // QQApiExtendObject
  171. /** @brief 扩展数据类型
  172. */
  173. @interface QQApiExtendObject : QQApiObject
  174. @property (nonatomic, copy) NSData *data;///<具体数据内容,必填,最大5M字节
  175. @property (nonatomic, copy) NSData *previewImageData;///<预览图像,最大1M字节
  176. @property (nonatomic, copy) NSArray *imageDataArray;///图片数组(多图暂只支持分享到手机QQ收藏功能)
  177. /**
  178. 初始化方法
  179. @param data 数据内容
  180. @param previewImageData 用于预览的图片
  181. @param title 标题
  182. @param description 此对象,分享的描述
  183. */
  184. - (id)initWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description;
  185. /**
  186. 初始化方法
  187. @param data 数据内容
  188. @param title 标题
  189. @param description 此对象,分享的描述
  190. @param imageDataArray 发送的多张图片队列
  191. */
  192. - (id)initWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description imageDataArray:(NSArray *)imageDataArray;
  193. /**
  194. helper方法获取一个autorelease的<code>QQApiExtendObject</code>对象
  195. @param data 数据内容
  196. @param previewImageData 用于预览的图片
  197. @param title 标题
  198. @param description 此对象,分享的描述
  199. @return
  200. 一个自动释放的<code>QQApiExtendObject</code>实例
  201. */
  202. + (id)objectWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description;
  203. /**
  204. helper方法获取一个autorelease的<code>QQApiExtendObject</code>对象
  205. @param data 数据内容
  206. @param previewImageData 用于预览的图片
  207. @param title 标题
  208. @param description 此对象,分享的描述
  209. @param imageDataArray 发送的多张图片队列
  210. @return
  211. 一个自动释放的<code>QQApiExtendObject</code>实例
  212. */
  213. + (id)objectWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description imageDataArray:(NSArray *)imageDataArray;
  214. @end
  215. // QQApiImageObject
  216. /** @brief 图片对象
  217. 用于分享图片内容的对象,是一个指定为图片类型的<code>QQApiExtendObject</code>
  218. */
  219. @interface QQApiImageObject : QQApiExtendObject
  220. @end
  221. // QQApiImageForQQAvatarObject
  222. /** @brief 图片对象
  223. 用于设置QQ头像内容的对象,是一个指定为图片类型的<code>QQApiExtendObject</code>
  224. */
  225. @interface QQApiImageForQQAvatarObject : QQApiExtendObject
  226. @end
  227. /**
  228. * @brief 视频对象
  229. * 用于设置动态头像
  230. * assetURL可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier
  231. 从手Q返回的错误码:
  232. //第三方设置动态头像结果
  233. @"ret=0"//设置成功
  234. @"ret=-10&error_des=user cancel"//用户取消设置
  235. @"ret=-11&error_des=pasteboard have no video data"//剪切板没有数据
  236. @"ret=-12&error_des=export data failed"//从剪切板导出数据到本地失败
  237. @"ret=-13&error_des=url param invalid"//sdk传递过来的数据有误
  238. @"ret=-14&error_des=video param invalid"//视频的参数不符合要求(检测第三方视频源方案:1、分辨率跟480*480保持一致;2、视频长度0.5s~8s)
  239. @"ret=-15&error_des=app authorised failed"//应用鉴权失败
  240. @"ret=-16&error_des=upload video failed"//设置头像,上传到后台失败
  241. @"ret=-17&error_des=account diff"//账号不一致
  242. */
  243. @interface QQApiVideoForQQAvatarObject : QQApiExtendObject
  244. @property (nonatomic, copy) NSString *assetURL;
  245. @end
  246. //QQApiAuthObject 用于拉起手Q的授权详情页
  247. @interface QQApiAuthObject : QQApiObject
  248. @end
  249. // QQApiImageArrayForFaceCollectionObject
  250. /** @brief 图片数组对象
  251. 用于分享图片组到表情收藏,是一个指定为图片类型的<code>QQApiObject</code>
  252. */
  253. @interface QQApiImageArrayForFaceCollectionObject : QQApiObject
  254. @property (nonatomic, copy) NSArray *imageDataArray;///图片数组
  255. /**
  256. 初始化方法
  257. @param imageDataArray 图片数组
  258. */
  259. - (id)initWithImageArrayData:(NSArray *)imageDataArray;
  260. /**
  261. helper方法获取一个autorelease的<code>QQApiObject</code>对象
  262. @param imageDataArray 发送的多张图片队列
  263. @return
  264. 一个自动释放的<code>QQApiObject</code>实例
  265. */
  266. + (id)objectWithimageDataArray:(NSArray *)imageDataArray;
  267. @end
  268. // QQApiImageArrayForQZoneObject
  269. /** @brief 图片对象
  270. 用于分享图片到空间,走写说说路径,是一个指定为图片类型的,当图片数组为空时,默认走文本写说说<code>QQApiObject</code>
  271. */
  272. @interface QQApiImageArrayForQZoneObject : QQApiObject
  273. @property (nonatomic, copy) NSArray *imageDataArray;///图片数组
  274. @property (nonatomic, copy) NSDictionary *extMap; // 扩展字段
  275. /**
  276. 初始化方法
  277. @param imageDataArray 图片数组
  278. @param title 写说说的内容,可以为空
  279. @param extMap 扩展字段
  280. */
  281. - (id)initWithImageArrayData:(NSArray *)imageDataArray title:(NSString *)title extMap:(NSDictionary *)extMap;
  282. /**
  283. helper方法获取一个autorelease的<code>QQApiExtendObject</code>对象
  284. @param title 写说说的内容,可以为空
  285. @param imageDataArray 发送的多张图片队列
  286. @param extMap 扩展字段
  287. @return
  288. 一个自动释放的<code>QQApiExtendObject</code>实例
  289. */
  290. + (id)objectWithimageDataArray:(NSArray *)imageDataArray title:(NSString *)title extMap:(NSDictionary *)extMap;
  291. @end
  292. // QQApiVideoForQZoneObject
  293. /** @brief 视频对象
  294. 用于分享视频到空间,走写说说路径<code>QQApiObject</code>,assetURL和videoData两个参数必须设置至少一个参数,如果assetURL设置了忽略videoData参数
  295. @param assetURL可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier
  296. @param extMap 扩展字段
  297. @param videoData 视频数据,大小不超过50M
  298. */
  299. @interface QQApiVideoForQZoneObject : QQApiObject
  300. @property (nonatomic, copy) NSString *assetURL;
  301. @property (nonatomic, copy) NSDictionary *extMap; // 扩展字段
  302. @property (nonatomic, copy) NSData *videoData;
  303. - (id)initWithAssetURL:(NSString *)assetURL title:(NSString *)title extMap:(NSDictionary *)extMap;
  304. + (id)objectWithAssetURL:(NSString *)assetURL title:(NSString *)title extMap:(NSDictionary *)extMap;
  305. - (id)initWithVideoData:(NSData *)videoData title:(NSString *)title extMap:(NSDictionary *)extMap;
  306. + (id)objectWithVideoData:(NSData *)videoData title:(NSString *)title extMap:(NSDictionary *)extMap;
  307. @end
  308. // QQApiWebImageObject
  309. /** @brief 图片对象
  310. 用于分享网络图片内容的对象,是一个指定网络图片url的: 该类型只在2.9.0的h5分享中才支持,
  311. 原有的手q分享是不支持该类型的。
  312. */
  313. @interface QQApiWebImageObject : QQApiObject
  314. @property (nonatomic, strong) NSURL *previewImageURL; ///<预览图像URL
  315. /**
  316. 初始化方法
  317. @param previewImageURL 用于预览的图片
  318. @param title 标题
  319. @param description 此对象,分享的描述
  320. */
  321. - (id)initWithPreviewImageURL:(NSURL *)previewImageURL title:(NSString *)title description:(NSString *)description;
  322. /**
  323. helper方法获取一个autorelease的<code>QQApiWebImageObject</code>对象
  324. @param previewImageURL 用于预览的图片
  325. @param title 标题
  326. @param description 此对象,分享的描述
  327. */
  328. + (id)objectWithPreviewImageURL:(NSURL *)previewImageURL title:(NSString *)title description:(NSString *)description;
  329. @end
  330. //QQApiFileObject
  331. /** @brief 本地文件对象(暂只支持分享到手机QQ数据线功能)
  332. 用于分享文件内容的对象,是一个指定为文件类型的<code>QQApiExtendObject</code>
  333. */
  334. @interface QQApiFileObject : QQApiExtendObject {
  335. NSString *_fileName;
  336. }
  337. @property (nonatomic, copy)NSString *fileName;
  338. @end
  339. // QQApiAudioObject
  340. /** @brief 音频URL对象
  341. 用于分享目标内容为音频的URL的对象
  342. */
  343. @interface QQApiAudioObject : QQApiURLObject
  344. @property (nonatomic, strong) NSURL *flashURL; ///<音频URL地址,最长512个字符
  345. /**
  346. 获取一个autorelease的<code>QQApiAudioObject</code>
  347. @param url 音频内容的目标URL
  348. @param title 分享内容的标题
  349. @param description 分享内容的描述
  350. @param data 分享内容的预览图像
  351. @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE
  352. */
  353. + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data;
  354. /**
  355. 获取一个autorelease的<code>QQApiAudioObject</code>
  356. @param url 音频内容的目标URL
  357. @param title 分享内容的标题
  358. @param description 分享内容的描述
  359. @param previewURL 分享内容的预览图像URL
  360. @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE
  361. */
  362. + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL;
  363. @end
  364. // QQApiVideoObject
  365. /** @brief 视频URL对象
  366. 用于分享目标内容为视频的URL的对象
  367. QQApiVideoObject类型的分享,目前在Android和PC QQ上接收消息时,展现有待完善,待手机QQ版本以后更新支持
  368. 目前如果要分享视频,推荐使用 QQApiNewsObject 类型
  369. */
  370. @interface QQApiVideoObject : QQApiURLObject
  371. @property (nonatomic, strong) NSURL *flashURL; ///<视频URL地址,最长512个字符
  372. /**
  373. 获取一个autorelease的<code>QQApiVideoObject</code>
  374. @param url 视频内容的目标URL
  375. @param title 分享内容的标题
  376. @param description 分享内容的描述
  377. @param data 分享内容的预览图像
  378. @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE
  379. */
  380. + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data;
  381. /**
  382. 获取一个autorelease的<code>QQApiVideoObject</code>
  383. @param url 视频内容的目标URL
  384. @param title 分享内容的标题
  385. @param description 分享内容的描述
  386. @param previewURL 分享内容的预览图像URL
  387. @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE
  388. */
  389. + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL;
  390. @end
  391. // QQApiNewsObject
  392. /** @brief 新闻URL对象
  393. 用于分享目标内容为新闻的URL的对象
  394. */
  395. @interface QQApiNewsObject : QQApiURLObject
  396. /**
  397. 获取一个autorelease的<code>QQApiNewsObject</code>
  398. @param url 视频内容的目标URL
  399. @param title 分享内容的标题
  400. @param description 分享内容的描述
  401. @param data 分享内容的预览图像
  402. @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE
  403. */
  404. + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data;
  405. /**
  406. 获取一个autorelease的<code>QQApiNewsObject</code>
  407. @param url 视频内容的目标URL
  408. @param title 分享内容的标题
  409. @param description 分享内容的描述
  410. @param previewURL 分享内容的预览图像URL
  411. @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE
  412. */
  413. + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL;
  414. @end
  415. // QQApiCommonContentObject;
  416. /** @brief 通用模板类型对象
  417. 用于分享一个固定显示模板的图文混排对象
  418. @note 图片列表和文本列表不能同时为空
  419. */
  420. @interface QQApiCommonContentObject : QQApiObject
  421. /**
  422. 预定义的界面布局类型
  423. */
  424. @property (nonatomic,assign) unsigned int layoutType;
  425. @property (nonatomic, copy) NSData *previewImageData;///<预览图
  426. @property (nonatomic, copy) NSArray *textArray;///<文本列表
  427. @property (nonatomic, copy) NSArray *pictureDataArray;///<图片列表
  428. + (id)objectWithLayoutType:(int)layoutType textArray:(NSArray *)textArray pictureArray:(NSArray *)pictureArray previewImageData:(NSData *)data;
  429. /**
  430. 将一个NSDictionary对象转化为QQApiCommomContentObject,如果无法转换,则返回空
  431. */
  432. + (id)objectWithDictionary:(NSDictionary *)dic;
  433. - (NSDictionary *)toDictionary;
  434. @end
  435. // QQApiExtraServiceObject; 通用业务消息处理类(旧版,后续使用QQApiCommonServiceObject)
  436. /**
  437. @brief OpenSDK扩展支持的服务,通用接口,后续会扩充能力
  438. @param serviceID [必选] 扩展支持的服务类型ID,参考官方文档说明
  439. @param openID [必选] 授权登录后对该用户的唯一标识
  440. @param toUin [可选] 对方的QQ号码
  441. @param extraInfo [可选] 扩展字段
  442. @note 该接口的使用须先登录
  443. */
  444. @interface QQApiExtraServiceObject : QQApiObject
  445. @property (nonatomic, copy) NSString *serviceID;
  446. @property (nonatomic, copy) NSString *openID;
  447. @property (nonatomic, copy) NSString *toUin;
  448. @property (nonatomic, copy) NSDictionary *extraInfo;
  449. - (id)initWithOpenID:(NSString *)openID serviceID:(NSString *)serviceID;
  450. + (id)objecWithOpenID:(NSString *)openID serviceID:(NSString *)serviceID;
  451. @end
  452. /**
  453. * QQApiCommonServiceObject; 通用业务消息处理类(新),可以适用所有的需要通过互联SDK发消息给手Q的业务去处理。
  454. * 使用前需要申请serviceID,每个业务功能有个对应的serviceID
  455. */
  456. @interface QQApiCommonServiceObject : QQApiObject
  457. // [必选] 授权登录后对该用户的唯一标识
  458. @property (nonatomic, copy) NSString *openID;
  459. // [必选] 扩展支持的服务类型ID,参考官方文档说明
  460. @property (nonatomic, copy) NSString *serviceID;
  461. // [可选] 扩展字段,由调用方跟具体的业务方协定具体的字段
  462. @property (nonatomic, copy) NSDictionary *extendInfo;
  463. - (instancetype)initWithOpenID:(NSString *)openID
  464. serviceID:(NSString *)serviceID
  465. extendInfo:(NSDictionary *)extendInfo;
  466. + (instancetype)objecWithOpenID:(NSString *)openID
  467. serviceID:(NSString *)serviceID
  468. extendInfo:(NSDictionary *)extendInfo;
  469. @end
  470. ////////////////////////////////////////////////////////////////////////////////////////////////////////////
  471. // Ad item object definition
  472. ////////////////////////////////////////////////////////////////////////////////////////////////////////////
  473. /** @brief 广告数据对象
  474. */
  475. @interface QQApiAdItem : NSObject
  476. @property (nonatomic, copy) NSString *title; ///<名称
  477. @property (nonatomic, copy) NSString *description;///<描述
  478. @property (nonatomic, copy) NSData *imageData;///<广告图片
  479. @property (nonatomic, strong) NSURL *target;///<广告目标链接
  480. @end
  481. #pragma mark - QQApi请求消息类型
  482. /**
  483. QQApi请求消息类型
  484. */
  485. typedef NS_ENUM(NSUInteger, QQApiInterfaceReqType) {
  486. EGETMESSAGEFROMQQREQTYPE = 0, /// < 手Q -> 第三方应用,请求第三方应用向手Q发送消息
  487. ESENDMESSAGETOQQREQTYPE = 1, /// < 第三方应用 -> 手Q,第三方应用向手Q分享消息
  488. ESHOWMESSAGEFROMQQREQTYPE = 2, /// < 手Q -> 第三方应用,请求第三方应用展现消息中的数据
  489. ESENDMESSAGEARKTOQQREQTYPE = 3, /// < 第三方应用 -> 手Q,第三方应用向手Q分享Ark消息
  490. ESENDMESSAGE_MINI_TOQQREQTYPE = 4 /// < 第三方应用 -> 手Q,第三方应用向手Q分享小程序消息
  491. };
  492. /**
  493. QQApi应答消息类型
  494. */
  495. typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) {
  496. ESHOWMESSAGEFROMQQRESPTYPE = 0, /// < 第三方应用 -> 手Q,第三方应用应答消息展现结果
  497. EGETMESSAGEFROMQQRESPTYPE = 1, /// < 第三方应用 -> 手Q,第三方应用回应发往手Q的消息
  498. ESENDMESSAGETOQQRESPTYPE = 2 /// < 手Q -> 第三方应用,手Q应答处理分享消息的结果
  499. };
  500. /**
  501. QQApi请求消息基类
  502. */
  503. @interface QQBaseReq : NSObject
  504. /** 请求消息类型,参见\ref QQApiInterfaceReqType */
  505. @property (nonatomic, assign) int type;
  506. @end
  507. /**
  508. QQApi应答消息基类
  509. */
  510. @interface QQBaseResp : NSObject
  511. /** 请求处理结果 */
  512. @property (nonatomic, copy) NSString *result;
  513. /** 具体错误描述信息 */
  514. @property (nonatomic, copy) NSString *errorDescription;
  515. /** 应答消息类型,参见\ref QQApiInterfaceRespType */
  516. @property (nonatomic, assign) int type;
  517. /** 扩展信息 */
  518. @property (nonatomic, copy) NSString *extendInfo;
  519. @end
  520. /**
  521. GetMessageFromQQReq请求帮助类
  522. */
  523. @interface GetMessageFromQQReq : QQBaseReq
  524. /**
  525. 创建一个GetMessageFromQQReq请求实例
  526. */
  527. + (GetMessageFromQQReq *)req;
  528. @end
  529. @interface SendMessageToQQReq : QQBaseReq
  530. /**
  531. 创建一个SendMessageToQQReq请求实例
  532. \param message 具体分享消息实例
  533. \return 新创建的SendMessageToQQReq请求实例
  534. */
  535. + (SendMessageToQQReq *)reqWithContent:(QQApiObject *)message;
  536. /**
  537. 创建一个支持Ark的SendMessageToQQReq请求实例
  538. \param message 具体分享消息实例
  539. \return 新创建的SendMessageToQQReq请求实例
  540. */
  541. + (SendMessageToQQReq *)reqWithArkContent:(ArkObject *)message;
  542. /**
  543. * 创建一个支持小程序的消息请求实例
  544. * @param miniMessage 小程序实例对象
  545. * @return 消息请求实例
  546. */
  547. + (SendMessageToQQReq *)reqWithMiniContent:(QQApiMiniProgramObject *)miniMessage;
  548. /** 具体分享消息 */
  549. @property (nonatomic, strong) QQApiObject *apiObject;
  550. /** 支持Ark的具体分享消息 */
  551. @property (nonatomic, strong) ArkObject *arkObject;
  552. /** 支持小程序的具体分享消息 */
  553. @property (nonatomic, strong) QQApiMiniProgramObject *miniProgramObject;
  554. @end
  555. /**
  556. SendMessageToQQResp应答帮助类
  557. */
  558. @interface SendMessageToQQResp : QQBaseResp
  559. /** 其他扩展信息 */
  560. @property (nonatomic, copy) NSDictionary *otherInfo;
  561. /**
  562. 创建一个SendMessageToQQResp应答实例
  563. \param result 请求处理结果
  564. \param errDesp 具体错误描述信息
  565. \param extendInfo 扩展信息
  566. \return 新创建的SendMessageToQQResp应答实例
  567. */
  568. + (SendMessageToQQResp *)respWithResult:(NSString *)result errorDescription:(NSString *)errDesp extendInfo:(NSString *)extendInfo;
  569. + (SendMessageToQQResp *) respWithResult:(NSString *)result errorDescription:(NSString *)errDesp extendInfo:(NSString *)extendInfo otherInfo:(NSDictionary *)otherInfo;
  570. @end
  571. /**
  572. ShowMessageFromQQReq请求帮助类
  573. */
  574. @interface ShowMessageFromQQReq : QQBaseReq
  575. /**
  576. 创建一个ShowMessageFromQQReq请求实例
  577. \param message 具体待展现消息实例
  578. \return 新创建的ShowMessageFromQQReq请求实例
  579. */
  580. + (ShowMessageFromQQReq *)reqWithContent:(QQApiObject *)message;
  581. /** 具体待展现消息 */
  582. @property (nonatomic, strong) QQApiObject *message;
  583. @end
  584. #pragma mark --一键加群&建群&解绑群
  585. // QQApiThirdAppBindGroupObject
  586. /** \brief 第三方app绑定群
  587. */
  588. @interface QQApiThirdAppBindGroupObject : QQApiObject
  589. @property (nonatomic, copy) NSString *accessToken;
  590. @property (nonatomic, copy) NSString *payToken;
  591. @property (nonatomic, copy) NSString *pfkey;
  592. @property (nonatomic, copy) NSString *unionID;
  593. @property (nonatomic, copy) NSString *appDisplayName;
  594. - (id)initWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID appDisplayName:(NSString *)appDisplayName; ///<初始化方法
  595. + (id)objectWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID appDisplayName:(NSString *)appDisplayName; ///<工厂方法,获取一个QQApiThirdAppBindGroupObject对象.
  596. @end
  597. // QQApiThirdAppJoinGroupObject
  598. /** \brief 第三方app加入群
  599. */
  600. @interface QQApiThirdAppJoinGroupObject : QQApiObject
  601. @property (nonatomic, copy) NSString *accessToken;
  602. @property (nonatomic, copy) NSString *payToken;
  603. @property (nonatomic, copy) NSString *pfkey;
  604. @property (nonatomic, copy) NSString *unionID;
  605. - (id)initWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID; ///<初始化方法
  606. + (id)objectWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID; ///<工厂方法,获取一个QQApiThirdAppJoinGroupObject对象.
  607. @end
  608. // QQApiThirdAppUnBindGroupObject
  609. /** \brief 第三方app解绑群
  610. */
  611. @interface QQApiThirdAppUnBindGroupObject : QQApiObject
  612. @property (nonatomic, copy) NSString *accessToken;
  613. @property (nonatomic, copy) NSString *openId;
  614. @property (nonatomic, copy) NSString *payToken;
  615. @property (nonatomic, copy) NSString *pfkey;
  616. @property (nonatomic, copy) NSString *unionID;
  617. - (id)initWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID openId:(NSString *)openId appId:(NSString *)appId; ///<初始化方法
  618. + (id)objectWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID openId:(NSString *)openId appId:(NSString *)appId; ///<工厂方法,获取一个QQApiThirdAppBindGroupObject对象.
  619. @end
  620. #endif