我正在使用 Multipeer 连接功能。
考虑 A、B、C 在 A 创建的会话中连接。假设 B 想要退出会话而不断开会话 ([session Disconnect]) 或退出应用程序。这可能吗?关闭 B 的广告商是否会将其与会话断开连接?或者还有其他方法吗?请帮忙!
我正在使用 Multipeer 连接功能。
考虑 A、B、C 在 A 创建的会话中连接。假设 B 想要退出会话而不断开会话 ([session Disconnect]) 或退出应用程序。这可能吗?关闭 B 的广告商是否会将其与会话断开连接?或者还有其他方法吗?请帮忙!
在您的情况下,没有什么能阻止您与单个对等方创建多个会话(我有一个解决方案,到目前为止运行良好,最多可以有 16 个对等方)。顺便说一句,这个答案也可能有帮助
选项 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];
MCMultipeerConnectivity 框架的 Apple 示例应用程序包含您描述的用例。
他们创建了一个包装类来处理 MCSession,每个 MCSession 都维护一个连接的 MCPeerID 数组。
来源:https ://developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Introduction/Intro.html