在不退出应用程序的情况下断开会话连接

时间:2015-02-21 11:49:54

标签: ios exit multipeer-connectivity disconnect mcsession

我使用Multipeer连接功能。

考虑A,B,C在由A.Suppose B创建的会话中连接,想要离开会话而不断开会话([会话断开连接])或退出应用程序。这可能吗?是否关闭B的广告商,将其与会话断开连接?或者还有其他方法吗?请帮忙!

2 个答案:

答案 0 :(得分:0)

在您的情况下,没有什么可以阻止您与单个对等方创建多个会话(我有一个解决方案,到目前为止,最多可以运行16个对等方)。顺便说一下,this answer也可以提供帮助

选项1: A-> B(会话1) A-> C(会话1)

选项2: A-> B(会话1) A-> C(会话2)

在选项2中,您可以简单地[会话断开连接] A-> C而不会影响A-> B

- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(NSData *)context invitationHandler:(void(^)(BOOL accept, MCSession *session))invitationHandler
...
    terminalDev.session = [self newSession];
    terminalDev.peerID = peerID;
    invitationHandler(YES, terminalDev.session);

- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(NSDictionary *)info
           // save the peerID for later communications
            hostDevice.peerID = peerID;

            // and ask the browser to invite the peer(host) to the session for this device
            hostDevice.session = [self newSession];

            DDLogDebug(@"Inviting Host %@ to session %@", remotePeerName, hostDevice.session);
            [browser invitePeer:peerID toSession:hostDevice.session withContext:nil timeout:30.0];

答案 1 :(得分:0)

MCMultipeerConnectivity框架的Apple示例应用程序包含您描述的用例。

他们创建一个包装类来处理MCSession,每个MCSession维护一个连接的MCPeerID数组。

来源:https://developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Introduction/Intro.html