【问题标题】:how to disable connection alert (ios multipeer connectivity framework)如何禁用连接警报(ios 多点连接框架)
【发布时间】:2014-08-13 14:04:18
【问题描述】:

我发现了这个: [Disable connection alert (Multipeer connectivity)

其中的代码是:

 - (void)advertiser:(MCNearbyServiceAdvertiser *)theAdvertiser didReceiveInvitationFromPeer:(MCPeerID *)directorPeerId withContext:(NSData *)invitationData invitationHandler:(void (^)(BOOL, MCSession *))invitationHandler
{
    // accept the invitation and stop advertising
    invitationHandler(YES, self.session);
    [self.advertiser stopAdvertisingPeer];
    self.advertiser = nil;
}

但我不知道如何让这段代码工作,应该在哪里实现以及如何触发它?

【问题讨论】:

    标签: ios ios7 multipeer-connectivity


    【解决方案1】:

    以下是我所做的一些 sn-ps:

    在一台设备上 - 启动浏览器

    _serviceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:_peerID
                                                       serviceType:_sessionName];
    
    [_serviceBrowser startBrowsingForPeers];
    

    在另一台设备上 - 启动广告商

    _serviceAdvertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:_peerID
                                                               discoveryInfo:nil
                                                                 serviceType:_sessionName];
    [_serviceAdvertiser startAdvertisingPeer];
    

    这些服务实现委托功能,以告知您的应用可能存在的连接。在这里,浏览器被告知广告商,现在邀请对等方加入会话

    - (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID     withDiscoveryInfo:(NSDictionary *)info
    {
        [browser invitePeer:peerID toSession:_session withContext:nil timeout:30.0];
    
    }
    

    然后广告商做出回应

    - (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:    (MCPeerID *)peerID withContext:(NSData *)context invitationHandler:(void(^)(BOOL accept, MCSession *session))invitationHandler
    {
        invitationHandler(YES, _session);
    }
    

    现在您将收到一个会话代表呼叫,告知您对等连接的状态。此时您应该已连接 - 不需要“真正的”用户交互。

    - (void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state
    

    【讨论】:

      【解决方案2】:

      在实现 MCNearbyServiceAdvertiserDelegate 协议的委托上调用该方法。

      为了收到加入会议的邀请,您需要宣传您愿意这样做。例如:

      MCPeerID *peerID = [[MCPeerID alloc] initWithDisplayName:@"Peer Name"];
      
      // Here we set a nearby service advertiser that tells nearby peers that this app is willing to join sessions of a specified type.
      self.advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:peerID discoveryInfo:nil serviceType:@"myservice"];
      self.advertiser.delegate = self;
      [self.advertiser startAdvertisingPeer];
      

      当附近的浏览同行听到您的声音时,它可能会发出加入会话的邀请,当它这样做时,您提到的方法将在委托上调用,您可以使用您引用的代码接受。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多