QQApiInterface.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. ///
  2. /// \file QQApiInterface.h
  3. /// \brief QQApi接口简化封装
  4. ///
  5. /// Created by Tencent on 12-5-15.
  6. /// Copyright (c) 2012年 Tencent. All rights reserved.
  7. ///
  8. #import <Foundation/Foundation.h>
  9. #import "QQApiInterfaceObject.h"
  10. typedef void (^sendResultBlock)(NSDictionary *result);
  11. // 发送消息回调是否发送成功
  12. typedef void(^QQApiInterfaceSendMessageResultBlock)(QQApiSendResultCode sendResultCode, NSString *message);
  13. /**
  14. \brief 处理来至QQ的请求及响应的回调协议
  15. */
  16. @protocol QQApiInterfaceDelegate <NSObject>
  17. /**
  18. 处理来至QQ的请求
  19. */
  20. - (void)onReq:(QQBaseReq *)req;
  21. /**
  22. 处理来至QQ的响应
  23. */
  24. - (void)onResp:(QQBaseResp *)resp;
  25. /**
  26. 处理QQ在线状态的回调
  27. */
  28. - (void)isOnlineResponse:(NSDictionary *)response;
  29. @end
  30. /**
  31. \brief 对QQApi的简单封装类
  32. */
  33. @interface QQApiInterface : NSObject
  34. /**
  35. 处理由手Q唤起的普通跳转请求
  36. \param url 待处理的url跳转请求
  37. \param delegate 第三方应用用于处理来至QQ请求及响应的委托对象
  38. \return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败
  39. */
  40. + (BOOL)handleOpenURL:(NSURL *)url delegate:(id<QQApiInterfaceDelegate>)delegate;
  41. /**
  42. 处理由手Q唤起的universallink跳转请求
  43. \param universallink 待处理的universallink跳转请求
  44. \param delegate 第三方应用用于处理来至QQ请求及响应的委托对象
  45. \return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败
  46. */
  47. + (BOOL)handleOpenUniversallink:(NSURL*)universallink delegate:(id<QQApiInterfaceDelegate>)delegate;
  48. /**
  49. 向手Q发起分享请求
  50. \param req 分享内容的请求
  51. \return 请求发送结果码
  52. */
  53. + (QQApiSendResultCode)sendReq:(QQBaseReq *)req;
  54. /**
  55. 向手Q QZone结合版发起分享请求
  56. \note H5分享只支持单张网络图片的传递
  57. \param req 分享内容的请求
  58. \return 请求发送结果码
  59. */
  60. + (QQApiSendResultCode)SendReqToQZone:(QQBaseReq *)req;
  61. /**
  62. 向手Q发起设置QQ头像
  63. \param req 分享内容的请求
  64. \return 请求发送结果码
  65. */
  66. + (QQApiSendResultCode)sendMessageToQQAvatarWithReq:(QQBaseReq*)req;
  67. + (QQApiSendResultCode)sendMessageToQQAuthWithReq:(QQBaseReq*)req;
  68. /**
  69. 向手Q发起绑群请求
  70. \param req 请求的内容
  71. \param resultBlock 请求回调
  72. */
  73. + (void)sendThirdAppBindGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
  74. /**
  75. 向手Q发起加群请求
  76. \param req 请求的内容
  77. \param resultBlock 请求回调
  78. */
  79. + (void)sendThirdAppJoinGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
  80. /**
  81. 向手Q发起解绑群请求
  82. \param req 请求的内容
  83. \param resultBlock 请求回调
  84. */
  85. + (void)sendThirdAppUnBindGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
  86. /**
  87. 向手Q发起创建QQ频道的请求
  88. \param req 请求的内容
  89. \param resultBlock 回调发送结果
  90. \return void
  91. */
  92. + (void)sendMessageToCreateQQGroupProWithMessageRequest:(SendMessageToQQReq *)messageRequest sendResultBlock:(QQApiInterfaceSendMessageResultBlock)sendResultBlock;
  93. /**
  94. 向手Q发起加入QQ频道的请求
  95. \param req 请求的内容
  96. \param resultBlock 回调发送结果
  97. \return void
  98. */
  99. + (void)sendMessageToJoinQQGroupProWithMessageRequest:(SendMessageToQQReq *)messageRequest sendResultBlock:(QQApiInterfaceSendMessageResultBlock)sendResultBlock;
  100. /**
  101. 向手Q发起查询QQ频道openID的请求
  102. \param req 请求的内容
  103. \param resultBlock 请求回调
  104. */
  105. + (void)sendQueryQQGroupProInfo:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
  106. /**
  107. 向手Q发起组图分享到表情收藏
  108. \param req 分享内容的请求
  109. \return 请求发送结果码
  110. */
  111. + (QQApiSendResultCode)sendMessageToFaceCollectionWithReq:(QQBaseReq*)req;
  112. /**
  113. 检测是否已安装QQ
  114. \return 如果QQ已安装则返回YES,否则返回NO
  115. \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。
  116. 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。
  117. 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。
  118. */
  119. + (BOOL)isQQInstalled;
  120. /**
  121. 检测是否已安装TIM
  122. \return 如果TIM已安装则返回YES,否则返回NO
  123. \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。
  124. 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。
  125. 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。
  126. */
  127. + (BOOL)isTIMInstalled;
  128. /**
  129. 检测QQ是否支持API调用
  130. \return 如果当前安装QQ版本支持API调用则返回YES,否则返回NO
  131. */
  132. + (BOOL)isQQSupportApi;
  133. /**
  134. 检测TIM是否支持API调用
  135. \return 如果当前安装TIM版本支持API调用则返回YES,否则返回NO
  136. */
  137. + (BOOL)isTIMSupportApi __attribute__((deprecated("已过期, 建议删除调用,调用地方用YES替代。")));
  138. /**
  139. 检测是否支持分享
  140. \return 如果当前已安装QQ且QQ版本支持API调用 或者 当前已安装TIM且TIM版本支持API调用则返回YES,否则返回NO
  141. */
  142. + (BOOL)isSupportShareToQQ;
  143. /**
  144. 检测是否支持分享到QQ结合版QZone
  145. \return 如果当前已安装QQ且QQ版本支持API调用则返回YES,否则返回NO
  146. */
  147. + (BOOL)isSupportPushToQZone;
  148. /**
  149. 获取QQ下载地址
  150. 如果App通过<code>QQApiInterface#isQQInstalled</code>和<code>QQApiInterface#isQQSupportApi</code>检测发现QQ没安装或当前版本QQ不支持API调用,可引导用户通过打开此链接下载最新版QQ。
  151. \return iPhoneQQ下载地址
  152. */
  153. + (NSString *)getQQInstallUrl;
  154. /**
  155. 获取TIM下载地址
  156. 如果App通过<code>QQApiInterface#isTIMInstalled</code>检测发现TIM没安装或当前版本TIM不支持API调用,可引导用户通过打开此链接下载最新版TIM。
  157. \return iPhoneTIM下载地址
  158. */
  159. + (NSString *)getTIMInstallUrl;
  160. #pragma mark - Log
  161. /*! @brief 调用此函数可以导出QQSDK的Log到第三方中,用于定位问题
  162. 注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏
  163. 注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock
  164. *
  165. * @param logBlock 打印log的回调block
  166. */
  167. + (void)startLogWithBlock:(QQApiLogBolock)logBlock;
  168. ///停止回调打印
  169. + (void)stopLog;
  170. ///设置打印日志到文件开关on/off,如果不设置,默认不打印到文件
  171. + (void)setSwitchPrintLogToFile:(BOOL)on;
  172. ///日志文件目录
  173. + (NSString *)getLogFilePath;
  174. @end