Files
youle_app_ios_v2/Vendor/WechatSDK/README.md
T
joywayerandClaude Opus 4.7 05f1396645 微信 SDK 降级 2.0.5 → 1.8.2(与 daoqi msext 同款,避开 UL 强制)
H5 调 accreditlogin 后 sendAuthReq success=false,根因:微信 OpenSDK
2.0.x 强制 Universal Link,传空串被 SDK 拒绝;daoqi msext 用 1.8.x 不强制
UL,多年稳定上线。沿用 1.8.2 避免无谓的 UL 运维负担(HTTPS 域名 + AASA +
微信开放平台审核 30min-1d)。

文件改动:
- 新增 Vendor/WechatSDK/v1.8.2/{WXApi,WXApiObject,WechatAuthSDK}.h +
  libWeChatSDK.a(16MB,fat: i386+armv7+armv7s+x86_64+arm64,从 daoqi
  msext/Class/SDKExport/ 直接拷贝)
- 删除 Vendor/WechatSDK/WechatOpenSDK-NoPay.xcframework(2.0.5)
- 新增 ylgamehall/ylgamehall-Bridging-Header.h(1.x .a 无 Swift module,
  必须通过 Bridging Header 导入 WXApi.h / WXApiObject.h)

代码侧(5 个 Swift 文件):
- WeChatSDK.swift:register() 改为 1.x 单参数 WXApi.registerApp(appID),
  去掉 universalLink 参数;handleOpenURL 不变(1.x/2.x 同款)
- WeChatManager.swift:去掉 #if canImport(WechatOpenSDK) 守卫(Bridging
  Header 直接导入,符号编译期必在);authorize sendAuthReq 改 1.x BOOL
  返回(无 completion);shareLink/shareImage 改 WXApi.sendReq(req)
  (1.x BOOL 返回,无 completion);getVersion → getApiVersion
- AccreditLoginHandler / WechatShare:同样去掉 canImport 守卫和 stub 分支
- BackGameDataHandler:更新注释说明 1.x WXApi delegate 由 sendAuthReq
  逐次传入,WeChatManager singleton 持有不需要清理(1.x 早期 setDelegate:
  API 已废弃)

文档:
- Vendor/WechatSDK/README.md 重写,说明 1.8.2 决策原因 + 文件结构 +
  Xcode 接入 5 步 + M Mac simulator 已知限制
- docs/SDK-Integration-Guide.md §A.1 同步重写

⚠️ **本 commit 后 BuildProject 会失败**,需要用户在 Xcode UI 完成 5 步:
1. 删 Frameworks 里旧 WechatOpenSDK-NoPay.xcframework 引用
2. Add Vendor/WechatSDK/v1.8.2/libWeChatSDK.a(Do Not Embed)
3. Add 4 个系统库:libz.tbd / libsqlite3.tbd / Security.framework /
   CFNetwork.framework(Do Not Embed)
4. Build Settings → Header Search Paths += $(PROJECT_DIR)/Vendor/WechatSDK/v1.8.2
5. Build Settings → Objective-C Bridging Header = ylgamehall/ylgamehall-Bridging-Header.h

详细操作步骤见 Vendor/WechatSDK/README.md「Xcode 接入步骤」。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-23 08:27:40 +08:00

63 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WechatOpenSDK 1.8.2(与 daoqi msext 同款)
> **决策原因**:微信 OpenSDK 2.0.x 强制 Universal Link,需要项目方配合:
> HTTPS 域名 + AASA 部署 + Xcode Associated Domains entitlement + 微信
> 开放平台后台审核(30min1d)。daoqi msext 多年使用 1.8.2 上线稳定,
> ylgamehall 沿用同款避免无谓运维负担。1.x 不强制 UL,URL Scheme 即可。
>
> 历史记录:曾尝试 SDK 2.0.5 + 空 universalLink,结果 `sendAuthReq`
> 直接 `success=false`SDK 拒绝),无法授权。改回 1.8.2 后行为与 msext 等价。
## 二进制来源
| 项 | 值 |
|---|---|
| 来源 | 直接从 daoqi/msext/Class/SDKExport/ 拷贝(与现网 msext 同版本) |
| 版本 | 1.8.2 |
| 形态 | fat 静态库 `.a` + 头文件(无 Swift module,需 Bridging Header |
| 架构 | i386 + armv7 + armv7s + x86_64 + arm64**不含 ios-arm64-simulator** |
## 文件结构
```
Vendor/WechatSDK/
├── README.md ← 本文件
└── v1.8.2/
├── README.txt ← Tencent 官方版本历史
├── WXApi.h ← 主 APIregisterApp/sendAuthReq/sendReq/handleOpenURL
├── WXApiObject.h ← 数据对象(SendAuthReq/SendMessageToWXReq/WXMediaMessage 等)
├── WechatAuthSDK.h ← 扫码授权扩展(项目未用)
└── libWeChatSDK.a ← fat 静态库
```
## Xcode 接入步骤(用户在 Xcode 手动)
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
## 已知限制:M Mac 模拟器无法链接
fat 库不含 `ios-arm64-simulator` slice,M 芯片 Mac 模拟器链接会报与 AMap 相同的
arch 冲突错。**接受现状,开发期跑真机**(与 AMap 同款决策,详见
`Vendor/AMap/README.md` 「已知限制」)。
## 凭证
AppID + AppSecret + AuthScope 沿用 msext,参 `docs/SDK-Integration-Guide.md §0`