diff --git a/Vendor/WechatSDK/README.md b/Vendor/WechatSDK/README.md index d9b7e4c..87d1912 100644 --- a/Vendor/WechatSDK/README.md +++ b/Vendor/WechatSDK/README.md @@ -1,36 +1,62 @@ -# WechatOpenSDK +# WechatOpenSDK 1.8.2(与 daoqi msext 同款) -> 闭源 SDK,按 daoqi `CLAUDE.md` ADR-006 走 **Vendor `.xcframework`** 路径。 +> **决策原因**:微信 OpenSDK 2.0.x 强制 Universal Link,需要项目方配合: +> HTTPS 域名 + AASA 部署 + Xcode Associated Domains entitlement + 微信 +> 开放平台后台审核(30min–1d)。daoqi msext 多年使用 1.8.2 上线稳定, +> ylgamehall 沿用同款避免无谓运维负担。1.x 不强制 UL,URL Scheme 即可。 > -> 历史选型对比:曾考虑 Tencent 官方 SPM(`https://github.com/Tencent/WechatOpenSDK-XCFramework`),但该仓库**不存在**(404);社区 wrapper(`yanyin1986/WechatOpenSDK`、`anotheren/WechatOpenSDK`)存在但非 Tencent 官方维护,仓库一旦停更/删除即为定时炸弹,被否决。 +> 历史记录:曾尝试 SDK 2.0.5 + 空 universalLink,结果 `sendAuthReq` +> 直接 `success=false`(SDK 拒绝),无法授权。改回 1.8.2 后行为与 msext 等价。 ## 二进制来源 | 项 | 值 | |---|---| -| 官方下载页 | | -| 推荐版本 | OpenSDK **2.0.5** 或更新(避免 1.x 的 ITMS-90809 历史包袱;新外壳不上 App Store 仍建议用 2.x,与 msext 行为差异最小) | -| 包形态 | `OpenSDK*_NoPay.zip`(不含支付能力,符合本项目需求) | -| 解压产物 | `WechatOpenSDK.xcframework`(含 ios-arm64 + ios-arm64_x86_64-simulator slice) | -| 模块名 | `WechatOpenSDK`(`import WechatOpenSDK` / `#import `) | +| 来源 | 直接从 daoqi/msext/Class/SDKExport/ 拷贝(与现网 msext 同版本) | +| 版本 | 1.8.2 | +| 形态 | fat 静态库 `.a` + 头文件(无 Swift module,需 Bridging Header) | +| 架构 | i386 + armv7 + armv7s + x86_64 + arm64(**不含 ios-arm64-simulator**) | -## 放置路径 +## 文件结构 ``` -ylgamehall/ -├── Vendor/ -│ └── WechatSDK/ -│ ├── README.md ← 本文件 -│ └── WechatOpenSDK.xcframework/ ← 用户从官方下载后放这里 +Vendor/WechatSDK/ +├── README.md ← 本文件 +└── v1.8.2/ + ├── README.txt ← Tencent 官方版本历史 + ├── WXApi.h ← 主 API(registerApp/sendAuthReq/sendReq/handleOpenURL) + ├── WXApiObject.h ← 数据对象(SendAuthReq/SendMessageToWXReq/WXMediaMessage 等) + ├── WechatAuthSDK.h ← 扫码授权扩展(项目未用) + └── libWeChatSDK.a ← fat 静态库 ``` -## Xcode 接入 +## Xcode 接入步骤(用户在 Xcode 手动) -参 `docs/SDK-Integration-Guide.md §A.1`。要点: +1. **删除当前 xcframework 引用**:Project Navigator → 选中 ylgamehall target → General → + Frameworks, Libraries, and Embedded Content → 选中 `WechatOpenSDK-NoPay.xcframework` → + 点 `-` 删除(文件本身已在上次 commit 从 git 移除) +2. **加 `.a` 静态库**:同位置点 `+` → Add Other → Add Files → 选 + `Vendor/WechatSDK/v1.8.2/libWeChatSDK.a` → **Do Not Embed**(静态库不能 embed) +3. **加 4 个微信 1.x 依赖的系统库**(同位置点 `+` 搜索): + - **libz.tbd** + - **libsqlite3.tbd**(旧的 `libsqlite3.0.tbd` 也可) + - **Security.framework** + - **CFNetwork.framework** + 全部 Do Not Embed +4. **配置 Build Settings**: + - **Header Search Paths**:加 `$(PROJECT_DIR)/Vendor/WechatSDK/v1.8.2`(recursive 不必要) + - **Objective-C Bridging Header**:设为 `ylgamehall/ylgamehall-Bridging-Header.h` +5. **确认 Info.plist 已配**(之前 SDK 2.0.5 时已加,沿用即可): + - `CFBundleURLTypes` 含 `wx586a9b321e56efb7` + - `LSApplicationQueriesSchemes` 含 `weixin` / `weixinULAPI` / `weixinURLParamsAPI` +6. Clean Build Folder + ⌘B -- Target → General → Frameworks, Libraries, and Embedded Content → `+` → Add Files → 选 `Vendor/WechatSDK/WechatOpenSDK.xcframework` -- **Embed 选 `Embed & Sign`**(xcframework 是动态库,与 AMap 静态 `.framework` 的 `Do Not Embed` 不同) +## 已知限制:M Mac 模拟器无法链接 + +fat 库不含 `ios-arm64-simulator` slice,M 芯片 Mac 模拟器链接会报与 AMap 相同的 +arch 冲突错。**接受现状,开发期跑真机**(与 AMap 同款决策,详见 +`Vendor/AMap/README.md` 「已知限制」)。 ## 凭证 -AppID + AppSecret + AuthScope + AuthState 沿用 msext,参 `docs/SDK-Integration-Guide.md §0`。 +AppID + AppSecret + AuthScope 沿用 msext,参 `docs/SDK-Integration-Guide.md §0`。 diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/Info.plist b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/Info.plist deleted file mode 100644 index 925fc2f..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - AvailableLibraries - - - BinaryPath - WechatOpenSDK.framework/WechatOpenSDK - LibraryIdentifier - ios-arm64 - LibraryPath - WechatOpenSDK.framework - SupportedArchitectures - - arm64 - - SupportedPlatform - ios - - - BinaryPath - WechatOpenSDK.framework/WechatOpenSDK - LibraryIdentifier - ios-arm64_x86_64-simulator - LibraryPath - WechatOpenSDK.framework - SupportedArchitectures - - arm64 - x86_64 - - SupportedPlatform - ios - SupportedPlatformVariant - simulator - - - CFBundlePackageType - XFWK - XCFrameworkFormatVersion - 1.0 - - diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/PrivacyInfo.xcprivacy b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/PrivacyInfo.xcprivacy deleted file mode 100644 index 79bc9e2..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,17 +0,0 @@ - - - - - NSPrivacyAccessedAPITypes - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults - NSPrivacyAccessedAPITypeReasons - - CA92.1 - - - - - diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h deleted file mode 100644 index 879c505..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h +++ /dev/null @@ -1,231 +0,0 @@ -// -// WXApi.h -// 所有Api接口 -// -// Created by Wechat on 12-2-28. -// Copyright (c) 2012年 Tencent. All rights reserved. -// - -#import -#import "WXApiObject.h" - -NS_ASSUME_NONNULL_BEGIN - - -typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); - - -#pragma mark - WXApiDelegate -/*! @brief 接收并处理来自微信终端程序的事件消息 - * - * 接收并处理来自微信终端程序的事件消息,期间微信界面会切换到第三方应用程序。 - * WXApiDelegate 会在handleOpenURL:delegate:中使用并触发。 - */ -@protocol WXApiDelegate -@optional - -/*! @brief 收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果 - * - * 收到一个来自微信的请求,异步处理完成后必须调用sendResp发送处理结果给微信。 - * 可能收到的请求有GetMessageFromWXReq、ShowMessageFromWXReq等。 - * @param req 具体请求内容,是自动释放的 - */ -- (void)onReq:(BaseReq*)req; - - - -/*! @brief 发送一个sendReq后,收到微信的回应 - * - * 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。 - * 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。 - * @param resp具体的回应内容,是自动释放的 - */ -- (void)onResp:(BaseResp*)resp; - -/* ! @brief 用于在iOS16以及以上系统上,控制OpenSDK是否读取剪切板中微信传递的数据以及读取的时机 - * 在iOS16以及以上系统,在SDK需要读取剪切板中微信写入的数据时,会回调该方法。没有实现默认会直接读取微信通过剪切板传递过来的数据 - * 注意: - * 1. 只在iOS16以及以上的系统版本上回调; - * 2. 不实现时,OpenSDK会直接调用读取剪切板接口,读取微信传递过来的数据; - * 3. 若实现该方法:开发者需要通过调用completion(), 支持异步,通知SDK允许读取剪切板中微信传递的数据, - * 不调用completion()则代表不授权OpenSDK读取剪切板,会导致收不到onReq:, onResp:回调,无法后续业务流程。请谨慎使用 - * 4. 不要长时间持有completion不释放,可能会导致内存泄漏。 - */ -- (void)onNeedGrantReadPasteBoardPermissionWithURL:(nonnull NSURL *)openURL completion:(nonnull WXGrantReadPasteBoardPermissionCompletion)completion; - -@end - -#pragma mark - WXApiLogDelegate - -@protocol WXApiLogDelegate - -- (void)onLog:(NSString*)log logLevel:(WXLogLevel)level; - -@end - - -#pragma mark - WXApi - -/*! @brief 微信Api接口函数类 - * - * 该类封装了微信终端SDK的所有接口 - */ -@interface WXApi : NSObject - -/*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。 - * - * 需要在每次启动第三方应用程序时调用。 - * @attention 请保证在主线程中调用此函数 - * @param appid 微信开发者ID - * @param universalLink 微信开发者Universal Link - * @return 成功返回YES,失败返回NO。 - */ -+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink; - - -/*! @brief 处理旧版微信通过URL启动App时传递的数据 - * - * 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。 - * @param url 微信启动第三方应用时传递过来的URL - * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 - * @return 成功返回YES,失败返回NO。 - */ -+ (BOOL)handleOpenURL:(NSURL *)url delegate:(nullable id)delegate; - - -/*! @brief 处理微信通过Universal Link启动App时传递的数据 - * - * 需要在 application:continueUserActivity:restorationHandler:中调用。 - * @param userActivity 微信启动第三方应用时系统API传递过来的userActivity - * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 - * @return 成功返回YES,失败返回NO。 - */ -+ (BOOL)handleOpenUniversalLink:(NSUserActivity *)userActivity delegate:(nullable id)delegate; - - -/*! @brief 检查微信是否已被用户安装 - * - * @return 微信已安装返回YES,未安装返回NO。 - */ -+ (BOOL)isWXAppInstalled; - - - -/*! @brief 判断当前微信的版本是否支持OpenApi - * - * @return 支持返回YES,不支持返回NO。 - */ -+ (BOOL)isWXAppSupportApi; - - -/*! @brief 判断当前微信的版本是否支持分享微信状态功能 - * - * @attention 需在工程LSApplicationQueriesSchemes配置中添加weixinStateAPI - * @return 支持返回YES,不支持返回NO。 - */ -+ (BOOL)isWXAppSupportStateAPI; - - -#ifndef BUILD_WITHOUT_PAY -/*! @brief 判断当前微信的版本是否支持二维码拉起微信支付 - * - * @attention 需在工程LSApplicationQueriesSchemes配置中添加weixinQRCodePayAPI - * @return 支持返回YES,不支持返回NO。 - */ -+ (BOOL)isWXAppSupportQRCodePayAPI; - -#endif - - -/*! @brief 获取微信的itunes安装地址 - * - * @return 微信的安装地址字符串。 - */ -+ (NSString *)getWXAppInstallUrl; - - - -/*! @brief 获取当前微信SDK的版本号 - * - * @return 返回当前微信SDK的版本号 - */ -+ (NSString *)getApiVersion; - - - -/*! @brief 打开微信 - * - * @return 成功返回YES,失败返回NO。 - */ -+ (BOOL)openWXApp; - - - -/*! @brief 发送请求到微信,等待微信返回onResp - * - * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型 - * SendAuthReq、SendMessageToWXReq、PayReq等。 - * @param req 具体的发送请求。 - * @param completion 调用结果回调block - */ -+ (void)sendReq:(BaseReq *)req completion:(void (^ __nullable)(BOOL success))completion; - -/*! @brief 收到微信onReq的请求,发送对应的应答给微信,并切换到微信界面 - * - * 函数调用后,会切换到微信的界面。第三方应用程序收到微信onReq的请求,异步处理该请求,完成后必须调用该函数。可能发送的相应有 - * GetMessageFromWXResp、ShowMessageFromWXResp等。 - * @param resp 具体的应答内容 - * @param completion 调用结果回调block - */ -+ (void)sendResp:(BaseResp*)resp completion:(void (^ __nullable)(BOOL success))completion; - - -/*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp - * - * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。 - * @param req 具体的发送请求。 - * @param viewController 当前界面对象。 - * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 - * @param completion 调用结果回调block - */ -+ (void)sendAuthReq:(SendAuthReq *)req viewController:(UIViewController*)viewController delegate:(nullable id)delegate completion:(void (^ __nullable)(BOOL success))completion; - - -/*! @brief 测试函数,用于排查当前App通过Universal Link方式分享到微信的流程 - 注意1: 调用自检函数之前必须要先调用registerApp:universalLink接口, 并确认调用成功 - 注意2: 自检过程中会有Log产生,可以先调用startLogByLevel函数,根据Log排查问题 - 注意3: 会多次回调block - 注意4: 仅用于新接入SDK时调试使用,请勿在正式环境的调用 - * - * 当completion回调的step为WXULCheckStepFinal时,表示检测通过,Universal Link接入成功 - * @param completion 回调Block - */ -+ (void)checkUniversalLinkReady:(nonnull WXCheckULCompletion)completion; - - -/*! @brief WXApi的成员函数,接受微信的log信息。byBlock - 注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏 - 注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock - * - * @param level 打印log的级别 - * @param logBlock 打印log的回调block - */ - -+ (void)startLogByLevel:(WXLogLevel)level logBlock:(WXLogBolock)logBlock; - -/*! @brief WXApi的成员函数,接受微信的log信息。byDelegate - 注意1:sdk会弱引用这个delegate,这里可加任意对象为代理,不需要与WXApiDelegate同一个对象 - 注意2:调用过一次startLog by delegate之后,再调用一次任意方式的startLoad,不会再回调上一个logDelegate对象 - * @param level 打印log的级别 - * @param logDelegate 打印log的回调代理, - */ -+ (void)startLogByLevel:(WXLogLevel)level logDelegate:(id)logDelegate; - -/*! @brief 停止打印log,会清理block或者delegate为空,释放block - * @param - */ -+ (void)stopLog; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h deleted file mode 100644 index 85b6457..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h +++ /dev/null @@ -1,1410 +0,0 @@ -// -// MMApiObject.h -// Api对象,包含所有接口和对象数据定义 -// -// Created by Wechat on 12-2-28. -// Copyright (c) 2012年 Tencent. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -/*! @brief 错误码 - * - */ -enum WXErrCode { - WXSuccess = 0, /**< 成功 */ - WXErrCodeCommon = -1, /**< 普通错误类型 */ - WXErrCodeUserCancel = -2, /**< 用户点击取消并返回 */ - WXErrCodeSentFail = -3, /**< 发送失败 */ - WXErrCodeAuthDeny = -4, /**< 授权失败 */ - WXErrCodeUnsupport = -5, /**< 微信不支持 */ -}; - - - -/*! @brief 请求发送场景 - * - */ -enum WXScene { - WXSceneSession = 0, /**< 聊天界面 */ - WXSceneTimeline = 1, /**< 朋友圈 */ - WXSceneFavorite = 2, /**< 收藏 */ - WXSceneSpecifiedSession = 3, /**< 指定联系人 */ - WXSceneState = 4, /**< 状态 */ -}; - - -enum WXAPISupport { - WXAPISupportSession = 0, -}; - - - -/*! @brief 跳转profile类型 - * - */ -enum WXBizProfileType { - WXBizProfileType_Normal = 0, //**< 普通公众号 */ - WXBizProfileType_Device = 1, //**< 硬件公众号 */ -}; - -/*! @brief 分享小程序类型 - * - */ -typedef NS_ENUM(NSUInteger, WXMiniProgramType) { - WXMiniProgramTypeRelease = 0, //**< 正式版 */ - WXMiniProgramTypeTest = 1, //**< 开发版 */ - WXMiniProgramTypePreview = 2, //**< 体验版 */ -}; - -/*! @brief 跳转mp网页类型 - * - */ -enum WXMPWebviewType { - WXMPWebviewType_Ad = 0, /**< 广告网页 **/ -}; - -/*! @brief log的级别 - * - */ -typedef NS_ENUM(NSInteger,WXLogLevel) { - WXLogLevelNormal = 0, // 打印日常的日志 - WXLogLevelDetail = 1, // 打印详细的日志 -}; - - -/*! @brief 打印回调的block - * - */ -typedef void(^WXLogBolock)(NSString *log); - -/*! @brief 微信Universal Link检查函数 (WXApi#checkUniversalLinkReady:),检查步骤枚举值 - * - * WXULCheckStepParams 参数检测 - * WXULCheckStepSystemVersion 当前系统版本检测 - * WXULCheckStepWechatVersion 微信客户端版本检测 - * WXULCheckStepSDKInnerOperation 微信SDK内部操作检测 - * WXULCheckStepLaunchWechat App拉起微信检测 - * WXULCheckStepBackToCurrentApp 由微信返回当前App检测 - * WXULCheckStepFinal 最终结果 - */ -typedef NS_ENUM(NSInteger, WXULCheckStep) -{ - WXULCheckStepParams, - WXULCheckStepSystemVersion, - WXULCheckStepWechatVersion, - WXULCheckStepSDKInnerOperation, - WXULCheckStepLaunchWechat, - WXULCheckStepBackToCurrentApp, - WXULCheckStepFinal, -}; - - -#pragma mark - WXCheckULStepResult - -/*! @brief 该类为微信Universal Link检测函数结果类 -* -*/ -@interface WXCheckULStepResult : NSObject - -/** 是否成功 */ -@property(nonatomic, assign) BOOL success; -/** 当前错误信息 */ -@property(nonatomic, strong) NSString* errorInfo; -/** 修正建议 */ -@property(nonatomic, strong) NSString* suggestion; - -- (instancetype)initWithCheckResult:(BOOL)success errorInfo:(nullable NSString*)errorInfo suggestion:(nullable NSString*)suggestion; - -@end - - -/*! @brief 微信Universal Link检查函数 (WXApi#checkUniversalLinkReady:),回调Block - * - * @param step 当前检测步骤 - * @param result 检测结果 - */ -typedef void(^WXCheckULCompletion)(WXULCheckStep step, WXCheckULStepResult* result); - - -#pragma mark - BaseReq -/*! @brief 该类为微信终端SDK所有请求类的基类 - * - */ -@interface BaseReq : NSObject - -/** 请求类型 */ -@property (nonatomic, assign) int type; -/** 由用户微信号和AppID组成的唯一标识,需要校验微信用户是否换号登录时填写*/ -@property (nonatomic, copy) NSString *openID; - -@end - - - -#pragma mark - BaseResp -/*! @brief 该类为微信终端SDK所有响应类的基类 - * - */ -@interface BaseResp : NSObject -/** 错误码 */ -@property (nonatomic, assign) int errCode; -/** 错误提示字符串 */ -@property (nonatomic, copy) NSString *errStr; -/** 响应类型 */ -@property (nonatomic, assign) int type; - -@end - - - -#pragma mark - WXMediaMessage -@class WXMediaMessage; - -#ifndef BUILD_WITHOUT_PAY - -#pragma mark - PayReq -/*! @brief 第三方向微信终端发起支付的消息结构体 - * - * 第三方向微信终端发起支付的消息结构体,微信终端处理后会向第三方返回处理结果 - * @see PayResp - */ -@interface PayReq : BaseReq - -/** 商家向财付通申请的商家id */ -@property (nonatomic, copy) NSString *partnerId; -/** 预支付订单 */ -@property (nonatomic, copy) NSString *prepayId; -/** 随机串,防重发 */ -@property (nonatomic, copy) NSString *nonceStr; -/** 时间戳,防重发 */ -@property (nonatomic, assign) UInt32 timeStamp; -/** 商家根据财付通文档填写的数据和签名 */ -@property (nonatomic, copy) NSString *package; -/** 商家根据微信开放平台文档对数据做的签名 */ -@property (nonatomic, copy) NSString *sign; - -@end - - -#pragma mark - PayResp -/*! @brief 微信终端返回给第三方的关于支付结果的结构体 - * - * 微信终端返回给第三方的关于支付结果的结构体 - */ -@interface PayResp : BaseResp - -/** 财付通返回给商家的信息 */ -@property (nonatomic, copy) NSString *returnKey; - -@end - -#pragma mark - WXOfflinePay -/*! @brief 第三方向微信终端发起离线支付 - * - * 第三方向微信终端发起离线支付的消息结构体 - */ -@interface WXOfflinePayReq : BaseReq - -@end - -/*! @brief 第三方向微信终端发起离线支付返回 - * - * 第三方向微信终端发起离线支付返回的消息结构体 - */ -@interface WXOfflinePayResp : BaseResp - -@end - - -#pragma mark - WXNontaxPayReq -@interface WXNontaxPayReq:BaseReq - -@property (nonatomic, copy) NSString *urlString; - -@end - -#pragma mark - WXNontaxPayResp -@interface WXNontaxPayResp : BaseResp - -@property (nonatomic, copy) NSString *wxOrderId; - -@end - -#pragma mark - WXPayInsuranceReq -@interface WXPayInsuranceReq : BaseReq - -@property (nonatomic, copy) NSString *urlString; - -@end - -#pragma mark - WXPayInsuranceResp -@interface WXPayInsuranceResp : BaseResp - -@property (nonatomic, copy) NSString *wxOrderId; - -@end - - -#pragma mark - WXQRCodePayReq -@interface WXQRCodePayReq : BaseReq -/** 码内容 - * @note 必填,码长度必须大于0且小于10K - */ -@property (nonatomic, copy) NSString *codeContent; -/** 额外信息 - * @note 长度必须大于0且小于10K - */ -@property (nonatomic, copy) NSString *extraMsg; - -@end - -@interface WXQRCodePayResp : BaseResp -@end - -#endif - - -#pragma mark - SendAuthReq -/*! @brief 第三方程序向微信终端请求认证的消息结构 - * - * 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数, - * 向微信终端发送一个SendAuthReq消息结构。微信终端处理完后会向第三方程序发送一个处理结果。 - * @see SendAuthResp - */ -@interface SendAuthReq : BaseReq -/** 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数,向微信终端发送一个SendAuthReq消息结构。微信终端处理完后会向第三方程序发送一个处理结果。 - * @see SendAuthResp - * @note scope字符串长度不能超过1K - */ -@property (nonatomic, copy) NSString *scope; -/** 第三方程序本身用来标识其请求的唯一性,最后跳转回第三方程序时,由微信终端回传。 - * @note state字符串长度不能超过1K - */ -@property (nonatomic, copy) NSString *state; - -@property (nonatomic, assign) BOOL isOption1; - -/** 是否关闭自动授权 - * @note YES为关闭自动授权,每次登陆都需要用户手动授权;NO为允许自动授权 - */ -@property (nonatomic, assign) BOOL nonautomatic; - -@property (nonatomic, copy) NSString *extData; - -@end - -#pragma mark - SendAuthResp -/*! @brief 微信处理完第三方程序的认证和权限申请后向第三方程序回送的处理结果。 - * - * 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数,向微信终端发送一个SendAuthReq消息结构。 - * 微信终端处理完后会向第三方程序发送一个SendAuthResp。 - * @see onResp - */ -@interface SendAuthResp : BaseResp -@property (nonatomic, copy, nullable) NSString *code; -/** 第三方程序发送时用来标识其请求的唯一性的标志,由第三方程序调用sendReq时传入,由微信终端回传 - * @note state字符串长度不能超过1K - * @note 在复杂度较高的应用程序中,可能会出现其他模块请求的响应对象被错误地回调到当前模块。 - * 为了避免影响其他模块,建议当前模块的开发者根据SendAuthResp的内容,采用白名单的方式进行处理。 - * 例如,SendAuthResp.state符合预期时,才对其进行处理。 - */ -@property (nonatomic, copy, nullable) NSString *state; -@property (nonatomic, copy, nullable) NSString *lang; -@property (nonatomic, copy, nullable) NSString *country; -@end - -#pragma mark - WXStateJumpInfo -/*! @brief 状态发表时的小尾巴跳转信息 - */ -@interface WXStateJumpInfo : NSObject - -@end - -#pragma mark - WXStateJumpUrlInfo -/*! @brief 状态小尾巴跳转指定url的信息 - */ -@interface WXStateJumpUrlInfo : WXStateJumpInfo -/** 跳转到指定的url - * @note 必填,url长度必须大于0且小于10K - */ -@property (nonatomic, copy) NSString *url; - -@end - -#pragma mark - WXStateJumpWXMiniProgramInfo -/*! @brief 状态小尾巴跳转指定小程序的信息 - */ -@interface WXStateJumpMiniProgramInfo : WXStateJumpInfo -/** 小程序username - * @note 必填 - */ -@property (nonatomic, copy) NSString *username; - -/** 小程序页面的路径 - * @attention 不填默认拉起小程序首页 - */ -@property (nonatomic, copy, nullable) NSString *path; - -/** 分享小程序的版本 - * @attention (正式,开发,体验) - */ -@property (nonatomic, assign) WXMiniProgramType miniProgramType; - -@end - - - -#pragma mark - WXStateJumpWXMiniProgramInfo -/*! @brief 状态小尾巴跳转指定视频号主页信息 - */ -@interface WXStateJumpChannelProfileInfo : WXStateJumpInfo -/** 视频号username - * @note 必填,username长度必须大于0且小于1K - */ -@property (nonatomic, copy) NSString *username; - - -@end - -#pragma mark - WXStateSceneDataObject -/*! @brief 场景类型额外参数基类 - */ -@interface WXSceneDataObject : NSObject - -@end - -#pragma mark - WXStateSceneDataObject -/*! @brief 状态场景类型 - * 用户填写WXStateSceneDataObject参数后,可以跳转到微信状态发表页 - */ -@interface WXStateSceneDataObject : WXSceneDataObject - -/** 状态标志的ID - * @note 选填,文本长度必须小于10K - */ -@property (nonatomic, copy) NSString *stateId; -/** 状态发表时附带的文本描述 - * @note 选填,文本长度必须小于10K - */ -@property (nonatomic, copy) NSString *stateTitle; -/** 后台校验token - * @note 选填,文本长度必须小于10K - */ -@property (nonatomic, copy) NSString *token; -/** 小尾巴跳转所需的信息 - * @note 必填,目前仅支持url跳转 - */ -@property (nonatomic, strong) WXStateJumpInfo *stateJumpDataInfo; - -@end - -#pragma mark - SendMessageToWXReq -/*! @brief 第三方程序发送消息至微信终端程序的消息结构体 - * - * 第三方程序向微信发送信息需要传入SendMessageToWXReq结构体,信息类型包括文本消息和多媒体消息, - * 分别对应于text和message成员。调用该方法后,微信处理完信息会向第三方程序发送一个处理结果。 - * @see SendMessageToWXResp - */ -@interface SendMessageToWXReq : BaseReq -/** 发送消息的文本内容 - * @note 文本长度必须大于0且小于10K - */ -@property (nonatomic, copy) NSString *text; -/** 发送消息的多媒体内容 - * @see WXMediaMessage - */ -@property (nonatomic, strong) WXMediaMessage *message; -/** 发送消息的类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ -@property (nonatomic, assign) BOOL bText; -/** 发送的目标场景,可以选择发送到会话(WXSceneSession)或者朋友圈(WXSceneTimeline)。 默认发送到会话。 - * @see WXScene - */ -@property (nonatomic, assign) int scene; -/** 指定发送消息的人 - * @note WXSceneSpecifiedSession时有效 - */ -@property (nonatomic, copy, nullable) NSString *toUserOpenId; -/** 目标场景附带信息 - * @note 目前只针对状态场景 - */ -@property (nonatomic, strong) WXSceneDataObject *sceneDataObject; - -@end - -#pragma mark - SendMessageToWXResp -/*! @brief 微信终端向第三方程序返回的SendMessageToWXReq处理结果。 - * - * 第三方程序向微信终端发送SendMessageToWXReq后,微信发送回来的处理结果,该结果用SendMessageToWXResp表示。 - */ -@interface SendMessageToWXResp : BaseResp -@property(nonatomic, copy) NSString *lang; -@property(nonatomic, copy) NSString *country; -@end - -#pragma mark - GetMessageFromWXReq -/*! @brief 微信终端向第三方程序请求提供内容的消息结构体。 - * - * 微信终端向第三方程序请求提供内容,微信终端会向第三方程序发送GetMessageFromWXReq消息结构体, - * 需要第三方程序调用sendResp返回一个GetMessageFromWXResp消息结构体。 - */ -@interface GetMessageFromWXReq : BaseReq -@property (nonatomic, strong) NSString *lang; -@property (nonatomic, strong) NSString *country; -@end - - - -#pragma mark - GetMessageFromWXResp -/*! @brief 微信终端向第三方程序请求提供内容,第三方程序向微信终端返回的消息结构体。 - * - * 微信终端向第三方程序请求提供内容,第三方程序调用sendResp向微信终端返回一个GetMessageFromWXResp消息结构体。 - */ -@interface GetMessageFromWXResp : BaseResp -/** 向微信终端提供的文本内容 - @note 文本长度必须大于0且小于10K - */ -@property (nonatomic, strong) NSString *text; -/** 向微信终端提供的多媒体内容。 - * @see WXMediaMessage - */ -@property (nonatomic, strong) WXMediaMessage *message; -/** 向微信终端提供内容的消息类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ -@property (nonatomic, assign) BOOL bText; -@end - - - -#pragma mark - ShowMessageFromWXReq -/*! @brief 微信通知第三方程序,要求第三方程序显示的消息结构体。 - * - * 微信需要通知第三方程序显示或处理某些内容时,会向第三方程序发送ShowMessageFromWXReq消息结构体。 - * 第三方程序处理完内容后调用sendResp向微信终端发送ShowMessageFromWXResp。 - */ -@interface ShowMessageFromWXReq : BaseReq -/** 微信终端向第三方程序发送的要求第三方程序处理的多媒体内容 - * @see WXMediaMessage - */ -@property (nonatomic, strong) WXMediaMessage *message; -@property (nonatomic, copy) NSString *lang; -@property (nonatomic, copy) NSString *country; -@end - - - -#pragma mark - ShowMessageFromWXResp -/*! @brief 微信通知第三方程序,要求第三方程序显示或处理某些消息,第三方程序处理完后向微信终端发送的处理结果。 - * - * 微信需要通知第三方程序显示或处理某些内容时,会向第三方程序发送ShowMessageFromWXReq消息结构体。 - * 第三方程序处理完内容后调用sendResp向微信终端发送ShowMessageFromWXResp。 - */ -@interface ShowMessageFromWXResp : BaseResp -@end - - -#pragma mark - LaunchFromWXReq -/*! @brief 微信终端打开第三方程序携带的消息结构体 - * - * 微信向第三方发送的结构体,第三方不需要返回 - */ -@interface LaunchFromWXReq : BaseReq -@property (nonatomic, strong) WXMediaMessage *message; -@property (nonatomic, copy) NSString *lang; -@property (nonatomic, copy) NSString *country; -@end - - -#pragma mark - OpenWebviewReq -/* ! @brief 第三方通知微信启动内部浏览器,打开指定网页 - * - * 第三方通知微信启动内部浏览器,打开指定Url对应的网页 - */ -@interface OpenWebviewReq : BaseReq -/** 需要打开的网页对应的Url - * @attention 长度不能超过1024 - */ -@property(nonatomic, copy) NSString *url; - -@end - -#pragma mark - OpenWebviewResp -/*! @brief 微信终端向第三方程序返回的OpenWebviewReq处理结果 - * - * 第三方程序向微信终端发送OpenWebviewReq后,微信发送回来的处理结果,该结果用OpenWebviewResp表示 - */ -@interface OpenWebviewResp : BaseResp - -@end - - - -#pragma mark - WXOpenBusinessWebViewReq -/*! @brief 第三方通知微信启动内部浏览器,打开指定业务的网页 - * - * - */ -@interface WXOpenBusinessWebViewReq : BaseReq - -/** 网页业务类型 - * @attention - */ -@property (nonatomic, assign) UInt32 businessType; - -/** 网页业务参数 - * @attention - */ -@property (nonatomic, strong, nullable) NSDictionary *queryInfoDic; - -@end - -#pragma mark - WXOpenBusinessWebViewResp -/*! @brief 微信终端向第三方程序返回的WXOpenBusinessWebViewResp处理结果。 - * - * 第三方程序向微信终端发送WXOpenBusinessWebViewReq后,微信发送回来的处理结果,该结果用WXOpenBusinessWebViewResp表示。 - */ -@interface WXOpenBusinessWebViewResp : BaseResp -/** 第三方程序自定义简单数据,微信终端会回传给第三方程序处理 - * @attention 长度不能超过2k - */ -@property (nonatomic, copy) NSString *result; - -/** 网页业务类型 - * @attention - */ -@property (nonatomic, assign) UInt32 businessType; - -@end - - -#pragma mark - OpenRankListReq -/* ! @brief 第三方通知微信,打开硬件排行榜 - * - * 第三方通知微信,打开硬件排行榜 - */ -@interface OpenRankListReq : BaseReq - -@end - -#pragma mark - OpenRanklistResp -/*! @brief 微信终端向第三方程序返回的OpenRankListReq处理结果。 - * - * 第三方程序向微信终端发送OpenRankListReq后,微信发送回来的处理结果,该结果用OpenRankListResp表示。 - */ -@interface OpenRankListResp : BaseResp - -@end - - -#pragma mark - WXCardItem - -@interface WXCardItem : NSObject -/** 卡id - * @attention 长度不能超过1024字节 - */ -@property (nonatomic, copy) NSString *cardId; -/** ext信息 - * @attention 长度不能超过2024字节 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; -/** - * @attention 卡的状态,req不需要填。resp:0为未添加,1为已添加。 - */ -@property (nonatomic, assign) UInt32 cardState; -/** - * @attention req不需要填,chooseCard返回的。 - */ -@property (nonatomic, copy) NSString *encryptCode; -/** - * @attention req不需要填,chooseCard返回的。 - */ -@property (nonatomic, copy) NSString *appID; -@end; - -#pragma mark - WXInvoiceItem - -@interface WXInvoiceItem : NSObject -/** 卡id - * @attention 长度不能超过1024字节 - */ -@property (nonatomic, copy) NSString *cardId; -/** ext信息 - * @attention 长度不能超过2024字节 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; -/** - * @attention 卡的状态,req不需要填。resp:0为未添加,1为已添加。 - */ -@property (nonatomic, assign) UInt32 cardState; -/** - * @attention req不需要填,chooseCard返回的。 - */ -@property (nonatomic, copy) NSString *encryptCode; -/** - * @attention req不需要填,chooseCard返回的。 - */ -@property (nonatomic, copy) NSString *appID; - -@end - -#pragma mark - AddCardToWXCardPackageReq -/* ! @brief 请求添加卡券至微信卡包 - * - */ - -@interface AddCardToWXCardPackageReq : BaseReq -/** 卡列表 - * @attention 个数不能超过40个 类型WXCardItem - */ -@property (nonatomic, strong) NSArray *cardAry; - -@end - - -#pragma mark - AddCardToWXCardPackageResp -/** ! @brief 微信返回第三方添加卡券结果 - * - */ - -@interface AddCardToWXCardPackageResp : BaseResp -/** 卡列表 - * @attention 个数不能超过40个 类型WXCardItem - */ -@property (nonatomic, strong) NSArray *cardAry; -@end - -#pragma mark - WXChooseCardReq -/* ! @brief 请求从微信选取卡券 - * - */ - -@interface WXChooseCardReq : BaseReq -@property (nonatomic, copy) NSString *appID; -@property (nonatomic, assign) UInt32 shopID; -@property (nonatomic, assign) UInt32 canMultiSelect; -@property (nonatomic, copy) NSString *cardType; -@property (nonatomic, copy) NSString *cardTpID; -@property (nonatomic, copy) NSString *signType; -@property (nonatomic, copy) NSString *cardSign; -@property (nonatomic, assign) UInt32 timeStamp; -@property (nonatomic, copy) NSString *nonceStr; -@end - - -#pragma mark - WXChooseCardResp -/** ! @brief 微信返回第三方请求选择卡券结果 - * - */ - -@interface WXChooseCardResp : BaseResp -@property (nonatomic, strong ) NSArray* cardAry; -@end - - -#pragma mark - WXChooseInvoiceReq -/* ! @brief 请求从微信选取发票 - * - */ -@interface WXChooseInvoiceReq : BaseReq -@property (nonatomic, copy) NSString *appID; -@property (nonatomic, assign) UInt32 shopID; -@property (nonatomic, copy) NSString *signType; -@property (nonatomic, copy) NSString *cardSign; -@property (nonatomic, assign) UInt32 timeStamp; -@property (nonatomic, copy) NSString *nonceStr; -@end - -#pragma mark - WXChooseInvoiceResp -/** ! @brief 微信返回第三方请求选择发票结果 - * - */ -@interface WXChooseInvoiceResp : BaseResp -@property (nonatomic, strong) NSArray* cardAry; -@end - -#pragma mark - WXSubscriptionReq -@interface WXSubscribeMsgReq : BaseReq -@property (nonatomic, assign) UInt32 scene; -@property (nonatomic, copy) NSString *templateId; -@property (nonatomic, copy, nullable) NSString *reserved; -@end - -#pragma mark - WXSubscriptionReq -@interface WXSubscribeMsgResp : BaseResp - -@property (nonatomic, copy) NSString *templateId; -@property (nonatomic, assign) UInt32 scene; -@property (nonatomic, copy) NSString *action; -@property (nonatomic, copy) NSString *reserved; -@property (nonatomic, copy, nullable) NSString *openId; - -@end - -#pragma mark - WXSubscribeMiniProgramMsg -/** ! @brief 第三方请求订阅小程序消息 - * - */ -@interface WXSubscribeMiniProgramMsgReq : BaseReq -@property (nonatomic, copy) NSString *miniProgramAppid; -@end - -#pragma mark - WXSubscriptionReq -@interface WXSubscribeMiniProgramMsgResp : BaseResp - -@property(nonatomic, copy) NSString *openId; // 小程序openid -@property(nonatomic, copy) NSString *unionId; // unionId -@property(nonatomic, copy) NSString *nickName; // 用户昵称 - -@end - -#pragma mark - WXinvoiceAuthInsertReq -@interface WXInvoiceAuthInsertReq : BaseReq - -@property (nonatomic, copy) NSString *urlString; - -@end - -#pragma mark - WXinvoiceAuthInsertResp - -@interface WXInvoiceAuthInsertResp : BaseResp - -@property (nonatomic, copy) NSString *wxOrderId; - -@end - -#pragma mark - WXMediaMessage - -/*! @brief 多媒体消息结构体 - * - * 用于微信终端和第三方程序之间传递消息的多媒体消息内容 - */ -@interface WXMediaMessage : NSObject - -+ (WXMediaMessage *)message; - -/** 标题 - * @note 长度不能超过512字节 - */ -@property (nonatomic, copy) NSString *title; -/** 描述内容 - * @note 长度不能超过1K - */ -@property (nonatomic, copy) NSString *description; -/** 缩略图数据 - * @note 大小不能超过64K - */ -@property (nonatomic, strong, nullable) NSData *thumbData; -/** - * @note 长度不能超过64字节 - */ -@property (nonatomic, copy, nullable) NSString *mediaTagName; -/** - * - */ -@property (nonatomic, copy, nullable) NSString *messageExt; -@property (nonatomic, copy, nullable) NSString *messageAction; -/** - * 多媒体数据对象,可以为WXImageObject,WXMusicObject,WXVideoObject,WXWebpageObject等。 - */ -@property (nonatomic, strong) id mediaObject; - -/** 缩略图的hash值 - * @note 使用sha256得到,用于计算签名 - */ -@property (nonatomic, copy, nullable) NSString *thumbDataHash; - -/** 消息签名 - * @note 用于校验消息体是否被篡改过 - */ -@property (nonatomic, copy, nullable) NSString *msgSignature; - - -/*! @brief 设置消息缩略图的方法 - * - * @param image 缩略图 - * @note 大小不能超过256K - */ -- (void)setThumbImage:(UIImage *)image; - -@end - - - -#pragma mark - WXImageObject -/*! @brief 多媒体消息中包含的图片数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的图片数据对象。 - * @note imageData成员不能为空 - * @see WXMediaMessage - */ -@interface WXImageObject : NSObject -/*! @brief 返回一个WXImageObject对象 - * - * @note 返回的WXImageObject对象是自动释放的 - */ -+ (WXImageObject *)object; - -/** 图片真实数据内容 - * @note 大小不能超过25M - */ -@property (nonatomic, strong) NSData *imageData; - -/** 图片数据的hash值 - * @note 使用sha256得到,用于计算签名 - */ -@property (nonatomic, copy, nullable) NSString *imgDataHash; - -/** 分享的图片消息是否要带小程序入口,若 'entranceMiniProgramUsername' 非空则显示 - * 仅部分小程序类目可用 - * @note 本字段为空则发送普通app图片消息 - */ -@property (nonatomic, copy, nullable) NSString *entranceMiniProgramUsername; - -/** 分享的图片消息显示的小程序入口可以跳转的小程序路径 - * 仅当 'entranceMiniProgramUsername' 非空时生效 - */ -@property (nonatomic, copy, nullable) NSString *entranceMiniProgramPath; - -@end - - -#pragma mark - WXMusicObject -/*! @brief 多媒体消息中包含的音乐数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的音乐数据对象。 - * @note musicUrl和musicLowBandUrl成员不能同时为空。 - * @see WXMediaMessage - */ -@interface WXMusicObject : NSObject -/*! @brief 返回一个WXMusicObject对象 - * - * @note 返回的WXMusicObject对象是自动释放的 - */ -+ (WXMusicObject *)object; - -/** 音乐网页的url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *musicUrl; -/** 音乐lowband网页的url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *musicLowBandUrl; -/** 音乐数据url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *musicDataUrl; - -/**音乐lowband数据url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *musicLowBandDataUrl; - -/**音乐封面图Url - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *songAlbumUrl; - -/**歌词信息 LRC格式 - * @note 长度不能超过32K - */ -@property (nonatomic, copy, nullable) NSString *songLyric; -@end - - - -#pragma mark - WXMusicVideoObject - -@interface WXMusicVipInfo : NSObject - -/**付费歌曲的id - * @note 长度不能超过32K - */ -@property (nonatomic, copy) NSString *musicId; - -@end - - -@interface WXMusicVideoObject : NSObject - -/*! @brief 返回一个WXMusicVideoObject对象 - * - * @note 返回的WXMusicVideoObject对象是自动释放的 - */ -+ (WXMusicVideoObject *)object; - -/** 音乐网页的url地址 - * @note 长度不能超过10K,不能为空 - */ -@property (nonatomic, copy) NSString *musicUrl; - -/** 音乐数据url地址 - * @note 长度不能超过10K,不能为空 - */ -@property (nonatomic, copy) NSString *musicDataUrl; - -/**歌手名 - * @note 长度不能超过1k,不能为空 - */ -@property (nonatomic, copy) NSString *singerName; - -/** - * @note 音乐时长, 单位毫秒 - */ -@property (nonatomic, assign) UInt32 duration; - -/**歌词信息 LRC格式 - * @note 长度不能超过32K - */ -@property (nonatomic, copy) NSString *songLyric; - -/**高清封面图 - * @note 大小不能超过1M - */ -@property (nonatomic, strong) NSData *hdAlbumThumbData; - -/** 高清封面图数据的hash值 - * @note 使用sha256得到,用于计算签名 - */ -@property (nonatomic, copy, nullable) NSString *hdAlbumThumbFileHash; - -/**音乐专辑名称 - * @note 长度不能超过1k - */ -@property (nonatomic, copy, nullable) NSString *albumName; - -/**音乐流派 - * @note 长度不能超过1k - */ -@property (nonatomic, copy, nullable) NSString *musicGenre; - -/**发行时间 - * @note Unix时间戳,单位为秒 - */ -@property (nonatomic, assign) UInt64 issueDate; - -/**音乐标识符 - * @note 长度不能超过1K,从微信跳回应用时会带上 - */ -@property (nonatomic, copy, nullable) NSString *identification; - -/**运营H5地址 - * @note 选填,建议填写,用户进入歌曲详情页将展示内嵌的运营H5,可展示该歌曲的相关评论、歌曲推荐等内容,不可诱导下载、分享等。 - */ -@property (nonatomic, copy, nullable) NSString *musicOperationUrl; - -/** 付费歌曲相关信息 - * @note 选填,如果歌曲是需要付费的,那么将付费歌曲id等信息封装在内。 - */ -@property (nonatomic, strong) WXMusicVipInfo *musicVipInfo; - -@end - - - -#pragma mark - WXVideoObject -/*! @brief 多媒体消息中包含的视频数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的视频数据对象。 - * @note videoUrl和videoLowBandUrl不能同时为空。 - * @see WXMediaMessage - */ -@interface WXVideoObject : NSObject -/*! @brief 返回一个WXVideoObject对象 - * - * @note 返回的WXVideoObject对象是自动释放的 - */ -+ (WXVideoObject *)object; - -/** 视频网页的url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *videoUrl; -/** 视频lowband网页的url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *videoLowBandUrl; - -@end - - - -#pragma mark - WXWebpageObject -/*! @brief 多媒体消息中包含的网页数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的网页数据对象。 - * @see WXMediaMessage - */ -@interface WXWebpageObject : NSObject -/*! @brief 返回一个WXWebpageObject对象 - * - * @note 返回的WXWebpageObject对象是自动释放的 - */ -+ (WXWebpageObject *)object; - -/** 网页的url地址 - * @note 不能为空且长度不能超过10K - */ -@property (nonatomic, copy) NSString *webpageUrl; - -/**是否是私密消息 - */ -@property (nonatomic, assign) BOOL isSecretMessage; - -/** 业务所需的额外信息 */ -@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; - -@end - - - -#pragma mark - WXAppExtendObject -/*! @brief 多媒体消息中包含的App扩展数据对象 - * - * 第三方程序向微信终端发送包含WXAppExtendObject的多媒体消息, - * 微信需要处理该消息时,会调用该第三方程序来处理多媒体消息内容。 - * @note url,extInfo和fileData不能同时为空 - * @see WXMediaMessage - */ -@interface WXAppExtendObject : NSObject -/*! @brief 返回一个WXAppExtendObject对象 - * - * @note 返回的WXAppExtendObject对象是自动释放的 - */ -+ (WXAppExtendObject *)object; - -/** 若第三方程序不存在,微信终端会打开该url所指的App下载地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *url; -/** 第三方程序自定义简单数据,微信终端会回传给第三方程序处理 - * @note 长度不能超过2K - */ -@property (nonatomic, copy, nullable) NSString *extInfo; -/** App文件数据,该数据发送给微信好友,微信好友需要点击后下载数据,微信终端会回传给第三方程序处理 - * @note 大小不能超过10M - */ -@property (nonatomic, strong, nullable) NSData *fileData; - -@end - - - -#pragma mark - WXEmoticonObject -/*! @brief 多媒体消息中包含的表情数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的表情数据对象。 - * @see WXMediaMessage - */ -@interface WXEmoticonObject : NSObject - -/*! @brief 返回一个WXEmoticonObject对象 - * - * @note 返回的WXEmoticonObject对象是自动释放的 - */ -+ (WXEmoticonObject *)object; - -/** 表情真实数据内容 - * @note 大小不能超过10M - */ -@property (nonatomic, strong) NSData *emoticonData; - -@end - - - -#pragma mark - WXFileObject -/*! @brief 多媒体消息中包含的文件数据对象 - * - * @see WXMediaMessage - */ -@interface WXFileObject : NSObject - -/*! @brief 返回一个WXFileObject对象 - * - * @note 返回的WXFileObject对象是自动释放的 - */ -+ (WXFileObject *)object; - -/** 文件后缀名 - * @note 长度不超过64字节 - */ -@property (nonatomic, copy) NSString *fileExtension; - -/** 文件真实数据内容 - * @note 大小不能超过10M - */ -@property (nonatomic, strong) NSData *fileData; - -@end - - -#pragma mark - WXLocationObject -/*! @brief 多媒体消息中包含的地理位置数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的地理位置数据对象。 - * @see WXMediaMessage - */ -@interface WXLocationObject : NSObject - -/*! @brief 返回一个WXLocationObject对象 - * - * @note 返回的WXLocationObject对象是自动释放的 - */ -+ (WXLocationObject *)object; - -/** 地理位置信息 - * @note 经纬度 - */ -@property (nonatomic, assign) double lng; //经度 -@property (nonatomic, assign) double lat; //纬度 - -@end - -#pragma mark - WXTextObject -/*! @brief 多媒体消息中包含的文本数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的文本数据对象。 - * @see WXMediaMessage - */ -@interface WXTextObject : NSObject - -/*! @brief 返回一个WXTextObject对象 - * - * @note 返回的WXTextObject对象是自动释放的 - */ -+ (WXTextObject *)object; - -/** 地理位置信息 - * @note 文本内容 - */ -@property (nonatomic, copy) NSString *contentText; - -@end - -#pragma mark - WXMiniProgramObject - -@interface WXMiniProgramObject : NSObject - -/*! @brief WXMiniProgramObject对象 - * - * @note 返回的WXMiniProgramObject对象是自动释放的 - */ -+ (WXMiniProgramObject *)object; - -/** 低版本网页链接 - * @attention 长度不能超过1024字节 - */ -@property (nonatomic, copy) NSString *webpageUrl; - -/** 小程序username */ -@property (nonatomic, copy) NSString *userName; - -/** 小程序页面的路径 - * @attention 不填默认拉起小程序首页 - */ -@property (nonatomic, copy, nullable) NSString *path; - -/** 小程序新版本的预览图 - * @attention 大小不能超过128k - */ -@property (nonatomic, strong, nullable) NSData *hdImageData; - -/** 是否使用带 shareTicket 的转发 */ -@property (nonatomic, assign) BOOL withShareTicket; - -/** 分享小程序的版本 - * @attention (正式,开发,体验) - */ -@property (nonatomic, assign) WXMiniProgramType miniProgramType; - -/** 是否禁用转发 */ -@property (nonatomic, assign) BOOL disableForward; - -@property (nonatomic, assign) BOOL isUpdatableMessage; - -@property (nonatomic, assign) BOOL isSecretMessage; - - -/** 业务所需的额外信息 */ -@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; - -@end - -#pragma mark - WXGameLiveObject - -/*! @brief WXGameLiveObject对象 - * - * @note 游戏直播消息类型 - */ - -@interface WXGameLiveObject : NSObject - -+ (WXGameLiveObject *)object; - -/** 业务所需的额外信息 */ -@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; - -@end - -@interface WXNativeGamePageObject : NSObject - -/** 是否为视频类型 - */ -@property (nonatomic, assign) BOOL isVideo; - -/** 视频时长 - @note 当为视频类型时,必填;单位为秒 - */ -@property (nonatomic, assign) UInt32 videoDuration; - -/** 透传字段 - @note 长度限制为100K - */ -@property (nonatomic, copy) NSString *shareData; - -/** 缩略图 - @note 大小限制为256K - */ -@property (nonatomic, strong) NSData *gameThumbData; - -+ (WXNativeGamePageObject *)object; - -@end - -#pragma mark - WXLaunchMiniProgramReq - -/*! @brief WXLaunchMiniProgramReq对象, 可实现通过sdk拉起微信小程序 - * - * @note 返回的WXLaunchMiniProgramReq对象是自动释放的 - */ -@interface WXLaunchMiniProgramReq : BaseReq - -+ (WXLaunchMiniProgramReq *)object; - -/** 小程序username */ -@property (nonatomic, copy) NSString *userName; - -/** 小程序页面的路径 - * @attention 不填默认拉起小程序首页 - */ -@property (nonatomic, copy, nullable) NSString *path; - -/** 分享小程序的版本 - * @attention (正式,开发,体验) - */ -@property (nonatomic, assign) WXMiniProgramType miniProgramType; - -/** ext信息 - * @attention json格式 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; - -/** extDic - * @attention 字典,可存放图片等比较大的数据 - */ -@property (nonatomic, copy, nullable) NSDictionary *extDic; - -@end - -#pragma mark - WXLaunchMiniProgramResp -/*! @brief 微信终端向第三方程序返回的WXLaunchMiniProgramReq处理结果。 - * - * 第三方程序向微信终端发送WXLaunchMiniProgramReq后,微信发送回来的处理结果,该结果用WXLaunchMiniProgramResp表示。 - */ -@interface WXLaunchMiniProgramResp : BaseResp - -@property (nonatomic, copy, nullable) NSString *extMsg; - -@end - - -#pragma mark - WXOpenBusinessViewReq -/*! @brief WXOpenBusinessViewReq对象, 可实现第三方通知微信启动,打开业务页面 - * - * @note 返回的WXOpenBusinessViewReq对象是自动释放的 - */ - -@interface WXOpenBusinessViewReq : BaseReq - -+ (WXOpenBusinessViewReq *)object; - -/** 业务类型 - */ -@property (nonatomic, copy) NSString *businessType; - -/** 业务参数 - */ -@property (nonatomic, copy, nullable) NSString *query; - -/** ext信息 - * @note 选填,json格式 - */ -@property (nonatomic, copy, nullable) NSString *extInfo; - -/** extData数据 - * @note - */ -@property (nonatomic, strong, nullable) NSData *extData; -@end - - -@interface WXOpenBusinessViewResp : BaseResp - -/** 业务类型 - */ -@property (nonatomic, copy) NSString *businessType; - -/** 业务返回数据 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; - -@end - -#pragma mark - WXOpenCustomerServiceReq -@interface WXOpenCustomerServiceReq : BaseReq - -+ (WXOpenCustomerServiceReq *)object; - -/**企微客服发起流程 url - */ -@property (nonatomic, copy, nullable) NSString *url; - -/**企业 id - */ -@property (nonatomic, copy, nullable) NSString *corpid; - -@end - -@interface WXOpenCustomerServiceResp : BaseResp - -/** 业务返回数据 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; - -@end - - -#pragma mark - WXChannelStartLiveReq - -@interface WXChannelStartLiveReq : BaseReq - -+ (WXChannelStartLiveReq *)object; - -/** 必填,直播业务数据(json格式) - */ -@property (nonatomic, copy) NSString *liveJsonInfo; - -@end - -@interface WXChannelStartLiveResp : BaseResp - -/** 业务返回数据 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h deleted file mode 100644 index 979e5e9..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h +++ /dev/null @@ -1,9 +0,0 @@ -// WechatOpenSDK.h -// -// Created by Wechat. -// Copyright (c) 2012年 Tencent. All rights reserved. -// -#import -#import -#import - diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist deleted file mode 100755 index 45d6068..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist +++ /dev/null @@ -1,15 +0,0 @@ - - - - CFBundleIdentifier - com.tencent.WechatOpenSDK - CFBundleVersion - 1.0.0 - CFBundleShortVersionString - 1.0 - MinimumOSVersion - 12.0 - CFBundleExecutable - WechatOpenSDK - - \ No newline at end of file diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap deleted file mode 100644 index 3ddbeb0..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap +++ /dev/null @@ -1,5 +0,0 @@ -framework module WechatOpenSDK { - umbrella header "WechatOpenSDK.h" - export * - link "WechatOpenSDK" -} diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/WechatOpenSDK b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/WechatOpenSDK deleted file mode 100644 index defd024..0000000 Binary files a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/WechatOpenSDK and /dev/null differ diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApiObject.h b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApiObject.h deleted file mode 100644 index 85b6457..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApiObject.h +++ /dev/null @@ -1,1410 +0,0 @@ -// -// MMApiObject.h -// Api对象,包含所有接口和对象数据定义 -// -// Created by Wechat on 12-2-28. -// Copyright (c) 2012年 Tencent. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -/*! @brief 错误码 - * - */ -enum WXErrCode { - WXSuccess = 0, /**< 成功 */ - WXErrCodeCommon = -1, /**< 普通错误类型 */ - WXErrCodeUserCancel = -2, /**< 用户点击取消并返回 */ - WXErrCodeSentFail = -3, /**< 发送失败 */ - WXErrCodeAuthDeny = -4, /**< 授权失败 */ - WXErrCodeUnsupport = -5, /**< 微信不支持 */ -}; - - - -/*! @brief 请求发送场景 - * - */ -enum WXScene { - WXSceneSession = 0, /**< 聊天界面 */ - WXSceneTimeline = 1, /**< 朋友圈 */ - WXSceneFavorite = 2, /**< 收藏 */ - WXSceneSpecifiedSession = 3, /**< 指定联系人 */ - WXSceneState = 4, /**< 状态 */ -}; - - -enum WXAPISupport { - WXAPISupportSession = 0, -}; - - - -/*! @brief 跳转profile类型 - * - */ -enum WXBizProfileType { - WXBizProfileType_Normal = 0, //**< 普通公众号 */ - WXBizProfileType_Device = 1, //**< 硬件公众号 */ -}; - -/*! @brief 分享小程序类型 - * - */ -typedef NS_ENUM(NSUInteger, WXMiniProgramType) { - WXMiniProgramTypeRelease = 0, //**< 正式版 */ - WXMiniProgramTypeTest = 1, //**< 开发版 */ - WXMiniProgramTypePreview = 2, //**< 体验版 */ -}; - -/*! @brief 跳转mp网页类型 - * - */ -enum WXMPWebviewType { - WXMPWebviewType_Ad = 0, /**< 广告网页 **/ -}; - -/*! @brief log的级别 - * - */ -typedef NS_ENUM(NSInteger,WXLogLevel) { - WXLogLevelNormal = 0, // 打印日常的日志 - WXLogLevelDetail = 1, // 打印详细的日志 -}; - - -/*! @brief 打印回调的block - * - */ -typedef void(^WXLogBolock)(NSString *log); - -/*! @brief 微信Universal Link检查函数 (WXApi#checkUniversalLinkReady:),检查步骤枚举值 - * - * WXULCheckStepParams 参数检测 - * WXULCheckStepSystemVersion 当前系统版本检测 - * WXULCheckStepWechatVersion 微信客户端版本检测 - * WXULCheckStepSDKInnerOperation 微信SDK内部操作检测 - * WXULCheckStepLaunchWechat App拉起微信检测 - * WXULCheckStepBackToCurrentApp 由微信返回当前App检测 - * WXULCheckStepFinal 最终结果 - */ -typedef NS_ENUM(NSInteger, WXULCheckStep) -{ - WXULCheckStepParams, - WXULCheckStepSystemVersion, - WXULCheckStepWechatVersion, - WXULCheckStepSDKInnerOperation, - WXULCheckStepLaunchWechat, - WXULCheckStepBackToCurrentApp, - WXULCheckStepFinal, -}; - - -#pragma mark - WXCheckULStepResult - -/*! @brief 该类为微信Universal Link检测函数结果类 -* -*/ -@interface WXCheckULStepResult : NSObject - -/** 是否成功 */ -@property(nonatomic, assign) BOOL success; -/** 当前错误信息 */ -@property(nonatomic, strong) NSString* errorInfo; -/** 修正建议 */ -@property(nonatomic, strong) NSString* suggestion; - -- (instancetype)initWithCheckResult:(BOOL)success errorInfo:(nullable NSString*)errorInfo suggestion:(nullable NSString*)suggestion; - -@end - - -/*! @brief 微信Universal Link检查函数 (WXApi#checkUniversalLinkReady:),回调Block - * - * @param step 当前检测步骤 - * @param result 检测结果 - */ -typedef void(^WXCheckULCompletion)(WXULCheckStep step, WXCheckULStepResult* result); - - -#pragma mark - BaseReq -/*! @brief 该类为微信终端SDK所有请求类的基类 - * - */ -@interface BaseReq : NSObject - -/** 请求类型 */ -@property (nonatomic, assign) int type; -/** 由用户微信号和AppID组成的唯一标识,需要校验微信用户是否换号登录时填写*/ -@property (nonatomic, copy) NSString *openID; - -@end - - - -#pragma mark - BaseResp -/*! @brief 该类为微信终端SDK所有响应类的基类 - * - */ -@interface BaseResp : NSObject -/** 错误码 */ -@property (nonatomic, assign) int errCode; -/** 错误提示字符串 */ -@property (nonatomic, copy) NSString *errStr; -/** 响应类型 */ -@property (nonatomic, assign) int type; - -@end - - - -#pragma mark - WXMediaMessage -@class WXMediaMessage; - -#ifndef BUILD_WITHOUT_PAY - -#pragma mark - PayReq -/*! @brief 第三方向微信终端发起支付的消息结构体 - * - * 第三方向微信终端发起支付的消息结构体,微信终端处理后会向第三方返回处理结果 - * @see PayResp - */ -@interface PayReq : BaseReq - -/** 商家向财付通申请的商家id */ -@property (nonatomic, copy) NSString *partnerId; -/** 预支付订单 */ -@property (nonatomic, copy) NSString *prepayId; -/** 随机串,防重发 */ -@property (nonatomic, copy) NSString *nonceStr; -/** 时间戳,防重发 */ -@property (nonatomic, assign) UInt32 timeStamp; -/** 商家根据财付通文档填写的数据和签名 */ -@property (nonatomic, copy) NSString *package; -/** 商家根据微信开放平台文档对数据做的签名 */ -@property (nonatomic, copy) NSString *sign; - -@end - - -#pragma mark - PayResp -/*! @brief 微信终端返回给第三方的关于支付结果的结构体 - * - * 微信终端返回给第三方的关于支付结果的结构体 - */ -@interface PayResp : BaseResp - -/** 财付通返回给商家的信息 */ -@property (nonatomic, copy) NSString *returnKey; - -@end - -#pragma mark - WXOfflinePay -/*! @brief 第三方向微信终端发起离线支付 - * - * 第三方向微信终端发起离线支付的消息结构体 - */ -@interface WXOfflinePayReq : BaseReq - -@end - -/*! @brief 第三方向微信终端发起离线支付返回 - * - * 第三方向微信终端发起离线支付返回的消息结构体 - */ -@interface WXOfflinePayResp : BaseResp - -@end - - -#pragma mark - WXNontaxPayReq -@interface WXNontaxPayReq:BaseReq - -@property (nonatomic, copy) NSString *urlString; - -@end - -#pragma mark - WXNontaxPayResp -@interface WXNontaxPayResp : BaseResp - -@property (nonatomic, copy) NSString *wxOrderId; - -@end - -#pragma mark - WXPayInsuranceReq -@interface WXPayInsuranceReq : BaseReq - -@property (nonatomic, copy) NSString *urlString; - -@end - -#pragma mark - WXPayInsuranceResp -@interface WXPayInsuranceResp : BaseResp - -@property (nonatomic, copy) NSString *wxOrderId; - -@end - - -#pragma mark - WXQRCodePayReq -@interface WXQRCodePayReq : BaseReq -/** 码内容 - * @note 必填,码长度必须大于0且小于10K - */ -@property (nonatomic, copy) NSString *codeContent; -/** 额外信息 - * @note 长度必须大于0且小于10K - */ -@property (nonatomic, copy) NSString *extraMsg; - -@end - -@interface WXQRCodePayResp : BaseResp -@end - -#endif - - -#pragma mark - SendAuthReq -/*! @brief 第三方程序向微信终端请求认证的消息结构 - * - * 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数, - * 向微信终端发送一个SendAuthReq消息结构。微信终端处理完后会向第三方程序发送一个处理结果。 - * @see SendAuthResp - */ -@interface SendAuthReq : BaseReq -/** 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数,向微信终端发送一个SendAuthReq消息结构。微信终端处理完后会向第三方程序发送一个处理结果。 - * @see SendAuthResp - * @note scope字符串长度不能超过1K - */ -@property (nonatomic, copy) NSString *scope; -/** 第三方程序本身用来标识其请求的唯一性,最后跳转回第三方程序时,由微信终端回传。 - * @note state字符串长度不能超过1K - */ -@property (nonatomic, copy) NSString *state; - -@property (nonatomic, assign) BOOL isOption1; - -/** 是否关闭自动授权 - * @note YES为关闭自动授权,每次登陆都需要用户手动授权;NO为允许自动授权 - */ -@property (nonatomic, assign) BOOL nonautomatic; - -@property (nonatomic, copy) NSString *extData; - -@end - -#pragma mark - SendAuthResp -/*! @brief 微信处理完第三方程序的认证和权限申请后向第三方程序回送的处理结果。 - * - * 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数,向微信终端发送一个SendAuthReq消息结构。 - * 微信终端处理完后会向第三方程序发送一个SendAuthResp。 - * @see onResp - */ -@interface SendAuthResp : BaseResp -@property (nonatomic, copy, nullable) NSString *code; -/** 第三方程序发送时用来标识其请求的唯一性的标志,由第三方程序调用sendReq时传入,由微信终端回传 - * @note state字符串长度不能超过1K - * @note 在复杂度较高的应用程序中,可能会出现其他模块请求的响应对象被错误地回调到当前模块。 - * 为了避免影响其他模块,建议当前模块的开发者根据SendAuthResp的内容,采用白名单的方式进行处理。 - * 例如,SendAuthResp.state符合预期时,才对其进行处理。 - */ -@property (nonatomic, copy, nullable) NSString *state; -@property (nonatomic, copy, nullable) NSString *lang; -@property (nonatomic, copy, nullable) NSString *country; -@end - -#pragma mark - WXStateJumpInfo -/*! @brief 状态发表时的小尾巴跳转信息 - */ -@interface WXStateJumpInfo : NSObject - -@end - -#pragma mark - WXStateJumpUrlInfo -/*! @brief 状态小尾巴跳转指定url的信息 - */ -@interface WXStateJumpUrlInfo : WXStateJumpInfo -/** 跳转到指定的url - * @note 必填,url长度必须大于0且小于10K - */ -@property (nonatomic, copy) NSString *url; - -@end - -#pragma mark - WXStateJumpWXMiniProgramInfo -/*! @brief 状态小尾巴跳转指定小程序的信息 - */ -@interface WXStateJumpMiniProgramInfo : WXStateJumpInfo -/** 小程序username - * @note 必填 - */ -@property (nonatomic, copy) NSString *username; - -/** 小程序页面的路径 - * @attention 不填默认拉起小程序首页 - */ -@property (nonatomic, copy, nullable) NSString *path; - -/** 分享小程序的版本 - * @attention (正式,开发,体验) - */ -@property (nonatomic, assign) WXMiniProgramType miniProgramType; - -@end - - - -#pragma mark - WXStateJumpWXMiniProgramInfo -/*! @brief 状态小尾巴跳转指定视频号主页信息 - */ -@interface WXStateJumpChannelProfileInfo : WXStateJumpInfo -/** 视频号username - * @note 必填,username长度必须大于0且小于1K - */ -@property (nonatomic, copy) NSString *username; - - -@end - -#pragma mark - WXStateSceneDataObject -/*! @brief 场景类型额外参数基类 - */ -@interface WXSceneDataObject : NSObject - -@end - -#pragma mark - WXStateSceneDataObject -/*! @brief 状态场景类型 - * 用户填写WXStateSceneDataObject参数后,可以跳转到微信状态发表页 - */ -@interface WXStateSceneDataObject : WXSceneDataObject - -/** 状态标志的ID - * @note 选填,文本长度必须小于10K - */ -@property (nonatomic, copy) NSString *stateId; -/** 状态发表时附带的文本描述 - * @note 选填,文本长度必须小于10K - */ -@property (nonatomic, copy) NSString *stateTitle; -/** 后台校验token - * @note 选填,文本长度必须小于10K - */ -@property (nonatomic, copy) NSString *token; -/** 小尾巴跳转所需的信息 - * @note 必填,目前仅支持url跳转 - */ -@property (nonatomic, strong) WXStateJumpInfo *stateJumpDataInfo; - -@end - -#pragma mark - SendMessageToWXReq -/*! @brief 第三方程序发送消息至微信终端程序的消息结构体 - * - * 第三方程序向微信发送信息需要传入SendMessageToWXReq结构体,信息类型包括文本消息和多媒体消息, - * 分别对应于text和message成员。调用该方法后,微信处理完信息会向第三方程序发送一个处理结果。 - * @see SendMessageToWXResp - */ -@interface SendMessageToWXReq : BaseReq -/** 发送消息的文本内容 - * @note 文本长度必须大于0且小于10K - */ -@property (nonatomic, copy) NSString *text; -/** 发送消息的多媒体内容 - * @see WXMediaMessage - */ -@property (nonatomic, strong) WXMediaMessage *message; -/** 发送消息的类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ -@property (nonatomic, assign) BOOL bText; -/** 发送的目标场景,可以选择发送到会话(WXSceneSession)或者朋友圈(WXSceneTimeline)。 默认发送到会话。 - * @see WXScene - */ -@property (nonatomic, assign) int scene; -/** 指定发送消息的人 - * @note WXSceneSpecifiedSession时有效 - */ -@property (nonatomic, copy, nullable) NSString *toUserOpenId; -/** 目标场景附带信息 - * @note 目前只针对状态场景 - */ -@property (nonatomic, strong) WXSceneDataObject *sceneDataObject; - -@end - -#pragma mark - SendMessageToWXResp -/*! @brief 微信终端向第三方程序返回的SendMessageToWXReq处理结果。 - * - * 第三方程序向微信终端发送SendMessageToWXReq后,微信发送回来的处理结果,该结果用SendMessageToWXResp表示。 - */ -@interface SendMessageToWXResp : BaseResp -@property(nonatomic, copy) NSString *lang; -@property(nonatomic, copy) NSString *country; -@end - -#pragma mark - GetMessageFromWXReq -/*! @brief 微信终端向第三方程序请求提供内容的消息结构体。 - * - * 微信终端向第三方程序请求提供内容,微信终端会向第三方程序发送GetMessageFromWXReq消息结构体, - * 需要第三方程序调用sendResp返回一个GetMessageFromWXResp消息结构体。 - */ -@interface GetMessageFromWXReq : BaseReq -@property (nonatomic, strong) NSString *lang; -@property (nonatomic, strong) NSString *country; -@end - - - -#pragma mark - GetMessageFromWXResp -/*! @brief 微信终端向第三方程序请求提供内容,第三方程序向微信终端返回的消息结构体。 - * - * 微信终端向第三方程序请求提供内容,第三方程序调用sendResp向微信终端返回一个GetMessageFromWXResp消息结构体。 - */ -@interface GetMessageFromWXResp : BaseResp -/** 向微信终端提供的文本内容 - @note 文本长度必须大于0且小于10K - */ -@property (nonatomic, strong) NSString *text; -/** 向微信终端提供的多媒体内容。 - * @see WXMediaMessage - */ -@property (nonatomic, strong) WXMediaMessage *message; -/** 向微信终端提供内容的消息类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ -@property (nonatomic, assign) BOOL bText; -@end - - - -#pragma mark - ShowMessageFromWXReq -/*! @brief 微信通知第三方程序,要求第三方程序显示的消息结构体。 - * - * 微信需要通知第三方程序显示或处理某些内容时,会向第三方程序发送ShowMessageFromWXReq消息结构体。 - * 第三方程序处理完内容后调用sendResp向微信终端发送ShowMessageFromWXResp。 - */ -@interface ShowMessageFromWXReq : BaseReq -/** 微信终端向第三方程序发送的要求第三方程序处理的多媒体内容 - * @see WXMediaMessage - */ -@property (nonatomic, strong) WXMediaMessage *message; -@property (nonatomic, copy) NSString *lang; -@property (nonatomic, copy) NSString *country; -@end - - - -#pragma mark - ShowMessageFromWXResp -/*! @brief 微信通知第三方程序,要求第三方程序显示或处理某些消息,第三方程序处理完后向微信终端发送的处理结果。 - * - * 微信需要通知第三方程序显示或处理某些内容时,会向第三方程序发送ShowMessageFromWXReq消息结构体。 - * 第三方程序处理完内容后调用sendResp向微信终端发送ShowMessageFromWXResp。 - */ -@interface ShowMessageFromWXResp : BaseResp -@end - - -#pragma mark - LaunchFromWXReq -/*! @brief 微信终端打开第三方程序携带的消息结构体 - * - * 微信向第三方发送的结构体,第三方不需要返回 - */ -@interface LaunchFromWXReq : BaseReq -@property (nonatomic, strong) WXMediaMessage *message; -@property (nonatomic, copy) NSString *lang; -@property (nonatomic, copy) NSString *country; -@end - - -#pragma mark - OpenWebviewReq -/* ! @brief 第三方通知微信启动内部浏览器,打开指定网页 - * - * 第三方通知微信启动内部浏览器,打开指定Url对应的网页 - */ -@interface OpenWebviewReq : BaseReq -/** 需要打开的网页对应的Url - * @attention 长度不能超过1024 - */ -@property(nonatomic, copy) NSString *url; - -@end - -#pragma mark - OpenWebviewResp -/*! @brief 微信终端向第三方程序返回的OpenWebviewReq处理结果 - * - * 第三方程序向微信终端发送OpenWebviewReq后,微信发送回来的处理结果,该结果用OpenWebviewResp表示 - */ -@interface OpenWebviewResp : BaseResp - -@end - - - -#pragma mark - WXOpenBusinessWebViewReq -/*! @brief 第三方通知微信启动内部浏览器,打开指定业务的网页 - * - * - */ -@interface WXOpenBusinessWebViewReq : BaseReq - -/** 网页业务类型 - * @attention - */ -@property (nonatomic, assign) UInt32 businessType; - -/** 网页业务参数 - * @attention - */ -@property (nonatomic, strong, nullable) NSDictionary *queryInfoDic; - -@end - -#pragma mark - WXOpenBusinessWebViewResp -/*! @brief 微信终端向第三方程序返回的WXOpenBusinessWebViewResp处理结果。 - * - * 第三方程序向微信终端发送WXOpenBusinessWebViewReq后,微信发送回来的处理结果,该结果用WXOpenBusinessWebViewResp表示。 - */ -@interface WXOpenBusinessWebViewResp : BaseResp -/** 第三方程序自定义简单数据,微信终端会回传给第三方程序处理 - * @attention 长度不能超过2k - */ -@property (nonatomic, copy) NSString *result; - -/** 网页业务类型 - * @attention - */ -@property (nonatomic, assign) UInt32 businessType; - -@end - - -#pragma mark - OpenRankListReq -/* ! @brief 第三方通知微信,打开硬件排行榜 - * - * 第三方通知微信,打开硬件排行榜 - */ -@interface OpenRankListReq : BaseReq - -@end - -#pragma mark - OpenRanklistResp -/*! @brief 微信终端向第三方程序返回的OpenRankListReq处理结果。 - * - * 第三方程序向微信终端发送OpenRankListReq后,微信发送回来的处理结果,该结果用OpenRankListResp表示。 - */ -@interface OpenRankListResp : BaseResp - -@end - - -#pragma mark - WXCardItem - -@interface WXCardItem : NSObject -/** 卡id - * @attention 长度不能超过1024字节 - */ -@property (nonatomic, copy) NSString *cardId; -/** ext信息 - * @attention 长度不能超过2024字节 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; -/** - * @attention 卡的状态,req不需要填。resp:0为未添加,1为已添加。 - */ -@property (nonatomic, assign) UInt32 cardState; -/** - * @attention req不需要填,chooseCard返回的。 - */ -@property (nonatomic, copy) NSString *encryptCode; -/** - * @attention req不需要填,chooseCard返回的。 - */ -@property (nonatomic, copy) NSString *appID; -@end; - -#pragma mark - WXInvoiceItem - -@interface WXInvoiceItem : NSObject -/** 卡id - * @attention 长度不能超过1024字节 - */ -@property (nonatomic, copy) NSString *cardId; -/** ext信息 - * @attention 长度不能超过2024字节 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; -/** - * @attention 卡的状态,req不需要填。resp:0为未添加,1为已添加。 - */ -@property (nonatomic, assign) UInt32 cardState; -/** - * @attention req不需要填,chooseCard返回的。 - */ -@property (nonatomic, copy) NSString *encryptCode; -/** - * @attention req不需要填,chooseCard返回的。 - */ -@property (nonatomic, copy) NSString *appID; - -@end - -#pragma mark - AddCardToWXCardPackageReq -/* ! @brief 请求添加卡券至微信卡包 - * - */ - -@interface AddCardToWXCardPackageReq : BaseReq -/** 卡列表 - * @attention 个数不能超过40个 类型WXCardItem - */ -@property (nonatomic, strong) NSArray *cardAry; - -@end - - -#pragma mark - AddCardToWXCardPackageResp -/** ! @brief 微信返回第三方添加卡券结果 - * - */ - -@interface AddCardToWXCardPackageResp : BaseResp -/** 卡列表 - * @attention 个数不能超过40个 类型WXCardItem - */ -@property (nonatomic, strong) NSArray *cardAry; -@end - -#pragma mark - WXChooseCardReq -/* ! @brief 请求从微信选取卡券 - * - */ - -@interface WXChooseCardReq : BaseReq -@property (nonatomic, copy) NSString *appID; -@property (nonatomic, assign) UInt32 shopID; -@property (nonatomic, assign) UInt32 canMultiSelect; -@property (nonatomic, copy) NSString *cardType; -@property (nonatomic, copy) NSString *cardTpID; -@property (nonatomic, copy) NSString *signType; -@property (nonatomic, copy) NSString *cardSign; -@property (nonatomic, assign) UInt32 timeStamp; -@property (nonatomic, copy) NSString *nonceStr; -@end - - -#pragma mark - WXChooseCardResp -/** ! @brief 微信返回第三方请求选择卡券结果 - * - */ - -@interface WXChooseCardResp : BaseResp -@property (nonatomic, strong ) NSArray* cardAry; -@end - - -#pragma mark - WXChooseInvoiceReq -/* ! @brief 请求从微信选取发票 - * - */ -@interface WXChooseInvoiceReq : BaseReq -@property (nonatomic, copy) NSString *appID; -@property (nonatomic, assign) UInt32 shopID; -@property (nonatomic, copy) NSString *signType; -@property (nonatomic, copy) NSString *cardSign; -@property (nonatomic, assign) UInt32 timeStamp; -@property (nonatomic, copy) NSString *nonceStr; -@end - -#pragma mark - WXChooseInvoiceResp -/** ! @brief 微信返回第三方请求选择发票结果 - * - */ -@interface WXChooseInvoiceResp : BaseResp -@property (nonatomic, strong) NSArray* cardAry; -@end - -#pragma mark - WXSubscriptionReq -@interface WXSubscribeMsgReq : BaseReq -@property (nonatomic, assign) UInt32 scene; -@property (nonatomic, copy) NSString *templateId; -@property (nonatomic, copy, nullable) NSString *reserved; -@end - -#pragma mark - WXSubscriptionReq -@interface WXSubscribeMsgResp : BaseResp - -@property (nonatomic, copy) NSString *templateId; -@property (nonatomic, assign) UInt32 scene; -@property (nonatomic, copy) NSString *action; -@property (nonatomic, copy) NSString *reserved; -@property (nonatomic, copy, nullable) NSString *openId; - -@end - -#pragma mark - WXSubscribeMiniProgramMsg -/** ! @brief 第三方请求订阅小程序消息 - * - */ -@interface WXSubscribeMiniProgramMsgReq : BaseReq -@property (nonatomic, copy) NSString *miniProgramAppid; -@end - -#pragma mark - WXSubscriptionReq -@interface WXSubscribeMiniProgramMsgResp : BaseResp - -@property(nonatomic, copy) NSString *openId; // 小程序openid -@property(nonatomic, copy) NSString *unionId; // unionId -@property(nonatomic, copy) NSString *nickName; // 用户昵称 - -@end - -#pragma mark - WXinvoiceAuthInsertReq -@interface WXInvoiceAuthInsertReq : BaseReq - -@property (nonatomic, copy) NSString *urlString; - -@end - -#pragma mark - WXinvoiceAuthInsertResp - -@interface WXInvoiceAuthInsertResp : BaseResp - -@property (nonatomic, copy) NSString *wxOrderId; - -@end - -#pragma mark - WXMediaMessage - -/*! @brief 多媒体消息结构体 - * - * 用于微信终端和第三方程序之间传递消息的多媒体消息内容 - */ -@interface WXMediaMessage : NSObject - -+ (WXMediaMessage *)message; - -/** 标题 - * @note 长度不能超过512字节 - */ -@property (nonatomic, copy) NSString *title; -/** 描述内容 - * @note 长度不能超过1K - */ -@property (nonatomic, copy) NSString *description; -/** 缩略图数据 - * @note 大小不能超过64K - */ -@property (nonatomic, strong, nullable) NSData *thumbData; -/** - * @note 长度不能超过64字节 - */ -@property (nonatomic, copy, nullable) NSString *mediaTagName; -/** - * - */ -@property (nonatomic, copy, nullable) NSString *messageExt; -@property (nonatomic, copy, nullable) NSString *messageAction; -/** - * 多媒体数据对象,可以为WXImageObject,WXMusicObject,WXVideoObject,WXWebpageObject等。 - */ -@property (nonatomic, strong) id mediaObject; - -/** 缩略图的hash值 - * @note 使用sha256得到,用于计算签名 - */ -@property (nonatomic, copy, nullable) NSString *thumbDataHash; - -/** 消息签名 - * @note 用于校验消息体是否被篡改过 - */ -@property (nonatomic, copy, nullable) NSString *msgSignature; - - -/*! @brief 设置消息缩略图的方法 - * - * @param image 缩略图 - * @note 大小不能超过256K - */ -- (void)setThumbImage:(UIImage *)image; - -@end - - - -#pragma mark - WXImageObject -/*! @brief 多媒体消息中包含的图片数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的图片数据对象。 - * @note imageData成员不能为空 - * @see WXMediaMessage - */ -@interface WXImageObject : NSObject -/*! @brief 返回一个WXImageObject对象 - * - * @note 返回的WXImageObject对象是自动释放的 - */ -+ (WXImageObject *)object; - -/** 图片真实数据内容 - * @note 大小不能超过25M - */ -@property (nonatomic, strong) NSData *imageData; - -/** 图片数据的hash值 - * @note 使用sha256得到,用于计算签名 - */ -@property (nonatomic, copy, nullable) NSString *imgDataHash; - -/** 分享的图片消息是否要带小程序入口,若 'entranceMiniProgramUsername' 非空则显示 - * 仅部分小程序类目可用 - * @note 本字段为空则发送普通app图片消息 - */ -@property (nonatomic, copy, nullable) NSString *entranceMiniProgramUsername; - -/** 分享的图片消息显示的小程序入口可以跳转的小程序路径 - * 仅当 'entranceMiniProgramUsername' 非空时生效 - */ -@property (nonatomic, copy, nullable) NSString *entranceMiniProgramPath; - -@end - - -#pragma mark - WXMusicObject -/*! @brief 多媒体消息中包含的音乐数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的音乐数据对象。 - * @note musicUrl和musicLowBandUrl成员不能同时为空。 - * @see WXMediaMessage - */ -@interface WXMusicObject : NSObject -/*! @brief 返回一个WXMusicObject对象 - * - * @note 返回的WXMusicObject对象是自动释放的 - */ -+ (WXMusicObject *)object; - -/** 音乐网页的url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *musicUrl; -/** 音乐lowband网页的url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *musicLowBandUrl; -/** 音乐数据url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *musicDataUrl; - -/**音乐lowband数据url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *musicLowBandDataUrl; - -/**音乐封面图Url - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *songAlbumUrl; - -/**歌词信息 LRC格式 - * @note 长度不能超过32K - */ -@property (nonatomic, copy, nullable) NSString *songLyric; -@end - - - -#pragma mark - WXMusicVideoObject - -@interface WXMusicVipInfo : NSObject - -/**付费歌曲的id - * @note 长度不能超过32K - */ -@property (nonatomic, copy) NSString *musicId; - -@end - - -@interface WXMusicVideoObject : NSObject - -/*! @brief 返回一个WXMusicVideoObject对象 - * - * @note 返回的WXMusicVideoObject对象是自动释放的 - */ -+ (WXMusicVideoObject *)object; - -/** 音乐网页的url地址 - * @note 长度不能超过10K,不能为空 - */ -@property (nonatomic, copy) NSString *musicUrl; - -/** 音乐数据url地址 - * @note 长度不能超过10K,不能为空 - */ -@property (nonatomic, copy) NSString *musicDataUrl; - -/**歌手名 - * @note 长度不能超过1k,不能为空 - */ -@property (nonatomic, copy) NSString *singerName; - -/** - * @note 音乐时长, 单位毫秒 - */ -@property (nonatomic, assign) UInt32 duration; - -/**歌词信息 LRC格式 - * @note 长度不能超过32K - */ -@property (nonatomic, copy) NSString *songLyric; - -/**高清封面图 - * @note 大小不能超过1M - */ -@property (nonatomic, strong) NSData *hdAlbumThumbData; - -/** 高清封面图数据的hash值 - * @note 使用sha256得到,用于计算签名 - */ -@property (nonatomic, copy, nullable) NSString *hdAlbumThumbFileHash; - -/**音乐专辑名称 - * @note 长度不能超过1k - */ -@property (nonatomic, copy, nullable) NSString *albumName; - -/**音乐流派 - * @note 长度不能超过1k - */ -@property (nonatomic, copy, nullable) NSString *musicGenre; - -/**发行时间 - * @note Unix时间戳,单位为秒 - */ -@property (nonatomic, assign) UInt64 issueDate; - -/**音乐标识符 - * @note 长度不能超过1K,从微信跳回应用时会带上 - */ -@property (nonatomic, copy, nullable) NSString *identification; - -/**运营H5地址 - * @note 选填,建议填写,用户进入歌曲详情页将展示内嵌的运营H5,可展示该歌曲的相关评论、歌曲推荐等内容,不可诱导下载、分享等。 - */ -@property (nonatomic, copy, nullable) NSString *musicOperationUrl; - -/** 付费歌曲相关信息 - * @note 选填,如果歌曲是需要付费的,那么将付费歌曲id等信息封装在内。 - */ -@property (nonatomic, strong) WXMusicVipInfo *musicVipInfo; - -@end - - - -#pragma mark - WXVideoObject -/*! @brief 多媒体消息中包含的视频数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的视频数据对象。 - * @note videoUrl和videoLowBandUrl不能同时为空。 - * @see WXMediaMessage - */ -@interface WXVideoObject : NSObject -/*! @brief 返回一个WXVideoObject对象 - * - * @note 返回的WXVideoObject对象是自动释放的 - */ -+ (WXVideoObject *)object; - -/** 视频网页的url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *videoUrl; -/** 视频lowband网页的url地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *videoLowBandUrl; - -@end - - - -#pragma mark - WXWebpageObject -/*! @brief 多媒体消息中包含的网页数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的网页数据对象。 - * @see WXMediaMessage - */ -@interface WXWebpageObject : NSObject -/*! @brief 返回一个WXWebpageObject对象 - * - * @note 返回的WXWebpageObject对象是自动释放的 - */ -+ (WXWebpageObject *)object; - -/** 网页的url地址 - * @note 不能为空且长度不能超过10K - */ -@property (nonatomic, copy) NSString *webpageUrl; - -/**是否是私密消息 - */ -@property (nonatomic, assign) BOOL isSecretMessage; - -/** 业务所需的额外信息 */ -@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; - -@end - - - -#pragma mark - WXAppExtendObject -/*! @brief 多媒体消息中包含的App扩展数据对象 - * - * 第三方程序向微信终端发送包含WXAppExtendObject的多媒体消息, - * 微信需要处理该消息时,会调用该第三方程序来处理多媒体消息内容。 - * @note url,extInfo和fileData不能同时为空 - * @see WXMediaMessage - */ -@interface WXAppExtendObject : NSObject -/*! @brief 返回一个WXAppExtendObject对象 - * - * @note 返回的WXAppExtendObject对象是自动释放的 - */ -+ (WXAppExtendObject *)object; - -/** 若第三方程序不存在,微信终端会打开该url所指的App下载地址 - * @note 长度不能超过10K - */ -@property (nonatomic, copy) NSString *url; -/** 第三方程序自定义简单数据,微信终端会回传给第三方程序处理 - * @note 长度不能超过2K - */ -@property (nonatomic, copy, nullable) NSString *extInfo; -/** App文件数据,该数据发送给微信好友,微信好友需要点击后下载数据,微信终端会回传给第三方程序处理 - * @note 大小不能超过10M - */ -@property (nonatomic, strong, nullable) NSData *fileData; - -@end - - - -#pragma mark - WXEmoticonObject -/*! @brief 多媒体消息中包含的表情数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的表情数据对象。 - * @see WXMediaMessage - */ -@interface WXEmoticonObject : NSObject - -/*! @brief 返回一个WXEmoticonObject对象 - * - * @note 返回的WXEmoticonObject对象是自动释放的 - */ -+ (WXEmoticonObject *)object; - -/** 表情真实数据内容 - * @note 大小不能超过10M - */ -@property (nonatomic, strong) NSData *emoticonData; - -@end - - - -#pragma mark - WXFileObject -/*! @brief 多媒体消息中包含的文件数据对象 - * - * @see WXMediaMessage - */ -@interface WXFileObject : NSObject - -/*! @brief 返回一个WXFileObject对象 - * - * @note 返回的WXFileObject对象是自动释放的 - */ -+ (WXFileObject *)object; - -/** 文件后缀名 - * @note 长度不超过64字节 - */ -@property (nonatomic, copy) NSString *fileExtension; - -/** 文件真实数据内容 - * @note 大小不能超过10M - */ -@property (nonatomic, strong) NSData *fileData; - -@end - - -#pragma mark - WXLocationObject -/*! @brief 多媒体消息中包含的地理位置数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的地理位置数据对象。 - * @see WXMediaMessage - */ -@interface WXLocationObject : NSObject - -/*! @brief 返回一个WXLocationObject对象 - * - * @note 返回的WXLocationObject对象是自动释放的 - */ -+ (WXLocationObject *)object; - -/** 地理位置信息 - * @note 经纬度 - */ -@property (nonatomic, assign) double lng; //经度 -@property (nonatomic, assign) double lat; //纬度 - -@end - -#pragma mark - WXTextObject -/*! @brief 多媒体消息中包含的文本数据对象 - * - * 微信终端和第三方程序之间传递消息中包含的文本数据对象。 - * @see WXMediaMessage - */ -@interface WXTextObject : NSObject - -/*! @brief 返回一个WXTextObject对象 - * - * @note 返回的WXTextObject对象是自动释放的 - */ -+ (WXTextObject *)object; - -/** 地理位置信息 - * @note 文本内容 - */ -@property (nonatomic, copy) NSString *contentText; - -@end - -#pragma mark - WXMiniProgramObject - -@interface WXMiniProgramObject : NSObject - -/*! @brief WXMiniProgramObject对象 - * - * @note 返回的WXMiniProgramObject对象是自动释放的 - */ -+ (WXMiniProgramObject *)object; - -/** 低版本网页链接 - * @attention 长度不能超过1024字节 - */ -@property (nonatomic, copy) NSString *webpageUrl; - -/** 小程序username */ -@property (nonatomic, copy) NSString *userName; - -/** 小程序页面的路径 - * @attention 不填默认拉起小程序首页 - */ -@property (nonatomic, copy, nullable) NSString *path; - -/** 小程序新版本的预览图 - * @attention 大小不能超过128k - */ -@property (nonatomic, strong, nullable) NSData *hdImageData; - -/** 是否使用带 shareTicket 的转发 */ -@property (nonatomic, assign) BOOL withShareTicket; - -/** 分享小程序的版本 - * @attention (正式,开发,体验) - */ -@property (nonatomic, assign) WXMiniProgramType miniProgramType; - -/** 是否禁用转发 */ -@property (nonatomic, assign) BOOL disableForward; - -@property (nonatomic, assign) BOOL isUpdatableMessage; - -@property (nonatomic, assign) BOOL isSecretMessage; - - -/** 业务所需的额外信息 */ -@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; - -@end - -#pragma mark - WXGameLiveObject - -/*! @brief WXGameLiveObject对象 - * - * @note 游戏直播消息类型 - */ - -@interface WXGameLiveObject : NSObject - -+ (WXGameLiveObject *)object; - -/** 业务所需的额外信息 */ -@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; - -@end - -@interface WXNativeGamePageObject : NSObject - -/** 是否为视频类型 - */ -@property (nonatomic, assign) BOOL isVideo; - -/** 视频时长 - @note 当为视频类型时,必填;单位为秒 - */ -@property (nonatomic, assign) UInt32 videoDuration; - -/** 透传字段 - @note 长度限制为100K - */ -@property (nonatomic, copy) NSString *shareData; - -/** 缩略图 - @note 大小限制为256K - */ -@property (nonatomic, strong) NSData *gameThumbData; - -+ (WXNativeGamePageObject *)object; - -@end - -#pragma mark - WXLaunchMiniProgramReq - -/*! @brief WXLaunchMiniProgramReq对象, 可实现通过sdk拉起微信小程序 - * - * @note 返回的WXLaunchMiniProgramReq对象是自动释放的 - */ -@interface WXLaunchMiniProgramReq : BaseReq - -+ (WXLaunchMiniProgramReq *)object; - -/** 小程序username */ -@property (nonatomic, copy) NSString *userName; - -/** 小程序页面的路径 - * @attention 不填默认拉起小程序首页 - */ -@property (nonatomic, copy, nullable) NSString *path; - -/** 分享小程序的版本 - * @attention (正式,开发,体验) - */ -@property (nonatomic, assign) WXMiniProgramType miniProgramType; - -/** ext信息 - * @attention json格式 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; - -/** extDic - * @attention 字典,可存放图片等比较大的数据 - */ -@property (nonatomic, copy, nullable) NSDictionary *extDic; - -@end - -#pragma mark - WXLaunchMiniProgramResp -/*! @brief 微信终端向第三方程序返回的WXLaunchMiniProgramReq处理结果。 - * - * 第三方程序向微信终端发送WXLaunchMiniProgramReq后,微信发送回来的处理结果,该结果用WXLaunchMiniProgramResp表示。 - */ -@interface WXLaunchMiniProgramResp : BaseResp - -@property (nonatomic, copy, nullable) NSString *extMsg; - -@end - - -#pragma mark - WXOpenBusinessViewReq -/*! @brief WXOpenBusinessViewReq对象, 可实现第三方通知微信启动,打开业务页面 - * - * @note 返回的WXOpenBusinessViewReq对象是自动释放的 - */ - -@interface WXOpenBusinessViewReq : BaseReq - -+ (WXOpenBusinessViewReq *)object; - -/** 业务类型 - */ -@property (nonatomic, copy) NSString *businessType; - -/** 业务参数 - */ -@property (nonatomic, copy, nullable) NSString *query; - -/** ext信息 - * @note 选填,json格式 - */ -@property (nonatomic, copy, nullable) NSString *extInfo; - -/** extData数据 - * @note - */ -@property (nonatomic, strong, nullable) NSData *extData; -@end - - -@interface WXOpenBusinessViewResp : BaseResp - -/** 业务类型 - */ -@property (nonatomic, copy) NSString *businessType; - -/** 业务返回数据 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; - -@end - -#pragma mark - WXOpenCustomerServiceReq -@interface WXOpenCustomerServiceReq : BaseReq - -+ (WXOpenCustomerServiceReq *)object; - -/**企微客服发起流程 url - */ -@property (nonatomic, copy, nullable) NSString *url; - -/**企业 id - */ -@property (nonatomic, copy, nullable) NSString *corpid; - -@end - -@interface WXOpenCustomerServiceResp : BaseResp - -/** 业务返回数据 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; - -@end - - -#pragma mark - WXChannelStartLiveReq - -@interface WXChannelStartLiveReq : BaseReq - -+ (WXChannelStartLiveReq *)object; - -/** 必填,直播业务数据(json格式) - */ -@property (nonatomic, copy) NSString *liveJsonInfo; - -@end - -@interface WXChannelStartLiveResp : BaseResp - -/** 业务返回数据 - */ -@property (nonatomic, copy, nullable) NSString *extMsg; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatAuthSDK.h b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatAuthSDK.h deleted file mode 100644 index 308aaea..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatAuthSDK.h +++ /dev/null @@ -1,68 +0,0 @@ -// -// WechatAuthSDK.h -// WechatAuthSDK -// -// Created by 李凯 on 13-11-29. -// Copyright (c) 2013年 Tencent. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -enum AuthErrCode { - WechatAuth_Err_Ok = 0, //Auth成功 - WechatAuth_Err_NormalErr = -1, //普通错误 - WechatAuth_Err_NetworkErr = -2, //网络错误 - WechatAuth_Err_GetQrcodeFailed = -3, //获取二维码失败 - WechatAuth_Err_Cancel = -4, //用户取消授权 - WechatAuth_Err_Timeout = -5, //超时 -}; - -@protocol WechatAuthAPIDelegate -@optional - -- (void)onAuthGotQrcode:(UIImage *)image; //得到二维码 -- (void)onQrcodeScanned; //二维码被扫描 -- (void)onAuthFinish:(int)errCode AuthCode:(nullable NSString *)authCode; //成功登录 - -@end - -@interface WechatAuthSDK : NSObject{ - NSString *_sdkVersion; - __weak id _delegate; -} - -@property(nonatomic, weak, nullable) id delegate; -@property(nonatomic, readonly) NSString *sdkVersion; //authSDK版本号 - -/*! @brief 发送登录请求,等待WechatAuthAPIDelegate回调 - * - * @param appId 微信开发者ID - * @param nonceStr 一个随机的尽量不重复的字符串,用来使得每次的signature不同 - * @param timeStamp 时间戳 - * @param scope 应用授权作用域,拥有多个作用域用逗号(,)分隔 - * @param signature 签名 - * @param schemeData 会在扫码后拼在scheme后 - * @return 成功返回YES,失败返回NO - 注:该实现只保证同时只有一个Auth在运行,Auth未完成或未Stop再次调用Auth接口时会返回NO。 - */ - -- (BOOL)Auth:(NSString *)appId - nonceStr:(NSString *)nonceStr - timeStamp:(NSString *)timeStamp - scope:(NSString *)scope - signature:(NSString *)signature - schemeData:(nullable NSString *)schemeData; - - -/*! @brief 暂停登录请求 - * - * @return 成功返回YES,失败返回NO。 - */ -- (BOOL)StopAuth; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatOpenSDK.h b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatOpenSDK.h deleted file mode 100644 index 979e5e9..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatOpenSDK.h +++ /dev/null @@ -1,9 +0,0 @@ -// WechatOpenSDK.h -// -// Created by Wechat. -// Copyright (c) 2012年 Tencent. All rights reserved. -// -#import -#import -#import - diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Info.plist b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Info.plist deleted file mode 100755 index 45d6068..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Info.plist +++ /dev/null @@ -1,15 +0,0 @@ - - - - CFBundleIdentifier - com.tencent.WechatOpenSDK - CFBundleVersion - 1.0.0 - CFBundleShortVersionString - 1.0 - MinimumOSVersion - 12.0 - CFBundleExecutable - WechatOpenSDK - - \ No newline at end of file diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Modules/module.modulemap b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Modules/module.modulemap deleted file mode 100644 index 3ddbeb0..0000000 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Modules/module.modulemap +++ /dev/null @@ -1,5 +0,0 @@ -framework module WechatOpenSDK { - umbrella header "WechatOpenSDK.h" - export * - link "WechatOpenSDK" -} diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/WechatOpenSDK b/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/WechatOpenSDK deleted file mode 100644 index 2a32d92..0000000 Binary files a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/WechatOpenSDK and /dev/null differ diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/README.txt b/Vendor/WechatSDK/v1.8.2/README.txt old mode 100644 new mode 100755 similarity index 59% rename from Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/README.txt rename to Vendor/WechatSDK/v1.8.2/README.txt index 3f2aab0..915cb4c --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/README.txt +++ b/Vendor/WechatSDK/v1.8.2/README.txt @@ -1,82 +1,4 @@ 重要! -SDK2.0.5 -1. 支持模块化集成​:XCFramework 头文件引用改为标准化格式 #import ,解决路径冲突并支持 Swift/ObjC 混合开发 -2. 修复openWXApp偶现失败的问题 - -SDK2.0.4 -1.增加privacy manifest文件 -2.修复跳微信时可能卡顿的问题 - -SDK2.0.2 -1. 优化XCFramework打包方式 - -SDK2.0.1 -1. SDK支持XCFramework - -SDK2.0.0 -1. 分享能力支持内容防篡改校验 - -SDK1.9.9 -1. 授权登录支持关闭自动授权 -2. 分享支持添加签名,防止篡改 - -SDK1.9.7 -1. 适配CocoaPods - -SDK1.9.6 -1. 适配iOS 16,减少读写剪切板 - -SDK1.9.4 -1. 修复授权登录取消/拒绝时state字段没有带回 - -SDK1.9.3 -1. 新增发起二维码支付能力 - -SDK1.9.2 -1. 新增发起企微客服会话能力 - -SDK1.9.1 -1. 音乐视频分享类型增加运营H5字段 - -SDK1.8.9 -1. 增加音乐视频分享类型 - -SDK1.8.8 -1. 增加游戏直播消息类型 - -SDK1.8.7.1 -1. 修复Xcode11以下编译不通过 - -SDK1.8.7 -1. 修复iPadOS,未安装微信的情况下,因为UA问题无法授权登录 -2. 修复未安装微信的情况下, 适配了UIScene的App因为UIAlertView Crash -3. 增加Universal Link检测函数 - -SDK1.8.6.2 -1. 修改包含"UIWebView"字符的类名 - -SDK1.8.6.1 -1.短信授权登录使用的UIWebview切换成WKWebview - -SDK1.8.6 -1. 支持Universal Link拉起微信以及返回App -2. SDK移除MTA库 - -SDK1.8.5 -1. 更换MTA库:取消对剪切板的访问, 防止和其他SDK竞争导致crash -2. NSMutableArray的MTA分类方法改名,减少命名冲突 -3. 不含支付功能版本移除非税支付和医保支付接口 -4. 分享音乐支持填写歌词和高清封面图 - -SDK1.8.4 -1. 调整分享图片大小限制 -2. 新增openBusinessView接口 - -SDK1.8.3 -1. SDK增加调起微信刷卡支付接口 -2. SDK增加小程序订阅消息接口 -3. 修复小程序订阅消息接口没有resp的问题 - SDK1.8.2 1. SDK增加开发票授权 WXInvoiceAuthInsert 2. SDK增加非税接口 WXNontaxPay diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApi.h b/Vendor/WechatSDK/v1.8.2/WXApi.h old mode 100644 new mode 100755 similarity index 53% rename from Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApi.h rename to Vendor/WechatSDK/v1.8.2/WXApi.h index 879c505..739cbf9 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApi.h +++ b/Vendor/WechatSDK/v1.8.2/WXApi.h @@ -9,11 +9,6 @@ #import #import "WXApiObject.h" -NS_ASSUME_NONNULL_BEGIN - - -typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); - #pragma mark - WXApiDelegate /*! @brief 接收并处理来自微信终端程序的事件消息 @@ -30,7 +25,7 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); * 可能收到的请求有GetMessageFromWXReq、ShowMessageFromWXReq等。 * @param req 具体请求内容,是自动释放的 */ -- (void)onReq:(BaseReq*)req; +-(void) onReq:(BaseReq*)req; @@ -40,18 +35,7 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); * 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。 * @param resp具体的回应内容,是自动释放的 */ -- (void)onResp:(BaseResp*)resp; - -/* ! @brief 用于在iOS16以及以上系统上,控制OpenSDK是否读取剪切板中微信传递的数据以及读取的时机 - * 在iOS16以及以上系统,在SDK需要读取剪切板中微信写入的数据时,会回调该方法。没有实现默认会直接读取微信通过剪切板传递过来的数据 - * 注意: - * 1. 只在iOS16以及以上的系统版本上回调; - * 2. 不实现时,OpenSDK会直接调用读取剪切板接口,读取微信传递过来的数据; - * 3. 若实现该方法:开发者需要通过调用completion(), 支持异步,通知SDK允许读取剪切板中微信传递的数据, - * 不调用completion()则代表不授权OpenSDK读取剪切板,会导致收不到onReq:, onResp:回调,无法后续业务流程。请谨慎使用 - * 4. 不要长时间持有completion不释放,可能会导致内存泄漏。 - */ -- (void)onNeedGrantReadPasteBoardPermissionWithURL:(nonnull NSURL *)openURL completion:(nonnull WXGrantReadPasteBoardPermissionCompletion)completion; +-(void) onResp:(BaseResp*)resp; @end @@ -59,11 +43,10 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); @protocol WXApiLogDelegate -- (void)onLog:(NSString*)log logLevel:(WXLogLevel)level; +-(void) onLog:(NSString*)log logLevel:(WXLogLevel)level; @end - #pragma mark - WXApi /*! @brief 微信Api接口函数类 @@ -74,40 +57,53 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); /*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。 * - * 需要在每次启动第三方应用程序时调用。 + * 需要在每次启动第三方应用程序时调用。第一次调用后,会在微信的可用应用列表中出现,默认开启MTA数据上报。 + * iOS7及以上系统需要调起一次微信才会出现在微信的可用应用列表中。 * @attention 请保证在主线程中调用此函数 * @param appid 微信开发者ID - * @param universalLink 微信开发者Universal Link + * @param typeFlag 应用支持打开的文件类型 * @return 成功返回YES,失败返回NO。 */ -+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink; ++(BOOL) registerApp:(NSString *)appid; + +/*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。 + * + * 需要在每次启动第三方应用程序时调用。第一次调用后,会在微信的可用应用列表中出现。 + * iOS7及以上系统需要调起一次微信才会出现在微信的可用应用列表中。 + * @attention 请保证在主线程中调用此函数 + * @param appid 微信开发者ID + * @param isEnableMTA 是否支持MTA数据上报 + * @return 成功返回YES,失败返回NO。 + */ ++(BOOL) registerApp:(NSString *)appid enableMTA:(BOOL)isEnableMTA; -/*! @brief 处理旧版微信通过URL启动App时传递的数据 +/*! @brief WXApi的成员函数,向微信终端程序注册应用支持打开的文件类型。 + * + * 需要在每次启动第三方应用程序时调用。调用后并第一次成功分享数据到微信后,会在微信的可用应用列表中出现。 + * @see registerApp + * @param typeFlag 应用支持打开的数据类型, enAppSupportContentFlag枚举类型 “|” 操作后结果 + */ ++(void) registerAppSupportContentFlag:(UInt64)typeFlag; + + + +/*! @brief 处理微信通过URL启动App时传递的数据 * * 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。 * @param url 微信启动第三方应用时传递过来的URL * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 * @return 成功返回YES,失败返回NO。 */ -+ (BOOL)handleOpenURL:(NSURL *)url delegate:(nullable id)delegate; ++(BOOL) handleOpenURL:(NSURL *) url delegate:(id) delegate; -/*! @brief 处理微信通过Universal Link启动App时传递的数据 - * - * 需要在 application:continueUserActivity:restorationHandler:中调用。 - * @param userActivity 微信启动第三方应用时系统API传递过来的userActivity - * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 - * @return 成功返回YES,失败返回NO。 - */ -+ (BOOL)handleOpenUniversalLink:(NSUserActivity *)userActivity delegate:(nullable id)delegate; - /*! @brief 检查微信是否已被用户安装 * * @return 微信已安装返回YES,未安装返回NO。 */ -+ (BOOL)isWXAppInstalled; ++(BOOL) isWXAppInstalled; @@ -115,33 +111,15 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); * * @return 支持返回YES,不支持返回NO。 */ -+ (BOOL)isWXAppSupportApi; ++(BOOL) isWXAppSupportApi; -/*! @brief 判断当前微信的版本是否支持分享微信状态功能 - * - * @attention 需在工程LSApplicationQueriesSchemes配置中添加weixinStateAPI - * @return 支持返回YES,不支持返回NO。 - */ -+ (BOOL)isWXAppSupportStateAPI; - - -#ifndef BUILD_WITHOUT_PAY -/*! @brief 判断当前微信的版本是否支持二维码拉起微信支付 - * - * @attention 需在工程LSApplicationQueriesSchemes配置中添加weixinQRCodePayAPI - * @return 支持返回YES,不支持返回NO。 - */ -+ (BOOL)isWXAppSupportQRCodePayAPI; - -#endif - /*! @brief 获取微信的itunes安装地址 * * @return 微信的安装地址字符串。 */ -+ (NSString *)getWXAppInstallUrl; ++(NSString *) getWXAppInstallUrl; @@ -149,7 +127,7 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); * * @return 返回当前微信SDK的版本号 */ -+ (NSString *)getApiVersion; ++(NSString *) getApiVersion; @@ -157,7 +135,7 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); * * @return 成功返回YES,失败返回NO。 */ -+ (BOOL)openWXApp; ++(BOOL) openWXApp; @@ -165,42 +143,30 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); * * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型 * SendAuthReq、SendMessageToWXReq、PayReq等。 - * @param req 具体的发送请求。 - * @param completion 调用结果回调block + * @param req 具体的发送请求,在调用函数后,请自己释放。 + * @return 成功返回YES,失败返回NO。 */ -+ (void)sendReq:(BaseReq *)req completion:(void (^ __nullable)(BOOL success))completion; ++(BOOL) sendReq:(BaseReq*)req; + +/*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp + * + * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。 + * @param req 具体的发送请求,在调用函数后,请自己释放。 + * @param viewController 当前界面对象。 + * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 + * @return 成功返回YES,失败返回NO。 + */ ++(BOOL) sendAuthReq:(SendAuthReq*)req viewController:(UIViewController*)viewController delegate:(id)delegate; + /*! @brief 收到微信onReq的请求,发送对应的应答给微信,并切换到微信界面 * * 函数调用后,会切换到微信的界面。第三方应用程序收到微信onReq的请求,异步处理该请求,完成后必须调用该函数。可能发送的相应有 * GetMessageFromWXResp、ShowMessageFromWXResp等。 - * @param resp 具体的应答内容 - * @param completion 调用结果回调block + * @param resp 具体的应答内容,调用函数后,请自己释放 + * @return 成功返回YES,失败返回NO。 */ -+ (void)sendResp:(BaseResp*)resp completion:(void (^ __nullable)(BOOL success))completion; - - -/*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp - * - * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。 - * @param req 具体的发送请求。 - * @param viewController 当前界面对象。 - * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 - * @param completion 调用结果回调block - */ -+ (void)sendAuthReq:(SendAuthReq *)req viewController:(UIViewController*)viewController delegate:(nullable id)delegate completion:(void (^ __nullable)(BOOL success))completion; - - -/*! @brief 测试函数,用于排查当前App通过Universal Link方式分享到微信的流程 - 注意1: 调用自检函数之前必须要先调用registerApp:universalLink接口, 并确认调用成功 - 注意2: 自检过程中会有Log产生,可以先调用startLogByLevel函数,根据Log排查问题 - 注意3: 会多次回调block - 注意4: 仅用于新接入SDK时调试使用,请勿在正式环境的调用 - * - * 当completion回调的step为WXULCheckStepFinal时,表示检测通过,Universal Link接入成功 - * @param completion 回调Block - */ -+ (void)checkUniversalLinkReady:(nonnull WXCheckULCompletion)completion; ++(BOOL) sendResp:(BaseResp*)resp; /*! @brief WXApi的成员函数,接受微信的log信息。byBlock @@ -210,8 +176,7 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); * @param level 打印log的级别 * @param logBlock 打印log的回调block */ - -+ (void)startLogByLevel:(WXLogLevel)level logBlock:(WXLogBolock)logBlock; ++(void) startLogByLevel:(WXLogLevel)level logBlock:(WXLogBolock)logBlock; /*! @brief WXApi的成员函数,接受微信的log信息。byDelegate 注意1:sdk会弱引用这个delegate,这里可加任意对象为代理,不需要与WXApiDelegate同一个对象 @@ -225,7 +190,4 @@ typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); * @param */ + (void)stopLog; - @end - -NS_ASSUME_NONNULL_END diff --git a/Vendor/WechatSDK/v1.8.2/WXApiObject.h b/Vendor/WechatSDK/v1.8.2/WXApiObject.h new file mode 100755 index 0000000..a6c282a --- /dev/null +++ b/Vendor/WechatSDK/v1.8.2/WXApiObject.h @@ -0,0 +1,914 @@ +// +// MMApiObject.h +// Api对象,包含所有接口和对象数据定义 +// +// Created by Wechat on 12-2-28. +// Copyright (c) 2012年 Tencent. All rights reserved. +// + +#import +#import +/*! @brief 错误码 + * + */ +enum WXErrCode { + WXSuccess = 0, /**< 成功 */ + WXErrCodeCommon = -1, /**< 普通错误类型 */ + WXErrCodeUserCancel = -2, /**< 用户点击取消并返回 */ + WXErrCodeSentFail = -3, /**< 发送失败 */ + WXErrCodeAuthDeny = -4, /**< 授权失败 */ + WXErrCodeUnsupport = -5, /**< 微信不支持 */ +}; + + + +/*! @brief 请求发送场景 + * + */ +enum WXScene { + WXSceneSession = 0, /**< 聊天界面 */ + WXSceneTimeline = 1, /**< 朋友圈 */ + WXSceneFavorite = 2, /**< 收藏 */ +}; + + + +enum WXAPISupport { + WXAPISupportSession = 0, +}; + + + +/*! @brief 跳转profile类型 + * + */ +enum WXBizProfileType{ + WXBizProfileType_Normal = 0, //**< 普通公众号 */ + WXBizProfileType_Device = 1, //**< 硬件公众号 */ +}; + +/*! @brief 分享小程序类型 + * + */ +typedef NS_ENUM(NSUInteger, WXMiniProgramType){ + WXMiniProgramTypeRelease = 0, //**< 正式版 */ + WXMiniProgramTypeTest = 1, //**< 开发版 */ + WXMiniProgramTypePreview = 2, //**< 体验版 */ +}; + +/*! @brief 跳转mp网页类型 + * + */ +enum WXMPWebviewType { + WXMPWebviewType_Ad = 0, /**< 广告网页 **/ +}; + + + +/*! @brief 应用支持接收微信的文件类型 + * + */ +typedef NS_ENUM(UInt64, enAppSupportContentFlag) +{ + MMAPP_SUPPORT_NOCONTENT = 0x0, + MMAPP_SUPPORT_TEXT = 0x1, + MMAPP_SUPPORT_PICTURE = 0x2, + MMAPP_SUPPORT_LOCATION = 0x4, + MMAPP_SUPPORT_VIDEO = 0x8, + MMAPP_SUPPORT_AUDIO = 0x10, + MMAPP_SUPPORT_WEBPAGE = 0x20, + + // Suport File Type + MMAPP_SUPPORT_DOC = 0x40, // doc + MMAPP_SUPPORT_DOCX = 0x80, // docx + MMAPP_SUPPORT_PPT = 0x100, // ppt + MMAPP_SUPPORT_PPTX = 0x200, // pptx + MMAPP_SUPPORT_XLS = 0x400, // xls + MMAPP_SUPPORT_XLSX = 0x800, // xlsx + MMAPP_SUPPORT_PDF = 0x1000, // pdf +}; + +/*! @brief log的级别 + * + */ +typedef NS_ENUM(NSInteger,WXLogLevel){ + WXLogLevelNormal = 0, // 打印日常的日志 + WXLogLevelDetail = 1, // 打印详细的日志 +}; + + +/*! @brief 打印回调的block + * + */ +typedef void(^WXLogBolock)(NSString * log); + +#pragma mark - BaseReq +/*! @brief 该类为微信终端SDK所有请求类的基类 + * + */ +@interface BaseReq : NSObject + +/** 请求类型 */ +@property (nonatomic, assign) int type; +/** 由用户微信号和AppID组成的唯一标识,发送请求时第三方程序必须填写,用于校验微信用户是否换号登录*/ +@property (nonatomic, retain) NSString* openID; + +@end + + + +#pragma mark - BaseResp +/*! @brief 该类为微信终端SDK所有响应类的基类 + * + */ +@interface BaseResp : NSObject +/** 错误码 */ +@property (nonatomic, assign) int errCode; +/** 错误提示字符串 */ +@property (nonatomic, retain) NSString *errStr; +/** 响应类型 */ +@property (nonatomic, assign) int type; + +@end + + + +#pragma mark - WXMediaMessage +@class WXMediaMessage; + +#pragma mark - SendAuthReq +/*! @brief 第三方程序向微信终端请求认证的消息结构 + * + * 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数, + * 向微信终端发送一个SendAuthReq消息结构。微信终端处理完后会向第三方程序发送一个处理结果。 + * @see SendAuthResp + */ +@interface SendAuthReq : BaseReq +/** 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数,向微信终端发送一个SendAuthReq消息结构。微信终端处理完后会向第三方程序发送一个处理结果。 + * @see SendAuthResp + * @note scope字符串长度不能超过1K + */ +@property (nonatomic, retain) NSString* scope; +/** 第三方程序本身用来标识其请求的唯一性,最后跳转回第三方程序时,由微信终端回传。 + * @note state字符串长度不能超过1K + */ +@property (nonatomic, retain) NSString* state; +@end + + + +#pragma mark - SendAuthResp +/*! @brief 微信处理完第三方程序的认证和权限申请后向第三方程序回送的处理结果。 + * + * 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数,向微信终端发送一个SendAuthReq消息结构。 + * 微信终端处理完后会向第三方程序发送一个SendAuthResp。 + * @see onResp + */ +@interface SendAuthResp : BaseResp +@property (nonatomic, retain) NSString* code; +/** 第三方程序发送时用来标识其请求的唯一性的标志,由第三方程序调用sendReq时传入,由微信终端回传 + * @note state字符串长度不能超过1K + */ +@property (nonatomic, retain) NSString* state; +@property (nonatomic, retain) NSString* lang; +@property (nonatomic, retain) NSString* country; +@end + + + +#pragma mark - SendMessageToWXReq +/*! @brief 第三方程序发送消息至微信终端程序的消息结构体 + * + * 第三方程序向微信发送信息需要传入SendMessageToWXReq结构体,信息类型包括文本消息和多媒体消息, + * 分别对应于text和message成员。调用该方法后,微信处理完信息会向第三方程序发送一个处理结果。 + * @see SendMessageToWXResp + */ +@interface SendMessageToWXReq : BaseReq +/** 发送消息的文本内容 + * @note 文本长度必须大于0且小于10K + */ +@property (nonatomic, retain) NSString* text; +/** 发送消息的多媒体内容 + * @see WXMediaMessage + */ +@property (nonatomic, retain) WXMediaMessage* message; +/** 发送消息的类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ +@property (nonatomic, assign) BOOL bText; +/** 发送的目标场景,可以选择发送到会话(WXSceneSession)或者朋友圈(WXSceneTimeline)。 默认发送到会话。 + * @see WXScene + */ +@property (nonatomic, assign) int scene; + +@end + + + +#pragma mark - SendMessageToWXResp +/*! @brief 微信终端向第三方程序返回的SendMessageToWXReq处理结果。 + * + * 第三方程序向微信终端发送SendMessageToWXReq后,微信发送回来的处理结果,该结果用SendMessageToWXResp表示。 + */ +@interface SendMessageToWXResp : BaseResp +@property(nonatomic, retain) NSString* lang; +@property(nonatomic, retain) NSString* country; +@end + + + +#pragma mark - GetMessageFromWXReq +/*! @brief 微信终端向第三方程序请求提供内容的消息结构体。 + * + * 微信终端向第三方程序请求提供内容,微信终端会向第三方程序发送GetMessageFromWXReq消息结构体, + * 需要第三方程序调用sendResp返回一个GetMessageFromWXResp消息结构体。 + */ +@interface GetMessageFromWXReq : BaseReq +@property (nonatomic, retain) NSString* lang; +@property (nonatomic, retain) NSString* country; +@end + + + +#pragma mark - GetMessageFromWXResp +/*! @brief 微信终端向第三方程序请求提供内容,第三方程序向微信终端返回的消息结构体。 + * + * 微信终端向第三方程序请求提供内容,第三方程序调用sendResp向微信终端返回一个GetMessageFromWXResp消息结构体。 + */ +@interface GetMessageFromWXResp : BaseResp +/** 向微信终端提供的文本内容 + @note 文本长度必须大于0且小于10K + */ +@property (nonatomic, retain) NSString* text; +/** 向微信终端提供的多媒体内容。 + * @see WXMediaMessage + */ +@property (nonatomic, retain) WXMediaMessage* message; +/** 向微信终端提供内容的消息类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ +@property (nonatomic, assign) BOOL bText; +@end + + + +#pragma mark - ShowMessageFromWXReq +/*! @brief 微信通知第三方程序,要求第三方程序显示的消息结构体。 + * + * 微信需要通知第三方程序显示或处理某些内容时,会向第三方程序发送ShowMessageFromWXReq消息结构体。 + * 第三方程序处理完内容后调用sendResp向微信终端发送ShowMessageFromWXResp。 + */ +@interface ShowMessageFromWXReq : BaseReq +/** 微信终端向第三方程序发送的要求第三方程序处理的多媒体内容 + * @see WXMediaMessage + */ +@property (nonatomic, retain) WXMediaMessage* message; +@property (nonatomic, retain) NSString* lang; +@property (nonatomic, retain) NSString* country; +@end + + + +#pragma mark - ShowMessageFromWXResp +/*! @brief 微信通知第三方程序,要求第三方程序显示或处理某些消息,第三方程序处理完后向微信终端发送的处理结果。 + * + * 微信需要通知第三方程序显示或处理某些内容时,会向第三方程序发送ShowMessageFromWXReq消息结构体。 + * 第三方程序处理完内容后调用sendResp向微信终端发送ShowMessageFromWXResp。 + */ +@interface ShowMessageFromWXResp : BaseResp +@end + + + +#pragma mark - LaunchFromWXReq +/*! @brief 微信终端打开第三方程序携带的消息结构体 + * + * 微信向第三方发送的结构体,第三方不需要返回 + */ +@interface LaunchFromWXReq : BaseReq +@property (nonatomic, retain) WXMediaMessage* message; +@property (nonatomic, retain) NSString* lang; +@property (nonatomic, retain) NSString* country; +@end + +#pragma mark - OpenTempSessionReq +/* ! @brief 第三方通知微信,打开临时会话 + * + * 第三方通知微信,打开临时会话 + */ +@interface OpenTempSessionReq : BaseReq +/** 需要打开的用户名 + * @attention 长度不能超过512字节 + */ +@property (nonatomic, retain) NSString* username; +/** 开发者自定义参数,拉起临时会话后会发给开发者后台,可以用于识别场景 + * @attention 长度不能超过32位 + */ +@property (nonatomic, retain) NSString* sessionFrom; +@end + +#pragma mark - OpenTempSessionResp +/*! @brief 微信终端向第三方程序返回的OpenTempSessionReq处理结果。 + * + * 第三方程序向微信终端发送OpenTempSessionReq后,微信发送回来的处理结果,该结果用OpenTempSessionResp表示。 + */ +@interface OpenTempSessionResp : BaseResp + +@end + +#pragma mark - OpenWebviewReq +/* ! @brief 第三方通知微信启动内部浏览器,打开指定网页 + * + * 第三方通知微信启动内部浏览器,打开指定Url对应的网页 + */ +@interface OpenWebviewReq : BaseReq +/** 需要打开的网页对应的Url + * @attention 长度不能超过1024 + */ +@property(nonatomic,retain)NSString* url; + +@end + +#pragma mark - OpenWebviewResp +/*! @brief 微信终端向第三方程序返回的OpenWebviewReq处理结果 + * + * 第三方程序向微信终端发送OpenWebviewReq后,微信发送回来的处理结果,该结果用OpenWebviewResp表示 + */ +@interface OpenWebviewResp : BaseResp + +@end + +#pragma mark - OpenRankListReq +/* ! @brief 第三方通知微信,打开硬件排行榜 + * + * 第三方通知微信,打开硬件排行榜 + */ +@interface OpenRankListReq : BaseReq + +@end + +#pragma mark - OpenRanklistResp +/*! @brief 微信终端向第三方程序返回的OpenRankListReq处理结果。 + * + * 第三方程序向微信终端发送OpenRankListReq后,微信发送回来的处理结果,该结果用OpenRankListResp表示。 + */ +@interface OpenRankListResp : BaseResp + +@end + +#pragma mark - JumpToBizProfileReq +/* ! @brief 第三方通知微信,打开指定微信号profile页面 + * + * 第三方通知微信,打开指定微信号profile页面 + */ +@interface JumpToBizProfileReq : BaseReq +/** 跳转到该公众号的profile + * @attention 长度不能超过512字节 + */ +@property (nonatomic, retain) NSString* username; +/** 如果用户加了该公众号为好友,extMsg会上传到服务器 + * @attention 长度不能超过1024字节 + */ +@property (nonatomic, retain) NSString* extMsg; +/** + * 跳转的公众号类型 + * @see WXBizProfileType + */ +@property (nonatomic, assign) int profileType; +@end + + + +#pragma mark - JumpToBizWebviewReq +/* ! @brief 第三方通知微信,打开指定usrname的profile网页版 + * + */ +@interface JumpToBizWebviewReq : BaseReq +/** 跳转的网页类型,目前只支持广告页 + * @see WXMPWebviewType + */ +@property(nonatomic, assign) int webType; +/** 跳转到该公众号的profile网页版 + * @attention 长度不能超过512字节 + */ +@property(nonatomic, retain) NSString* tousrname; +/** 如果用户加了该公众号为好友,extMsg会上传到服务器 + * @attention 长度不能超过1024字节 + */ +@property(nonatomic, retain) NSString* extMsg; + +@end + +#pragma mark - WXCardItem + +@interface WXCardItem : NSObject +/** 卡id + * @attention 长度不能超过1024字节 + */ +@property (nonatomic,retain) NSString* cardId; +/** ext信息 + * @attention 长度不能超过2024字节 + */ +@property (nonatomic,retain) NSString* extMsg; +/** + * @attention 卡的状态,req不需要填。resp:0为未添加,1为已添加。 + */ +@property (nonatomic,assign) UInt32 cardState; +/** + * @attention req不需要填,chooseCard返回的。 + */ +@property (nonatomic,retain) NSString* encryptCode; +/** + * @attention req不需要填,chooseCard返回的。 + */ +@property (nonatomic,retain) NSString* appID; +@end; + +#pragma mark - WXInvoiceItem + +@interface WXInvoiceItem : NSObject +/** 卡id + * @attention 长度不能超过1024字节 + */ +@property (nonatomic,retain) NSString* cardId; +/** ext信息 + * @attention 长度不能超过2024字节 + */ +@property (nonatomic,retain) NSString* extMsg; +/** + * @attention 卡的状态,req不需要填。resp:0为未添加,1为已添加。 + */ +@property (nonatomic,assign) UInt32 cardState; +/** + * @attention req不需要填,chooseCard返回的。 + */ +@property (nonatomic,retain) NSString* encryptCode; +/** + * @attention req不需要填,chooseCard返回的。 + */ +@property (nonatomic,retain) NSString* appID; + +@end + +#pragma mark - AddCardToWXCardPackageReq +/* ! @brief 请求添加卡券至微信卡包 + * + */ + +@interface AddCardToWXCardPackageReq : BaseReq +/** 卡列表 + * @attention 个数不能超过40个 类型WXCardItem + */ +@property (nonatomic,retain) NSArray* cardAry; + +@end + + +#pragma mark - AddCardToWXCardPackageResp +/** ! @brief 微信返回第三方添加卡券结果 + * + */ + +@interface AddCardToWXCardPackageResp : BaseResp +/** 卡列表 + * @attention 个数不能超过40个 类型WXCardItem + */ +@property (nonatomic,retain) NSArray* cardAry; +@end + +#pragma mark - WXChooseCardReq +/* ! @brief 请求从微信选取卡券 + * + */ + +@interface WXChooseCardReq : BaseReq +@property(nonatomic, strong) NSString *appID; +@property(nonatomic, assign) UInt32 shopID; +@property(nonatomic, assign) UInt32 canMultiSelect; +@property(nonatomic, strong) NSString *cardType; +@property(nonatomic, strong) NSString *cardTpID; +@property(nonatomic, strong) NSString *signType; +@property(nonatomic, strong) NSString *cardSign; +@property(nonatomic, assign) UInt32 timeStamp; +@property(nonatomic, strong) NSString *nonceStr; +@end + + +#pragma mark - WXChooseCardResp +/** ! @brief 微信返回第三方请求选择卡券结果 + * + */ + +@interface WXChooseCardResp : BaseResp +@property (nonatomic,retain) NSArray* cardAry; +@end + + +#pragma mark - WXChooseInvoiceReq +/* ! @brief 请求从微信选取发票 + * + */ +@interface WXChooseInvoiceReq : BaseReq +@property (nonatomic, strong) NSString *appID; +@property (nonatomic, assign) UInt32 shopID; +@property (nonatomic, strong) NSString *signType; +@property (nonatomic, strong) NSString *cardSign; +@property (nonatomic, assign) UInt32 timeStamp; +@property (nonatomic, strong) NSString *nonceStr; +@end + +#pragma mark - WXChooseInvoiceResp +/** ! @brief 微信返回第三方请求选择发票结果 + * + */ +@interface WXChooseInvoiceResp : BaseResp +@property (nonatomic, strong) NSArray* cardAry; +@end + +#pragma mark - WXSubscriptionReq +@interface WXSubscribeMsgReq : BaseReq +@property (nonatomic, assign) UInt32 scene; +@property (nonatomic, strong) NSString * templateId; +@property (nonatomic, strong) NSString * reserved; +@end + +#pragma mark - WXSubscriptionReq +@interface WXSubscribeMsgResp : BaseResp + +@property (nonatomic, strong) NSString *templateId; +@property (nonatomic, assign) UInt32 scene; +@property (nonatomic, strong) NSString *action; +@property (nonatomic, strong) NSString * reserved; +@property (nonatomic, strong) NSString * openId; + +@end + +#pragma mark - WXinvoiceAuthInsertReq +@interface WXInvoiceAuthInsertReq : BaseReq + +@property (nonatomic, strong) NSString *urlString; + +@end + +#pragma mark - WXinvoiceAuthInsertResp + +@interface WXInvoiceAuthInsertResp : BaseResp + +@property (nonatomic, strong) NSString * wxOrderId; + +@end + +#pragma mark - WXNontaxPayReq +@interface WXNontaxPayReq:BaseReq + +@property (nonatomic, strong) NSString *urlString; + +@end + +#pragma mark - WXNontaxPayResp +@interface WXNontaxPayResp : BaseResp + +@property (nonatomic, strong) NSString *wxOrderId; + +@end + +#pragma mark - WXPayInsuranceReq +@interface WXPayInsuranceReq : BaseReq + +@property (nonatomic, strong) NSString *urlString; + +@end + +#pragma mark - WXPayInsuranceResp +@interface WXPayInsuranceResp : BaseResp + +@property (nonatomic, strong) NSString *wxOrderId; + +@end + +#pragma mark - WXMediaMessage + + +#pragma mark - WXMediaMessage + +/*! @brief 多媒体消息结构体 + * + * 用于微信终端和第三方程序之间传递消息的多媒体消息内容 + */ +@interface WXMediaMessage : NSObject + ++(WXMediaMessage *) message; + +/** 标题 + * @note 长度不能超过512字节 + */ +@property (nonatomic, retain) NSString *title; +/** 描述内容 + * @note 长度不能超过1K + */ +@property (nonatomic, retain) NSString *description; +/** 缩略图数据 + * @note 大小不能超过32K + */ +@property (nonatomic, retain) NSData *thumbData; +/** + * @note 长度不能超过64字节 + */ +@property (nonatomic, retain) NSString *mediaTagName; +/** + * + */ +@property (nonatomic, retain) NSString *messageExt; +@property (nonatomic, retain) NSString *messageAction; +/** + * 多媒体数据对象,可以为WXImageObject,WXMusicObject,WXVideoObject,WXWebpageObject等。 + */ +@property (nonatomic, retain) id mediaObject; + +/*! @brief 设置消息缩略图的方法 + * + * @param image 缩略图 + * @note 大小不能超过32K + */ +- (void) setThumbImage:(UIImage *)image; + +@end + + + +#pragma mark - WXImageObject +/*! @brief 多媒体消息中包含的图片数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的图片数据对象。 + * @note imageData成员不能为空 + * @see WXMediaMessage + */ +@interface WXImageObject : NSObject +/*! @brief 返回一个WXImageObject对象 + * + * @note 返回的WXImageObject对象是自动释放的 + */ ++(WXImageObject *) object; + +/** 图片真实数据内容 + * @note 大小不能超过10M + */ +@property (nonatomic, retain) NSData *imageData; + +@end + + +#pragma mark - WXMusicObject +/*! @brief 多媒体消息中包含的音乐数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的音乐数据对象。 + * @note musicUrl和musicLowBandUrl成员不能同时为空。 + * @see WXMediaMessage + */ +@interface WXMusicObject : NSObject +/*! @brief 返回一个WXMusicObject对象 + * + * @note 返回的WXMusicObject对象是自动释放的 + */ ++(WXMusicObject *) object; + +/** 音乐网页的url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, retain) NSString *musicUrl; +/** 音乐lowband网页的url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, retain) NSString *musicLowBandUrl; +/** 音乐数据url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, retain) NSString *musicDataUrl; + +/**音乐lowband数据url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, retain) NSString *musicLowBandDataUrl; + +@end + + + +#pragma mark - WXVideoObject +/*! @brief 多媒体消息中包含的视频数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的视频数据对象。 + * @note videoUrl和videoLowBandUrl不能同时为空。 + * @see WXMediaMessage + */ +@interface WXVideoObject : NSObject +/*! @brief 返回一个WXVideoObject对象 + * + * @note 返回的WXVideoObject对象是自动释放的 + */ ++(WXVideoObject *) object; + +/** 视频网页的url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, retain) NSString *videoUrl; +/** 视频lowband网页的url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, retain) NSString *videoLowBandUrl; + +@end + + + +#pragma mark - WXWebpageObject +/*! @brief 多媒体消息中包含的网页数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的网页数据对象。 + * @see WXMediaMessage + */ +@interface WXWebpageObject : NSObject +/*! @brief 返回一个WXWebpageObject对象 + * + * @note 返回的WXWebpageObject对象是自动释放的 + */ ++(WXWebpageObject *) object; + +/** 网页的url地址 + * @note 不能为空且长度不能超过10K + */ +@property (nonatomic, retain) NSString *webpageUrl; + +@end + + + +#pragma mark - WXAppExtendObject +/*! @brief 多媒体消息中包含的App扩展数据对象 + * + * 第三方程序向微信终端发送包含WXAppExtendObject的多媒体消息, + * 微信需要处理该消息时,会调用该第三方程序来处理多媒体消息内容。 + * @note url,extInfo和fileData不能同时为空 + * @see WXMediaMessage + */ +@interface WXAppExtendObject : NSObject +/*! @brief 返回一个WXAppExtendObject对象 + * + * @note 返回的WXAppExtendObject对象是自动释放的 + */ ++(WXAppExtendObject *) object; + +/** 若第三方程序不存在,微信终端会打开该url所指的App下载地址 + * @note 长度不能超过10K + */ +@property (nonatomic, retain) NSString *url; +/** 第三方程序自定义简单数据,微信终端会回传给第三方程序处理 + * @note 长度不能超过2K + */ +@property (nonatomic, retain) NSString *extInfo; +/** App文件数据,该数据发送给微信好友,微信好友需要点击后下载数据,微信终端会回传给第三方程序处理 + * @note 大小不能超过10M + */ +@property (nonatomic, retain) NSData *fileData; + +@end + + + +#pragma mark - WXEmoticonObject +/*! @brief 多媒体消息中包含的表情数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的表情数据对象。 + * @see WXMediaMessage + */ +@interface WXEmoticonObject : NSObject + +/*! @brief 返回一个WXEmoticonObject对象 + * + * @note 返回的WXEmoticonObject对象是自动释放的 + */ ++(WXEmoticonObject *) object; + +/** 表情真实数据内容 + * @note 大小不能超过10M + */ +@property (nonatomic, retain) NSData *emoticonData; + +@end + + + +#pragma mark - WXFileObject +/*! @brief 多媒体消息中包含的文件数据对象 + * + * @see WXMediaMessage + */ +@interface WXFileObject : NSObject + +/*! @brief 返回一个WXFileObject对象 + * + * @note 返回的WXFileObject对象是自动释放的 + */ ++(WXFileObject *) object; + +/** 文件后缀名 + * @note 长度不超过64字节 + */ +@property (nonatomic, retain) NSString *fileExtension; + +/** 文件真实数据内容 + * @note 大小不能超过10M + */ +@property (nonatomic, retain) NSData *fileData; + +@end + + +#pragma mark - WXLocationObject +/*! @brief 多媒体消息中包含的地理位置数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的地理位置数据对象。 + * @see WXMediaMessage + */ +@interface WXLocationObject : NSObject + +/*! @brief 返回一个WXLocationObject对象 + * + * @note 返回的WXLocationObject对象是自动释放的 + */ ++(WXLocationObject *) object; + +/** 地理位置信息 + * @note 经纬度 + */ +@property (nonatomic, assign) double lng; //经度 +@property (nonatomic, assign) double lat; //纬度 + +@end + +@interface WXMiniProgramObject : NSObject + +/*! @brief WXMiniProgramObject对象 + * + * @note 返回的WXMiniProgramObject对象是自动释放的 + */ ++(WXMiniProgramObject *) object; + +@property (nonatomic, strong) NSString *webpageUrl; //低版本网页链接 + +@property (nonatomic, strong) NSString *userName; //小程序username + +@property (nonatomic, strong) NSString *path; //小程序页面的路径 + +@property (nonatomic, strong) NSData *hdImageData; // 小程序新版本的预览图 128k + +@property (nonatomic, assign) BOOL withShareTicket; //是否使用带 shareTicket 的转发 + +@property (nonatomic, assign) WXMiniProgramType miniProgramType; // 分享小程序的版本(正式,开发,体验) + +@end + +#pragma mark - WXLaunchMiniProgramReq + +/*! @brief WXLaunchMiniProgramReq对象, 可实现通过sdk拉起微信小程序 + * + * @note 返回的WXLaunchMiniProgramReq对象是自动释放的 + */ +@interface WXLaunchMiniProgramReq : BaseReq + ++(WXLaunchMiniProgramReq *) object; + +@property (nonatomic, strong) NSString *userName; //拉起的小程序的username +@property (nonatomic, strong) NSString *path; //拉起小程序页面的路径,不填默认拉起小程序首页 +@property (nonatomic, assign) WXMiniProgramType miniProgramType; //拉起小程序的类型 + +@end + +#pragma mark - WXLaunchMiniProgramResp +/*! @brief 微信终端向第三方程序返回的WXLaunchMiniProgramReq处理结果。 + * + * 第三方程序向微信终端发送WXLaunchMiniProgramReq后,微信发送回来的处理结果,该结果用WXLaunchMiniProgramResp表示。 + */ +@interface WXLaunchMiniProgramResp : BaseResp + +@property (nonatomic, retain) NSString *extMsg; + +@end + + +#pragma mark - WXTextObject +/*! @brief 多媒体消息中包含的文本数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的文本数据对象。 + * @see WXMediaMessage + */ +@interface WXTextObject : NSObject + +/*! @brief 返回一个WXTextObject对象 + * + * @note 返回的WXTextObject对象是自动释放的 + */ ++(WXTextObject *) object; + +/** 地理位置信息 + * @note 文本内容 + */ +@property (nonatomic, retain) NSString *contentText; + +@end diff --git a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h b/Vendor/WechatSDK/v1.8.2/WechatAuthSDK.h old mode 100644 new mode 100755 similarity index 85% rename from Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h rename to Vendor/WechatSDK/v1.8.2/WechatAuthSDK.h index 308aaea..076b1d7 --- a/Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h +++ b/Vendor/WechatSDK/v1.8.2/WechatAuthSDK.h @@ -9,8 +9,6 @@ #import #import -NS_ASSUME_NONNULL_BEGIN - enum AuthErrCode { WechatAuth_Err_Ok = 0, //Auth成功 WechatAuth_Err_NormalErr = -1, //普通错误 @@ -25,7 +23,7 @@ enum AuthErrCode { - (void)onAuthGotQrcode:(UIImage *)image; //得到二维码 - (void)onQrcodeScanned; //二维码被扫描 -- (void)onAuthFinish:(int)errCode AuthCode:(nullable NSString *)authCode; //成功登录 +- (void)onAuthFinish:(int)errCode AuthCode:(NSString *)authCode; //成功登录 @end @@ -34,7 +32,7 @@ enum AuthErrCode { __weak id _delegate; } -@property(nonatomic, weak, nullable) id delegate; +@property(nonatomic, weak) id delegate; @property(nonatomic, readonly) NSString *sdkVersion; //authSDK版本号 /*! @brief 发送登录请求,等待WechatAuthAPIDelegate回调 @@ -51,10 +49,10 @@ enum AuthErrCode { - (BOOL)Auth:(NSString *)appId nonceStr:(NSString *)nonceStr - timeStamp:(NSString *)timeStamp + timeStamp:(NSString*)timeStamp scope:(NSString *)scope signature:(NSString *)signature - schemeData:(nullable NSString *)schemeData; + schemeData:(NSString *)schemeData; /*! @brief 暂停登录请求 @@ -64,5 +62,3 @@ enum AuthErrCode { - (BOOL)StopAuth; @end - -NS_ASSUME_NONNULL_END diff --git a/docs/SDK-Integration-Guide.md b/docs/SDK-Integration-Guide.md index b9d262e..5703ee4 100644 --- a/docs/SDK-Integration-Guide.md +++ b/docs/SDK-Integration-Guide.md @@ -18,17 +18,23 @@ > > 这 3 件事都是 Xcode UI 操作,无法 AI 自动完成。完成后 `BuildProject` 即激活所有真实路径。 -### A.1 添加微信 OpenSDK(Vendor 手动) +### A.1 添加微信 OpenSDK 1.8.2(Vendor 手动,与 daoqi msext 同款) -> Tencent 官方至今未维护 SPM 仓库(`Tencent/WechatOpenSDK-XCFramework` 不存在,404);社区 wrapper(yanyin1986 / anotheren)非官方,被否决。改走 Vendor `.xcframework`,与 AMap 同款处置方式。 +> **改用 1.8.2 的原因**:2.0.x 强制 Universal Link(HTTPS 域名 + AASA + 微信开放平台后台审核),运维负担大;daoqi msext 多年 1.8.2 上线稳定,沿用避免无谓改造。详见 `Vendor/WechatSDK/README.md`。 +> +> SDK 已入库 `Vendor/WechatSDK/v1.8.2/`(4 个文件 + README,从 daoqi 同步),无需额外下载。 -**预先准备**:从腾讯开放平台下载 `OpenSDK*_NoPay.zip`(推荐 2.0.5+),解压取出 `WechatOpenSDK.xcframework`,放到 `Vendor/WechatSDK/`。下载页与详细说明见 `Vendor/WechatSDK/README.md`。 - -1. 选中 `ylgamehall` Target → General → Frameworks, Libraries, and Embedded Content -2. 点 `+` → Add Other → Add Files -3. 选 `Vendor/WechatSDK/WechatOpenSDK.xcframework` -4. **Embed** 列选 **Embed & Sign**(xcframework 是动态库,与下面 AMap 的 `Do Not Embed` 不同,别错) -5. ⌘B 编译 +1. **删除(如有)2.0.5 xcframework**:Target → General → Frameworks → 选 `WechatOpenSDK-NoPay.xcframework` 点 `-` 删除(文件已从 git 移除) +2. **加 libWeChatSDK.a**:点 `+` → Add Other → Add Files → 选 `Vendor/WechatSDK/v1.8.2/libWeChatSDK.a` → **Do Not Embed**(静态库不能 embed) +3. **加 4 个 1.x 依赖系统库**:同位置 `+` 搜索后逐个加(均 Do Not Embed): + - `libz.tbd` + - `libsqlite3.tbd` + - `Security.framework` + - `CFNetwork.framework` +4. **配置 Build Settings**: + - Header Search Paths += `$(PROJECT_DIR)/Vendor/WechatSDK/v1.8.2` + - Objective-C Bridging Header = `ylgamehall/ylgamehall-Bridging-Header.h` +5. ⌘B 编译 — **target 必须选真机**或 Generic iOS Device,fat 库不含 ios-arm64-simulator,M Mac 模拟器链接会失败(与 AMap 同款已接受现状) ### A.2 添加高德定位 framework × 2(Vendor 手动,无 SPM 替代) diff --git a/ylgamehall/Source/Bridge/Handlers/AccreditLoginHandler.swift b/ylgamehall/Source/Bridge/Handlers/AccreditLoginHandler.swift index da557d8..3b62d55 100644 --- a/ylgamehall/Source/Bridge/Handlers/AccreditLoginHandler.swift +++ b/ylgamehall/Source/Bridge/Handlers/AccreditLoginHandler.swift @@ -24,11 +24,8 @@ public enum AccreditLoginHandler { print("[Bridge] accreditlogin H5 调用命中 ✅") callback?(.string("Response from accreditlogin")) - #if canImport(WechatOpenSDK) - print("[Bridge] accreditlogin → canImport(WechatOpenSDK)=true,启动 Task") - // SDK 已链接:拉起微信授权 → 拿 7 字段 → 反向 callback sharelogin + // 拉起微信授权 → 拿 7 字段 → 反向 callback sharelogin Task { @MainActor in - print("[Bridge] accreditlogin Task @MainActor 开始执行 WeChatAuth.authorize()") do { let user = try await WeChatAuth.authorize() print("[Bridge] accreditlogin 拿到 user,发 sharelogin 反向 callback") @@ -48,12 +45,8 @@ public enum AccreditLoginHandler { } catch { print("[Bridge] accreditlogin 失败:\(error)") // 其它失败也吞下(msext 同款乐观策略:不反向通知 H5) - // 后续 Phase 9 监控接入后此处可发 Sentry breadcrumb } } - #else - print("[Bridge] accreditlogin → ⚠️ canImport(WechatOpenSDK)=false,SDK 未链接,仅 stub") - #endif } } } diff --git a/ylgamehall/Source/Bridge/Handlers/BackGameDataHandler.swift b/ylgamehall/Source/Bridge/Handlers/BackGameDataHandler.swift index 16b3194..a15a479 100644 --- a/ylgamehall/Source/Bridge/Handlers/BackGameDataHandler.swift +++ b/ylgamehall/Source/Bridge/Handlers/BackGameDataHandler.swift @@ -49,10 +49,11 @@ public enum BackGameDataHandler { // 后台任务残留),与 msext gameController.m:691-709 + cleanUpAction 等价。 AudioPlayer.shared.stopAllBackground() - // 微信 SDK 新版(2.x)delegate 由 handleOpenURL: / sendAuthReq:...:delegate: - // 逐次调用时传入并被 SDK 弱引用,无 static delegate 可清。WeChatManager + // 微信 SDK 1.8.2 delegate 通过 sendAuthReq:viewController:delegate: 或 + // handleOpenURL:delegate: 逐次调用时传入并被 SDK 弱引用。WeChatManager // 作为 shared singleton 长生命周期持有,子游戏 pop 不会让它析构,无悬挂回调风险。 - // 旧 msext gameController.m:699 的 [WXApi setDelegate:nil] 是 1.x SDK API,新版已删除。 + // msext gameController.m:699 的 [WXApi setDelegate:nil] 是 1.x 早期 API, + // 1.8.x 之后已废弃,不需要清理。 #if canImport(AMapLocationKit) // msext gameController.m:2473-2478 cleanUpAction 等价 diff --git a/ylgamehall/Source/SDK/WeChat/WeChatManager.swift b/ylgamehall/Source/SDK/WeChat/WeChatManager.swift index a5897a9..dcbcee3 100644 --- a/ylgamehall/Source/SDK/WeChat/WeChatManager.swift +++ b/ylgamehall/Source/SDK/WeChat/WeChatManager.swift @@ -11,9 +11,7 @@ import Foundation import UIKit -#if canImport(WechatOpenSDK) -import WechatOpenSDK -#endif +// 微信 SDK 1.8.2(与 daoqi msext 同款)通过 Bridging Header 导入,无需 import 语句 @MainActor public final class WeChatManager: NSObject { @@ -41,10 +39,9 @@ public final class WeChatManager: NSObject { /// openURL 路径解耦,授权回包独立由 SDK 直接派给 delegate) /// 旧版 1.x 的 `WXApi.send(req)` 已 deprecated,不传 vc/delegate 会导致 H5 调了无反应。 public func authorize() async throws -> WXAuthCodePayload { - #if canImport(WechatOpenSDK) print("[WeChat] authorize() 开始") print("[WeChat] - WXApi.isWXAppInstalled = \(WXApi.isWXAppInstalled())") - print("[WeChat] - WXApi.getVersion = \(WXApi.getVersion() ?? "nil")") + print("[WeChat] - WXApi.getApiVersion = \(WXApi.getApiVersion() ?? "nil")") let state = UUID().uuidString return try await withCheckedThrowingContinuation { cont in authPending[state] = cont @@ -59,23 +56,16 @@ public final class WeChatManager: NSObject { return } print("[WeChat] 调 sendAuthReq vc=\(type(of: vc)) scope=\(Self.authScope) state=\(state)") - WXApi.sendAuthReq(req, viewController: vc, delegate: self) { [weak self] success in - print("[WeChat] sendAuthReq completion success=\(success)") - // success = SDK 是否成功拉起微信 app;失败立刻 fail(如微信未安装、 - // URL Scheme 未配置等)。成功后真实回包由 onResp 路径处理。 - guard !success else { return } - Task { @MainActor in - guard let self else { return } - if let pending = self.authPending.removeValue(forKey: state) { - pending.resume(throwing: WeChatError.authFailed(-3)) - } + // 1.x 的 sendAuthReq 返回 BOOL(同步知道是否成功拉起),无 completion + let success = WXApi.sendAuthReq(req, viewController: vc, delegate: self) + print("[WeChat] sendAuthReq 返回 success=\(success)") + if !success { + if let pending = authPending.removeValue(forKey: state) { + pending.resume(throwing: WeChatError.authFailed(-3)) } } + // success=true 时等 WXApiDelegate.onResp 触发(SceneDelegate openURL 链路) } - #else - print("[WeChat] ⚠️ canImport(WechatOpenSDK)=false") - throw WeChatError.sdkNotLinked - #endif } /// 取当前最顶层 ViewController(含 presented / nav.visible),供微信 SDK 作为 @@ -133,7 +123,6 @@ public final class WeChatManager: NSObject { /// 链接分享(FIFO 串行)。微信回包不携带配对 ID,连续调时按入队顺序消费。 public func shareLink(_ link: ShareLink, scene: ShareScene) async throws { - #if canImport(WechatOpenSDK) try await withCheckedThrowingContinuation { (cont: CheckedContinuation) in sharePending.append(cont) @@ -152,22 +141,15 @@ public final class WeChatManager: NSObject { case .session: req.scene = Int32(WXSceneSession.rawValue) case .timeline: req.scene = Int32(WXSceneTimeline.rawValue) } - // 分享回包路径:用户在微信操作后由 SceneDelegate.openURLContexts → - // WXApi.handleOpen(url:delegate:WeChatManager.shared) → onResp 到达, - // 故 sendReq 这里不需要再传 delegate;completion=nil 让拉起失败时 - // 不打扰 sharePending 队列(队列由 onResp 的 FIFO 消费)。 - // 新版 SDK 2.x `sendReq:completion:` 替代旧 `send:`(后者 deprecated)。 - WXApi.send(req, completion: nil) + // 1.x: sendReq BOOL 返回;分享回包通过 SceneDelegate.openURLContexts → + // WXApi.handleOpen(url:delegate:WeChatManager.shared) → onResp 路径到达。 + WXApi.sendReq(req) } - #else - throw WeChatError.sdkNotLinked - #endif } /// 图片分享(FIFO 串行,复用 sharePending)。msext gameController.m:637-678 /// type=2 截图 / type=其它 远端图 共用同一条 WXImageObject + setThumbImage 路径。 public func shareImage(_ img: ShareImage, scene: ShareScene) async throws { - #if canImport(WechatOpenSDK) try await withCheckedThrowingContinuation { (cont: CheckedContinuation) in sharePending.append(cont) @@ -186,16 +168,8 @@ public final class WeChatManager: NSObject { case .session: req.scene = Int32(WXSceneSession.rawValue) case .timeline: req.scene = Int32(WXSceneTimeline.rawValue) } - // 分享回包路径:用户在微信操作后由 SceneDelegate.openURLContexts → - // WXApi.handleOpen(url:delegate:WeChatManager.shared) → onResp 到达, - // 故 sendReq 这里不需要再传 delegate;completion=nil 让拉起失败时 - // 不打扰 sharePending 队列(队列由 onResp 的 FIFO 消费)。 - // 新版 SDK 2.x `sendReq:completion:` 替代旧 `send:`(后者 deprecated)。 - WXApi.send(req, completion: nil) + WXApi.sendReq(req) } - #else - throw WeChatError.sdkNotLinked - #endif } // MARK: - Internal: resolve callbacks @@ -222,7 +196,6 @@ public final class WeChatManager: NSObject { // MARK: - WXApiDelegate -#if canImport(WechatOpenSDK) extension WeChatManager: WXApiDelegate { public nonisolated func onReq(_ req: BaseReq) { @@ -245,9 +218,8 @@ extension WeChatManager: WXApiDelegate { } } } -#endif -// MARK: - Public payload / error types(无 SDK 依赖,可在 canImport 之外使用) +// MARK: - Public payload / error types public struct WXAuthCodePayload: Sendable { public let code: String diff --git a/ylgamehall/Source/SDK/WeChat/WeChatSDK.swift b/ylgamehall/Source/SDK/WeChat/WeChatSDK.swift index 459cec7..6923704 100644 --- a/ylgamehall/Source/SDK/WeChat/WeChatSDK.swift +++ b/ylgamehall/Source/SDK/WeChat/WeChatSDK.swift @@ -2,18 +2,15 @@ // WeChatSDK.swift // ylgamehall // -// 微信 OpenSDK 启动注册。沿用 msext AppID(参 docs/SDK-Integration-Guide.md §0 凭证总表)。 +// 微信 OpenSDK 1.8.2 启动注册(与 daoqi msext 同款,避免 2.x 强制 +// Universal Link 的运维负担:HTTPS 域名 + AASA + 微信开放平台后台审核)。 // -// ⚠️ canImport(WechatOpenSDK) 守卫:在 Vendor/WechatSDK/WechatOpenSDK.xcframework -// 尚未在 Xcode 中 "Frameworks, Libraries, and Embedded Content" 里 Embed & Sign 之前, -// 本文件编译为 no-op,不影响主工程编译。Embed 后自动激活真实路径。 +// 通过 Bridging Header 导入 ObjC 头(1.x .a 静态库无 Swift module), +// 详见 ylgamehall-Bridging-Header.h。 // import Foundation - -#if canImport(WechatOpenSDK) -import WechatOpenSDK -#endif +import UIKit @MainActor public enum WeChatSDK { @@ -22,22 +19,13 @@ public enum WeChatSDK { public static let appID = "wx586a9b321e56efb7" /// 启动注册:在 AppDelegate.didFinishLaunchingWithOptions 调用一次。 - /// universalLink 沿用 msext 路径不走 ULAPI,传空字符串即可(与 msext 行为等价)。 + /// 1.x 单参数 registerApp,不需要 Universal Link。 public static func register() { - #if canImport(WechatOpenSDK) - // 不走 Universal Links(msext 同款路径,企业签 / 超签分发场景 ULAPI 无意义) - WXApi.registerApp(appID, universalLink: "") - #else - // SDK 未链接:no-op。Xcode 加完 framework 后这条分支会被替换为上面 WXApi 调用。 - #endif + WXApi.registerApp(appID) } - /// SceneDelegate.openURLContexts 转发入口(QQ → WXApi 顺序,QQ 必须先判 — msext 硬约束) + /// SceneDelegate.openURLContexts 转发入口。 public static func handleOpenURL(_ url: URL) -> Bool { - #if canImport(WechatOpenSDK) - return WXApi.handleOpen(url, delegate: WeChatManager.shared) - #else - return false - #endif + WXApi.handleOpen(url, delegate: WeChatManager.shared) } } diff --git a/ylgamehall/Source/Share/WechatShare.swift b/ylgamehall/Source/Share/WechatShare.swift index 2c6d68a..7f718e2 100644 --- a/ylgamehall/Source/Share/WechatShare.swift +++ b/ylgamehall/Source/Share/WechatShare.swift @@ -11,9 +11,7 @@ import Foundation import UIKit -#if canImport(WechatOpenSDK) -import WechatOpenSDK -#endif +// 微信 SDK 1.8.2 通过 Bridging Header 导入,无 import 语句 @MainActor public final class WechatShare: SharePlatform { @@ -23,17 +21,12 @@ public final class WechatShare: SharePlatform { public let name = "WeChat" public var isInstalled: Bool { - #if canImport(WechatOpenSDK) - return WXApi.isWXAppInstalled() - #else - return true // 未链接 SDK 时让按钮可点,share 也只是 stub success - #endif + WXApi.isWXAppInstalled() } public init() {} public func share(_ content: ShareContent, scene: ShareScene) async -> ShareResult { - #if canImport(WechatOpenSDK) guard WXApi.isWXAppInstalled() else { return .notInstalled(platform: name) } @@ -83,9 +76,5 @@ public final class WechatShare: SharePlatform { } catch { return .failed(reason: "\(error)") } - #else - // SDK 未链接:维持 Phase 4.B 的 stub 行为(让 SharePanel 流程能跑通) - return .success - #endif } } diff --git a/ylgamehall/ylgamehall-Bridging-Header.h b/ylgamehall/ylgamehall-Bridging-Header.h new file mode 100644 index 0000000..633f339 --- /dev/null +++ b/ylgamehall/ylgamehall-Bridging-Header.h @@ -0,0 +1,15 @@ +// +// ylgamehall-Bridging-Header.h +// ylgamehall +// +// Objective-C → Swift 桥接头文件。 +// +// 当前唯一用途:微信 OpenSDK 1.8.2(与 daoqi msext 同款,避免 2.x 强制 +// Universal Link 的运维负担)。1.x SDK 是 .a 静态库 + 头文件,没有 Swift +// module(不能 `import WechatOpenSDK`),必须通过 Bridging Header 导入。 +// +// 详见 docs/SDK-Integration-Guide.md §A.1 / Vendor/WechatSDK/README.md。 +// + +#import "WXApi.h" +#import "WXApiObject.h"