Cha*_*ish 3 mdns bonjour ios swift network-framework
我正在尝试使用 Swift 中的 Network.framework 为我的 iOS 应用程序获取在本地网络上运行的 Bonjour 服务列表。为了发现与我的应用程序运行时使用相同协议版本的设备,我需要能够查看网络上运行的 Bonjour 服务的 TXT 记录。但是,当我尝试打印时result.endpoint.txtRecord总是返回零。
下面是我的代码示例(经过简化以重点关注此示例的关键部分):
let parameters = NWParameters.tcp
parameters.includePeerToPeer = true
parameters.allowLocalEndpointReuse = true
let browser = NWBrowser(for: .bonjour(type: "_tictactoe._tcp", domain: nil), using: parameters)
browser.browseResultsChangedHandler = { results, changes in
for result in results {
print("Browser result. txtRecords: \(result.endpoint.txtRecord)")
}
}
Run Code Online (Sandbox Code Playgroud)
事实证明,使用创建 NWBrowser永远不会.bonjour给你 TXT 记录,并且总是返回 nil。但是,如果您在创建 NWBrowser 时使用,您也将获得 TXT 记录。.bonjourWithTXTRecord
此外,由于某种原因,您需要通过result.metadata而不是result.endpoint.txtRecord获取实际记录。
下面是一个实际的例子。
let browser = NWBrowser(for: .bonjourWithTXTRecord(type: "_tictactoe._tcp", domain: nil), using: parameters)
browser.browseResultsChangedHandler = { results, changes in
for result in results {
if case NWBrowser.Result.Metadata.bonjour(let txtRecord) = result.metadata {
print("Browser result with txt records: \(txtRecord.dictionary)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |