4.B 截图分享补齐 msext 字段:WeChat description / QQ 引导框

【契约影响】docs/H5-Native-Contract.md §3.1[2]type==2 分支

WeChat 截图分享之前丢了 H5 description(msext 通过
sendImageData:MessageExt: 写到 WXMediaMessage.description,接收方在
微信聊天预览里能看到)。链接分享之前完全没传 thumb(msext 用 app
icon)。统一补齐:

- WeChatManager.ShareImage 加 messageExt / mediaTagName 字段;
  shareImage 内 message.description = messageExt + message.messageExt
  = messageExt + setThumbImage(thumb) + mediaTagName
- WeChatManager.ShareLink 把 thumbnailURL: String? 替换为 thumb:
  UIImage?;shareLink 内 setThumbImage(thumb) + mediaTagName。drop
  Sendable 因 UIImage 不可 Sendable(调用都在 MainActor 上无风险)
- WechatShare 双分支统一传 appIconImage() 做 thumb;截图分支 messageExt
  = content.desc + mediaTagName "进贤聚友棋牌游戏截图分享";链接分支
  mediaTagName "进贤聚友棋牌游戏分享"(字面对齐 msext WechatShareManager.m)

QQ 截图分享原本 4-fallback URL 链不靠谱(file_type=news 给截图场景实际
无意义)。简化为 Douyin 同款模式:截图 → UIPasteboard.image → 弹"立即
打开 QQ / 稍后分享"二选一 Alert。承认 ADR-006 无 QQ SDK 退化的现实,
但 UX 不再让用户摸不着北。
This commit is contained in:
joywayer
2026-06-24 07:53:14 +08:00
parent 9bd5a81e6c
commit 68c668a06c
3 changed files with 109 additions and 34 deletions
+12 -2
View File
@@ -42,7 +42,12 @@ public final class WechatShare: SharePlatform {
let shot = try ImageProvider.captureScreenshot()
guard let imageData = shot.jpegData(compressionQuality: 0.6) else { return }
try await WeChatManager.shared.shareImage(
.init(imageData: imageData, thumb: thumb),
.init(
imageData: imageData,
thumb: thumb,
messageExt: content.desc,
mediaTagName: "\(Self.appTagPrefix)游戏截图分享"
),
scene: wxScene
)
} else {
@@ -52,7 +57,8 @@ public final class WechatShare: SharePlatform {
url: content.webpageUrl,
title: content.title,
desc: content.desc,
thumbnailURL: nil
thumb: thumb,
mediaTagName: "\(Self.appTagPrefix)游戏分享"
),
scene: wxScene
)
@@ -63,6 +69,10 @@ public final class WechatShare: SharePlatform {
}
}
/// msext WechatShareManager "" daoqi
/// SGDefineInfo.h gamehallname WXMediaMessage.mediaTagName
private static let appTagPrefix = "进贤聚友棋牌"
/// app icon Info.plist `CFBundleIcons` `CFBundlePrimaryIcon`
/// `CFBundleIconFiles` msext
/// WechatShareManager `getAppIconImage` 1x1