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