// // ShareCenter.swift // ylgamehall // // H5 friendsShare 调用入口的协调中心。原 msext 同名 handler 在两个 // ViewController 各注册一份且**行为不同**,新外壳按页面 mode 分发: // // • dispatchSubGame — 对齐 msext gameController.m:575-597(活路径): // - sharefriend == "1" 且 BundleConfig.isMultiShareEnabled // → SharePanel 三选一(微信/QQ/抖音) // - sharefriend == "1" 且 multishare 关闭 // → 直发微信好友(渠道级降级为单一平台) // - 其他 → WechatShare.share() 朋友圈 timeline // // • dispatchLobby — 对齐 msext NewRootVC.m:453-537:直发微信,无 SharePanel // - sharefriend == "1" → WXSceneSession(好友) // - 其他 → WXSceneTimeline(朋友圈) // - type 3 分支由 WechatShare.shareLobby 内部处理 // // fire-and-forget:H5 端 sharesuccess 已在 FriendsShareHandler 立即触发, // 这里只负责拉起 UI / SDK,不需要回传结果。 // import Foundation @MainActor public enum ShareCenter { /// 子游戏页(SubGameViewController)路径:SharePanel + 朋友圈兜底 public static func dispatchSubGame(_ content: ShareContent) { switch content.sharefriend { case "1": // 好友/私聊:渠道级开关决定弹面板还是直发微信 if BundleConfig.shared.isMultiShareEnabled { SharePanel.show(content: content) } else { // multishare = "0" → 三分享关闭,直接走微信好友(scene 参数在 // 剪贴板路径下用于文案 / 语义标注,不实际影响粘贴目标) WechatShare.shared.share(content, scene: .friend) } default: // sharefriend == "2" 或缺失或其他 → msext WechatShareManager // 内部 [sharefriend intValue] != 1 → WXSceneTimeline 兜底 WechatShare.shared.share(content, scene: .timeline) } } /// 大厅页(WebContainerViewController)路径:直发微信,无 SharePanel public static func dispatchLobby(_ content: ShareContent) { let scene: ShareScene = content.sharefriend == "1" ? .friend : .timeline WechatShare.shared.shareLobby(content, scene: scene) } }