在Swift中为Bonjour NetService创建TXT记录

时间:2018-04-02 11:58:05

标签: ios swift bonjour

我正在使用Swift 3中的Apple's Bonjour为Peer-to-Peer Chatting创建一个应用程序。

发布NetService后,我想将user_id和name参数添加为TXT记录。我花了3-4个小时来搜索如何在Swift 3中创建TXT记录,但没有找到任何有用的解决方案。一旦我为NetService设置TXT记录,我也想阅读它

用于设置我们必须使用的TXT记录数据 func setTXTRecord(Data?)

请建议我如何设置和获取NetService的TXT记录

1 个答案:

答案 0 :(得分:1)

试试这个。这些是NetServiceDelegate调用。

public func netServiceDidPublish(_ service: NetService) {
    let txtDict = ["peerID": _localNode.peerID.data(using: String.Encoding.utf8)!]
    let txtData = NetService.data(fromTXTRecord: txtDict)
    if !service.setTXTRecord(txtData) {
        print("did not set txtRecord")
    }
}

public func netService(_ service: NetService, didUpdateTXTRecord data: Data) {
    let txtDict = NetService.dictionary(fromTXTRecord: data)
    if let idObject = txtDict["peerID"], let peerID = NSString(data: idObject, encoding: String.Encoding.utf8.rawValue) as String? {
        // use peerID
    }
}

如果您愿意,可以在我的GitHub项目中看到这一点:https://github.com/AaronBratcher/ALBPeerConnection