MultiPeer 框架避免使用 MCBrowserView?
Posted
技术标签:
【中文标题】MultiPeer 框架避免使用 MCBrowserView?【英文标题】:MultiPeer framework avoid using MCBrowserView? 【发布时间】:2014-08-02 13:05:09 【问题描述】:您如何不通过MCBrowserView
简单地与对等点连接(身份不重要,只需要数据)?就像自动连接一样。我已经读到这可能很困难,因为如果两个对等方同时浏览和广告,则连接时可能会出现问题(有人需要优先)。
如果上述情况可行,人们将如何添加一个简单的弹出窗口,例如“有人想连接:接受/拒绝”。
基本上,如果您连接的用户的身份不是一个因素,MCBrowserView
并不是很重要。谁有这方面的经验?
【问题讨论】:
【参考方案1】:您可以使用 MCNearbyServiceBrowser 在不显示浏览器的情况下与对等方连接,因为它没有关联的 UI。
一个同伴开始像这样浏览:
self.thisPeer = [[MCPeerID alloc] initWithDisplayName:@"Peer Name"];
self.session = [[MCSession alloc] initWithPeer:self.thisPeer ];
self.session.delegate = self;
self.serviceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:self.thisPeer serviceType:<lowercase 1-15 chars>
self.serviceBrowser.delegate = self;
[self.serviceBrowser startBrowsingForPeers];
另一个对等点开始这样的广告:
MCPeerID *peerID = [[MCPeerID alloc] initWithDisplayName:@"some name"];
self.session = [[MCSession alloc] initWithPeer:peerID];
self.session.delegate = self;
self.advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:peerID discoveryInfo:nil serviceType:<lowercase 1-15 chars>];
self.advertiser.delegate = self;
[self.advertiser startAdvertisingPeer];
然后,当浏览节点听到附近的广告节点时,它会发送加入会话的邀请:
- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(NSDictionary *)info
NSLog(@"Found a nearby advertising peer %@", peerID);
[self.serviceBrowser invitePeer:peerID toSession:self.session withContext:nil timeout:60];
收到邀请后,您可以根据需要显示接受/拒绝提醒,也可以直接接受邀请。
【讨论】:
这就回答了。但是有没有办法同时做广告和浏览呢? 当然可以同时浏览和做广告,只要你有一个策略来避免两个对等点都接受对方的邀请。见***.com/a/19529933/2077204以上是关于MultiPeer 框架避免使用 MCBrowserView?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Multipeer Connectivity 框架邀请用户加入我的会话?
如何在 Objective C Multipeer Connectivity 框架中传输对象数据