【问题标题】:MultiPeer framework avoid using MCBrowserView?MultiPeer 框架避免使用 MCBrowserView?
【发布时间】:2014-08-02 13:05:09
【问题描述】:

您如何不通过MCBrowserView 简单地与对等点连接(身份不重要,只需要数据)?就像自动连接一样。我已经读到这可能很困难,因为如果两个对等方同时浏览和广告,则连接时可能会出现问题(有人需要优先)。

如果上述情况可行,人们将如何添加一个简单的弹出窗口,例如“有人想连接:接受/拒绝”。

基本上,如果您连接的用户的身份不是一个因素,MCBrowserView 并不是很重要。谁有这方面的经验?

【问题讨论】:

    标签: ios7 multipeer-connectivity


    【解决方案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];        
    }
    

    收到邀请后,您可以根据需要显示接受/拒绝提醒,也可以直接接受邀请。

    【讨论】:

    • 这就回答了。但是有没有办法同时做广告和浏览呢?
    • 当然可以同时浏览和做广告,只要你有一个策略来避免两个对等点都接受对方的邀请。见stackoverflow.com/a/19529933/2077204
    猜你喜欢
    • 2016-01-24
    • 1970-01-01
    • 2015-12-17
    • 2018-02-14
    • 2016-04-08
    • 2017-07-28
    • 2013-10-18
    • 2011-05-05
    • 2015-07-01
    相关资源
    最近更新 更多