我正在尝试使用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'
我真的很感激任何帮助。
答案 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