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

Disconnecting a session without exiting the app

我正在使用多点连接功能。

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

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

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

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

在选项 2 中,您可以简单地 [session disconnect] 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];

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

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

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