Verbindungen verwalten

Verbindung herstellen

Wenn Geräte in der Nähe gefunden werden, kann der Discoverer Verbindungen herstellen. Im folgenden Beispiel wird eine Verbindung mit einem Gerät angefordert, sobald dieses erkannt wird.

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.
  }
}

Je nach Anwendungsfall können Sie dem Nutzer stattdessen eine Liste der erkannten Geräte anzeigen lassen, sodass er auswählen kann, mit welchen Geräten eine Verbindung hergestellt werden soll.

Verbindung annehmen oder ablehnen

Nachdem der Betrachter eine Verbindung zu einem Werbetreibenden angefordert hat, wird er über die Delegationsmethode advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:) über die Verbindungsanfrage benachrichtigt.

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)
  }
}

Sobald der Werbetreibende die Anfrage angenommen hat, werden beide Seiten benachrichtigt und müssen die Verbindung über die Delegationsmethode connectionManager(_:didReceive:from:verificationHandler:) prüfen.

Es wird empfohlen, dass die Anwendung die Verbindung mithilfe des Bestätigungscodes überprüft, der von der Bevollmächtigten-Methode bereitgestellt wird. Auf diese Weise können Nutzer bestätigen, dass sie eine Verbindung zum gewünschten Gerät herstellen. Beide Geräte erhalten denselben Code. Das ist ein kurzer zufälliger String. Es liegt an Ihnen, zu entscheiden, wie Sie ihn bestätigen. In der Regel bedeutet dies, dass das Token auf beiden Geräten angezeigt und die Nutzer aufgefordert werden, sie manuell zu vergleichen und zu bestätigen, ähnlich wie bei einem Bluetooth-Kopplungsdialogfeld.

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)
  }
}

Die Verbindung wird nur dann voll hergestellt, wenn beide Seiten akzeptiert wurden. Wenn eine oder beide abgelehnt werden, wird die Verbindung verworfen.

Die obigen Beispiele zeigen die Verbindung, die von beiden Seiten automatisch akzeptiert wird. Je nach Anwendungsfall möchten Sie sie dem Nutzer jedoch in irgendeiner Weise präsentieren.