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