私は、MCSessions を管理し、見つかったものに接続するオブジェクトを迅速に持っています。ただし、セッションに接続している間に切断されるという問題が常にあるようです。
func browser(browser: MCNearbyServiceBrowser, foundPeer peerID: MCPeerID, withDiscoveryInfo info: [String : String]?) {
browser.invitePeer(peerID, toSession: session, withContext: nil, timeout: 10)
print("Found someone looking for a session to join: " + peerID.displayName);
}
//Error function
func advertiser(advertiser: MCNearbyServiceAdvertiser, didNotStartAdvertisingPeer error: NSError) {
print(error.localizedDescription)
}
func browser(browser: MCNearbyServiceBrowser, lostPeer peerID: MCPeerID) {
//Do something when we lost a connection to someone.
}
// Remote peer changed state.
func session(session: MCSession, peer peerID: MCPeerID, didChangeState state: MCSessionState){
print("WE HAVE A PEER THATS CHANGING");
var str = "";
switch(state){
case .NotConnected: str = "Not Connected";
case .Connecting: str = "Connecting";
case .Connected: str="Connected";
}
print("Count: " + String(session.connectedPeers.count) + " State: " + str);
}
これに関して人々が抱えていた他の問題を見ると、ほとんどの場合、広告主、ブラウザ、およびセッション間で MCPeerID が異なることが原因です。ただし、クラス全体に一定の peerID を明示的に設定しています。
let devicePeerID = MCPeerID(displayName: UIDevice.currentDevice().name)
iPhone 5S とシミュレーターの間でテストしています。