【问题标题】:Create a TXT record for Bonjour NetService in Swift在 Swift 中为 Bonjour NetService 创建 TXT 记录
【发布时间】:2018-04-02 11:58:04
【问题描述】:

我正在使用 Swift 3 中的 Apple's Bonjour 创建点对点聊天应用程序。

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

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

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

【问题讨论】:

    标签: ios swift bonjour


    【解决方案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

    【讨论】:

    • 它就像一个魅力。我有另一个问题,当我的应用程序进入后台时,它会调用 didRemove netService 并且设备变得不可发现。您能否提出一些解决方案来在后台发现设备?
    • 当应用程序在 iOS 上进入后台时,网络连接会丢失。您可以要求一点时间来完成一项任务,但不能保证。底线:不要指望通过后台应用建立网络。
    • 有什么方法可以确定其他用户的应用是在后台运行还是终止?
    • @RajatJain 没有。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2013-03-21
    相关资源
    最近更新 更多