【问题标题】:Multipeer Connectivity: Invalid service type多点连接:服务类型无效
【发布时间】:2014-10-09 13:46:11
【问题描述】:

我正在尝试使用 Multipeer Connectivity 框架,但在尝试使用 serviceType 实例化 MCNeaarbyServiceBrowser 时遇到了崩溃。

以下是代码:

    private func setUpSession() {
    self.session = MCSession(peer: self.peerId);
    self.session!.delegate = self;

    self.browser = MCNearbyServiceBrowser(peer: self.peerId, serviceType: "stc-classroom-vik");
    self.browser!.delegate =  self;

    self.advertiser = MCNearbyServiceAdvertiser(peer: self.peerId, discoveryInfo: nil, serviceType: "stc-classroom-vik");
    self.advertiser!.delegate = self;
}

这是我遇到的崩溃/错误:

2014-08-15 12:24:42.689 Xavier[614:254319] *** Terminating app due to uncaught exception     'NSInvalidArgumentException', reason: 'Invalid serviceType passed to MCNearbyServiceBrowser'

非常感谢任何帮助。

【问题讨论】:

    标签: ios swift ios8 multipeer-connectivity


    【解决方案1】:

    我相信您的serviceType 参数字符串中只能有一个连字符,并且它必须是15 个字符或更少。你的有两个连字符和 17 个字符。

    来自MCNearbyServiceBrowser()的cmets:

    serviceType 参数是一个短文本字符串,用于描述 应用程序的网络协议。它的格式应与 Bonjour 服务类型:最长 15 个字符和有效字符 包括 ASCII 小写字母、数字和连字符。一个简短的名字 建议将其与不相关的服务区分开来;为了 例如,ABC 公司制作的文字聊天应用程序可以使用服务类型 “abc-txtchat”。

    【讨论】:

      【解决方案2】:

      您的服务类型长度超过 15 个字符并包含 2 个连字符。

      为了安全起见,我建议你编写一个小函数来检查 serviceType 字符串格式。

      【讨论】:

        【解决方案3】:

        以上答案是正确的,因为 Bonjour 服务类型可能只有 15 个字符。

        但是,没有“一个连字符”的限制。 Bonjour 规范的措辞是描述 serviceType 中允许的字符。

        “stc-class-vik”是一个有效的服务类型

        【讨论】:

          猜你喜欢
          • 2019-03-20
          • 2023-04-07
          • 2016-02-12
          • 1970-01-01
          • 1970-01-01
          • 2018-08-10
          • 1970-01-01
          • 2019-09-15
          • 1970-01-01
          相关资源
          最近更新 更多