WXApi.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. //
  2. // WXApi.h
  3. // 所有Api接口
  4. //
  5. // Created by Wechat on 12-2-28.
  6. // Copyright (c) 2012年 Tencent. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "WXApiObject.h"
  10. NS_ASSUME_NONNULL_BEGIN
  11. #pragma mark - WXApiDelegate
  12. /*! @brief 接收并处理来自微信终端程序的事件消息
  13. *
  14. * 接收并处理来自微信终端程序的事件消息,期间微信界面会切换到第三方应用程序。
  15. * WXApiDelegate 会在handleOpenURL:delegate:中使用并触发。
  16. */
  17. @protocol WXApiDelegate <NSObject>
  18. @optional
  19. /*! @brief 收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果
  20. *
  21. * 收到一个来自微信的请求,异步处理完成后必须调用sendResp发送处理结果给微信。
  22. * 可能收到的请求有GetMessageFromWXReq、ShowMessageFromWXReq等。
  23. * @param req 具体请求内容,是自动释放的
  24. */
  25. - (void)onReq:(BaseReq*)req;
  26. /*! @brief 发送一个sendReq后,收到微信的回应
  27. *
  28. * 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。
  29. * 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。
  30. * @param resp具体的回应内容,是自动释放的
  31. */
  32. - (void)onResp:(BaseResp*)resp;
  33. @end
  34. #pragma mark - WXApiLogDelegate
  35. @protocol WXApiLogDelegate <NSObject>
  36. - (void)onLog:(NSString*)log logLevel:(WXLogLevel)level;
  37. @end
  38. #pragma mark - WXApi
  39. /*! @brief 微信Api接口函数类
  40. *
  41. * 该类封装了微信终端SDK的所有接口
  42. */
  43. @interface WXApi : NSObject
  44. /*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。
  45. *
  46. * 需要在每次启动第三方应用程序时调用。
  47. * @attention 请保证在主线程中调用此函数
  48. * @param appid 微信开发者ID
  49. * @param universalLink 微信开发者Universal Link
  50. * @return 成功返回YES,失败返回NO。
  51. */
  52. + (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink;
  53. /*! @brief 处理旧版微信通过URL启动App时传递的数据
  54. *
  55. * 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。
  56. * @param url 微信启动第三方应用时传递过来的URL
  57. * @param delegate WXApiDelegate对象,用来接收微信触发的消息。
  58. * @return 成功返回YES,失败返回NO。
  59. */
  60. + (BOOL)handleOpenURL:(NSURL *)url delegate:(nullable id<WXApiDelegate>)delegate;
  61. /*! @brief 处理微信通过Universal Link启动App时传递的数据
  62. *
  63. * 需要在 application:continueUserActivity:restorationHandler:中调用。
  64. * @param userActivity 微信启动第三方应用时系统API传递过来的userActivity
  65. * @param delegate WXApiDelegate对象,用来接收微信触发的消息。
  66. * @return 成功返回YES,失败返回NO。
  67. */
  68. + (BOOL)handleOpenUniversalLink:(NSUserActivity *)userActivity delegate:(nullable id<WXApiDelegate>)delegate;
  69. /*! @brief 检查微信是否已被用户安装
  70. *
  71. * @return 微信已安装返回YES,未安装返回NO。
  72. */
  73. + (BOOL)isWXAppInstalled;
  74. /*! @brief 判断当前微信的版本是否支持OpenApi
  75. *
  76. * @return 支持返回YES,不支持返回NO。
  77. */
  78. + (BOOL)isWXAppSupportApi;
  79. /*! @brief 获取微信的itunes安装地址
  80. *
  81. * @return 微信的安装地址字符串。
  82. */
  83. + (NSString *)getWXAppInstallUrl;
  84. /*! @brief 获取当前微信SDK的版本号
  85. *
  86. * @return 返回当前微信SDK的版本号
  87. */
  88. + (NSString *)getApiVersion;
  89. /*! @brief 打开微信
  90. *
  91. * @return 成功返回YES,失败返回NO。
  92. */
  93. + (BOOL)openWXApp;
  94. /*! @brief 发送请求到微信,等待微信返回onResp
  95. *
  96. * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型
  97. * SendAuthReq、SendMessageToWXReq、PayReq等。
  98. * @param req 具体的发送请求。
  99. * @param completion 调用结果回调block
  100. */
  101. + (void)sendReq:(BaseReq *)req completion:(void (^ __nullable)(BOOL success))completion;
  102. /*! @brief 收到微信onReq的请求,发送对应的应答给微信,并切换到微信界面
  103. *
  104. * 函数调用后,会切换到微信的界面。第三方应用程序收到微信onReq的请求,异步处理该请求,完成后必须调用该函数。可能发送的相应有
  105. * GetMessageFromWXResp、ShowMessageFromWXResp等。
  106. * @param resp 具体的应答内容
  107. * @param completion 调用结果回调block
  108. */
  109. + (void)sendResp:(BaseResp*)resp completion:(void (^ __nullable)(BOOL success))completion;
  110. /*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp
  111. *
  112. * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。
  113. * @param req 具体的发送请求。
  114. * @param viewController 当前界面对象。
  115. * @param delegate WXApiDelegate对象,用来接收微信触发的消息。
  116. * @param completion 调用结果回调block
  117. */
  118. + (void)sendAuthReq:(SendAuthReq *)req viewController:(UIViewController*)viewController delegate:(nullable id<WXApiDelegate>)delegate completion:(void (^ __nullable)(BOOL success))completion;
  119. /*! @brief 测试函数,用于排查当前App通过Universal Link方式分享到微信的流程
  120. 注意1: 调用自检函数之前必须要先调用registerApp:universalLink接口, 并确认调用成功
  121. 注意2: 自检过程中会有Log产生,可以先调用startLogByLevel函数,根据Log排查问题
  122. 注意3: 会多次回调block
  123. 注意4: 仅用于新接入SDK时调试使用,请勿在正式环境的调用
  124. *
  125. * 当completion回调的step为WXULCheckStepFinal时,表示检测通过,Universal Link接入成功
  126. * @param completion 回调Block
  127. */
  128. + (void)checkUniversalLinkReady:(nonnull WXCheckULCompletion)completion;
  129. /*! @brief WXApi的成员函数,接受微信的log信息。byBlock
  130. 注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏
  131. 注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock
  132. *
  133. * @param level 打印log的级别
  134. * @param logBlock 打印log的回调block
  135. */
  136. + (void)startLogByLevel:(WXLogLevel)level logBlock:(WXLogBolock)logBlock;
  137. /*! @brief WXApi的成员函数,接受微信的log信息。byDelegate
  138. 注意1:sdk会弱引用这个delegate,这里可加任意对象为代理,不需要与WXApiDelegate同一个对象
  139. 注意2:调用过一次startLog by delegate之后,再调用一次任意方式的startLoad,不会再回调上一个logDelegate对象
  140. * @param level 打印log的级别
  141. * @param logDelegate 打印log的回调代理,
  142. */
  143. + (void)startLogByLevel:(WXLogLevel)level logDelegate:(id<WXApiLogDelegate>)logDelegate;
  144. /*! @brief 停止打印log,会清理block或者delegate为空,释放block
  145. * @param
  146. */
  147. + (void)stopLog;
  148. @end
  149. NS_ASSUME_NONNULL_END