我目前正在研究一个需要连接2个同伴的游戏。为此,我已经通过this tutorial。我构建了所描述的演示应用程序,它的功能就像一个魅力,即我可以在我的iPhone 5和我的Macbook Pro之间进行聊天。 但是,现在我正在研究游戏应用程序,我无法再建立连接。基本上我所做的是我以表格的形式显示所有广告客户。一旦一个点击一个给定的电池,下面的代码会被执行:Swift MultipeerConnectivity - invitePeer总是以超时结束
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var peer = appDelegate.mcManager.foundPeers.keys.array[indexPath.row] as MCPeerID
self.appDelegate.mcManager.joinGame(peer)
}
在mcManager的joinGame样子:
func joinGame(peer : MCPeerID){
// Setup Advertising:
self.setAdvertiserDiscoveryInfo(self.foundPeers[peer] as! [String:String])
self.advertiser.startAdvertisingPeer()
self.appDelegate.isAdvertising = true
// Create Connection
self.browser.invitePeer(peer, toSession: self.session, withContext: nil, timeout: self.connectingTimeout)
}
显然,有从XCode的任何错误消息。每个代码都是按照它应该执行的。即使invitePeer(...)正在执行。但它总是以超时结束。
我比较了演示程序(从上面的教程)和调试器中的游戏应用程序,我注意到一件事,那就是演示应用程序的浏览器变量包含一个带有一个键/值对的_netServices变量,而游戏应用程序不(_netServices是空的)。
目前我不知道什么是错的,因为我很重视自己在给定的教程,即有很多复制/粘贴涉及。自从第一个演示程序正在运行后,我不知道发生了什么。
仅供参考,这里是mcManager的的init():
override init() {
super.init()
peer = MCPeerID(displayName: UIDevice.currentDevice().name)
session = MCSession(peer: peer)
session.delegate = self
browser = MCNearbyServiceBrowser(peer: peer, serviceType: serviceType)
browser.delegate = self
advertiser = MCNearbyServiceAdvertiser(peer: peer, discoveryInfo: nil, serviceType: serviceType)
advertiser.delegate = self
}