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
///
/// \file QQApiInterface.h
/// \brief QQApi接口简化封装
///
/// Created by Tencent on 12-5-15.
/// Copyright (c) 2012年 Tencent. All rights reserved.
///
 
#import <Foundation/Foundation.h>
#import "QQApiInterfaceObject.h"
 
typedef void (^sendResultBlock)(NSDictionary *result);
 
// 发送消息回调是否发送成功
typedef void(^QQApiInterfaceSendMessageResultBlock)(QQApiSendResultCode sendResultCode, NSString *message);
 
/**
 \brief 处理来至QQ的请求及响应的回调协议
 */
@protocol QQApiInterfaceDelegate <NSObject>
 
/**
 处理来至QQ的请求
 */
- (void)onReq:(QQBaseReq *)req;
 
/**
 处理来至QQ的响应
 */
- (void)onResp:(QQBaseResp *)resp;
 
/**
 处理QQ在线状态的回调
 */
- (void)isOnlineResponse:(NSDictionary *)response;
 
@end
 
/**
 \brief 对QQApi的简单封装类
 */
@interface QQApiInterface : NSObject
 
/**
 处理由手Q唤起的普通跳转请求
 \param url 待处理的url跳转请求
 \param delegate 第三方应用用于处理来至QQ请求及响应的委托对象
 \return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败
 */
+ (BOOL)handleOpenURL:(NSURL *)url delegate:(id<QQApiInterfaceDelegate>)delegate;
 
/**
 处理由手Q唤起的universallink跳转请求
 \param universallink 待处理的universallink跳转请求
 \param delegate 第三方应用用于处理来至QQ请求及响应的委托对象
 \return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败
 */
+ (BOOL)handleOpenUniversallink:(NSURL*)universallink delegate:(id<QQApiInterfaceDelegate>)delegate;
 
/**
 向手Q发起分享请求
 \param req 分享内容的请求
 \return 请求发送结果码
 */
+ (QQApiSendResultCode)sendReq:(QQBaseReq *)req;
 
 
/**
 向手Q QZone结合版发起分享请求
 \note H5分享只支持单张网络图片的传递
 \param req 分享内容的请求
 \return 请求发送结果码
 */
+ (QQApiSendResultCode)SendReqToQZone:(QQBaseReq *)req;
 
/**
 向手Q发起设置QQ头像
 \param req 分享内容的请求
 \return 请求发送结果码
 */
+ (QQApiSendResultCode)sendMessageToQQAvatarWithReq:(QQBaseReq*)req;
 
 
+ (QQApiSendResultCode)sendMessageToQQAuthWithReq:(QQBaseReq*)req;
 
 
/**
 向手Q发起绑群请求
 \param req 请求的内容
 \param resultBlock 请求回调
 */
+ (void)sendThirdAppBindGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
 
/**
 向手Q发起加群请求
 \param req 请求的内容
 \param resultBlock 请求回调
 */
+ (void)sendThirdAppJoinGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
 
/**
 向手Q发起解绑群请求
 \param req 请求的内容
 \param resultBlock 请求回调
 */
+ (void)sendThirdAppUnBindGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
 
/**
 向手Q发起创建QQ频道的请求
 \param req 请求的内容
 \param resultBlock 回调发送结果
 \return void
 */
+ (void)sendMessageToCreateQQGroupProWithMessageRequest:(SendMessageToQQReq *)messageRequest sendResultBlock:(QQApiInterfaceSendMessageResultBlock)sendResultBlock;
 
 
/**
 向手Q发起加入QQ频道的请求
 \param req 请求的内容
 \param resultBlock 回调发送结果
 \return void
 */
+ (void)sendMessageToJoinQQGroupProWithMessageRequest:(SendMessageToQQReq *)messageRequest sendResultBlock:(QQApiInterfaceSendMessageResultBlock)sendResultBlock;
 
 
/**
 向手Q发起查询QQ频道openID的请求
 \param req 请求的内容
 \param resultBlock 请求回调
 */
+ (void)sendQueryQQGroupProInfo:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
 
/**
 向手Q发起组图分享到表情收藏
 \param req 分享内容的请求
 \return 请求发送结果码
 */
+ (QQApiSendResultCode)sendMessageToFaceCollectionWithReq:(QQBaseReq*)req;
 
/**
 检测是否已安装QQ
 \return 如果QQ已安装则返回YES,否则返回NO
 
 \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。
 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。
 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。
 */
+ (BOOL)isQQInstalled;
 
/**
 检测是否已安装TIM
 \return 如果TIM已安装则返回YES,否则返回NO
 
 \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。
 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。
 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。
 */
+ (BOOL)isTIMInstalled;
 
/**
 检测QQ是否支持API调用
 \return 如果当前安装QQ版本支持API调用则返回YES,否则返回NO
 */  
+ (BOOL)isQQSupportApi;
 
/**
 检测TIM是否支持API调用
 \return 如果当前安装TIM版本支持API调用则返回YES,否则返回NO
 */
+ (BOOL)isTIMSupportApi __attribute__((deprecated("已过期, 建议删除调用,调用地方用YES替代。")));
 
/**
 检测是否支持分享
 \return 如果当前已安装QQ且QQ版本支持API调用 或者 当前已安装TIM且TIM版本支持API调用则返回YES,否则返回NO
 */
+ (BOOL)isSupportShareToQQ;
 
/**
 检测是否支持分享到QQ结合版QZone
 \return 如果当前已安装QQ且QQ版本支持API调用则返回YES,否则返回NO
 */
+ (BOOL)isSupportPushToQZone;
 
/**
 启动QQ
 \return 成功返回YES,否则返回NO
 */
+ (BOOL)openQQ;
 
/**
 启动TIM
 \return 成功返回YES,否则返回NO
 */
+ (BOOL)openTIM;
 
/**
 获取QQ下载地址
 
 如果App通过<code>QQApiInterface#isQQInstalled</code>和<code>QQApiInterface#isQQSupportApi</code>检测发现QQ没安装或当前版本QQ不支持API调用,可引导用户通过打开此链接下载最新版QQ。
 \return iPhoneQQ下载地址
 */
+ (NSString *)getQQInstallUrl;
 
/**
 获取TIM下载地址
 
 如果App通过<code>QQApiInterface#isTIMInstalled</code>检测发现TIM没安装或当前版本TIM不支持API调用,可引导用户通过打开此链接下载最新版TIM。
 \return iPhoneTIM下载地址
 */
+ (NSString *)getTIMInstallUrl;
 
#pragma mark - Log
 
/*! @brief 调用此函数可以导出QQSDK的Log到第三方中,用于定位问题
 
    注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏
    注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock
 *
 *  @param logBlock 打印log的回调block
 */
+ (void)startLogWithBlock:(QQApiLogBolock)logBlock;
 
///停止回调打印
+ (void)stopLog;
 
///设置打印日志到文件开关on/off,如果不设置,默认不打印到文件
+ (void)setSwitchPrintLogToFile:(BOOL)on;
 
///日志文件目录
+ (NSString *)getLogFilePath;
 
@end