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