Gestisci connessioni

Avvia una connessione

Quando vengono trovati dispositivi nelle vicinanze, il rilevatore può avviare connessioni. La nell'esempio che segue viene richiesta una connessione con un dispositivo non appena viene sono state rilevate.

Swift

extension Example: DiscovererDelegate {
  func discoverer(
    _ discoverer: Discoverer, didFind endpointID: EndpointID, with context: Data) {
    // An endpoint was found. We request a connection to it. The endpoint info can be used
    // to provide arbitrary information to the discovering device (e.g. device name or type).
    discoverer.requestConnection(to: endpointID, using: "My Device".data(using: .utf8)!)
  }

  func discoverer(_ discoverer: Discoverer, didLose endpointID: EndpointID) {
    // A previously discovered endpoint has gone away.
  }
}

A seconda del tuo caso d'uso, potresti voler mostrare invece un elenco dispositivi per l'utente, consentendogli di scegliere a quali dispositivi connettersi.

Accettare o rifiutare una connessione

Dopo che lo strumento ha richiesto una connessione con un inserzionista, quest'ultimo viene notificato della richiesta di connessione tramite advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:) Delegation.

Swift

extension Example: AdvertiserDelegate {
  func advertiser(
    _ advertiser: Advertiser, didReceiveConnectionRequestFrom endpointID: EndpointID,
    with context: Data, connectionRequestHandler: @escaping (Bool) -> Void) {
    // Call with `true` to accept or `false` to reject the incoming connection request.
    connectionRequestHandler(true)
  }
}

Una volta che l'inserzionista accetta, entrambe le parti ricevono una notifica e devono verificare connessione tramite connectionManager(_:didReceive:from:verificationHandler:) Delegation.

È consigliabile che la tua app verifichi la connessione utilizzando codice di verifica fornito dal metodo delegato. Offre un modo per Gli utenti confermano di connettersi al dispositivo previsto. Entrambi i dispositivi dato lo stesso codice, che è una breve stringa casuale; sta a te decidere come verificarlo. In genere ciò comporta la visualizzazione del token su entrambi i dispositivi chiedere agli utenti di effettuare un confronto e una conferma manualmente, un po' come per l'accoppiamento Bluetooth .

Swift

extension Example: ConnectionManagerDelegate {
  func connectionManager(
    _ connectionManager: ConnectionManager, didReceive verificationCode: String,
    from endpointID: EndpointID, verificationHandler: @escaping (Bool) -> Void) {
    // Optionally show the user the verification code. Your app should call this handler
    // with a value of `true` if the nearby endpoint should be trusted, or `false`
    // otherwise.
    verificationHandler(true)
  }
}

La connessione viene stabilita completamente solo quando entrambe le parti hanno accettato. Se uno o entrambi, la connessione viene eliminata.

Gli esempi precedenti mostrano che la connessione viene accettata automaticamente da entrambi ma in base al tuo caso d'uso potresti voler presentare questa scelta ai l'utente in qualche modo.