import Foundation
import Network

// 触发本地网络权限弹窗（#5）。iOS 14+ 默认拒绝 App 访问本地网络；未授权时 WKWebView 内的
// WebRTC 收集不到 host 候选 → 同内网也退回 srflx / relay（慢、非直连）。WKWebView 自身不会
// 触发该权限请求，须由宿主 App 主动发起一次本地网络访问。这里启动一个对 _cdrop._tcp 的
// NWBrowser 浏览即触发系统弹窗；用户允许后，后续 RTCPeerConnection 才能收集本地 host / mDNS
// 候选实现直连。仅需触发一次；保持 browser 存活以维持授权态。project.yml 已声明
// NSLocalNetworkUsageDescription + NSBonjourServices(_cdrop._tcp)。
enum LocalNetworkPermission
{
    private static var browser: NWBrowser?

    // 启动浏览以触发权限请求。幂等：已在浏览则不重复启。浏览结果本身不关心——「发起访问」这一
    // 动作即触发系统授权弹窗。
    static func trigger()
    {
        guard browser == nil else { return }
        let params = NWParameters()
        params.includePeerToPeer = true
        let b = NWBrowser(for: .bonjour(type: "_cdrop._tcp", domain: nil), using: params)
        b.browseResultsChangedHandler = { _, _ in }
        browser = b
        b.start(queue: .main)
    }
}
