Multipeer Connectivity:无效的服务类型

时间:2014-08-15 19:28:48

标签: ios swift ios8 multipeer-connectivity

我正在尝试使用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'

我真的很感激任何帮助。

3 个答案:

答案 0 :(得分:23)

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

来自MCNearbyServiceBrowser()的评论:

  

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

答案 1 :(得分:1)

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

我建议您编写一个小函数来检查serviceType字符串格式是否安全。

答案 2 :(得分:1)

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

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

" STC-类VIK"是有效的serviceType