// // BrowserHandler.swift // ylgamehall // // H5 → Native handler:browser — 用系统 Safari 打开 URL // 契约:docs/H5-Native-Contract.md §3.1 [16] // import UIKit @MainActor public enum BrowserHandler { public static func register(on bridge: any BridgeProtocol) { // 【16】browser // 入参 data: string(URL,需 URL 编码后传给 UIApplication.openURL) // cb:"browser" bridge.register("browser") { data, callback in defer { callback?(.string("browser")) } guard let urlStr = data?.asString, let url = URL(string: urlStr) ?? URL(string: urlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "") else { return } // UIApplication.open 在 iOS 15+ 是 async;用 Task 异步打开但不 // await 返回值(H5 已经 cb 完成,不需要等 open 完成) Task { @MainActor in _ = await UIApplication.shared.open(url) } } } }