Verbindungen verwalten

Verbindung herstellen

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

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 stattdessen auch eine Liste der erkannten Geräte an den Nutzer, sodass er auswählen kann, zu welchen Geräten eine Verbindung hergestellt werden soll.

Verbindung akzeptieren oder ablehnen

Nachdem der Discovery eine Verbindung zu einem Werbetreibenden angefordert hat, über das Feld advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:) delegate-Methode ein.

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 akzeptiert, werden beide Seiten benachrichtigt und müssen die Verbindung über connectionManager(_:didReceive:from:verificationHandler:) delegate-Methode ein.

Es wird empfohlen, dass Ihre Anwendung die Verbindung mithilfe der Methode Bestätigungscode, der von der Delegate-Methode bereitgestellt wird. Auf diese Weise können Sie Nutzer bestätigen, dass sie sich mit dem gewünschten Gerät verbinden. Beide Geräte sind mit demselben Code, bei dem es sich um einen kurzen, zufälligen String handelt. liegt es an Ihnen, wie er überprüft werden kann. Dazu wird in der Regel das Token sowohl auf den Geräten als auch Nutzer bitten, den Vergleich manuell durchzuführen und dies zu bestätigen, ähnlich wie bei einer Bluetooth-Kopplung Dialogfeld.

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 ist erst dann vollständig hergestellt, wenn beide Seiten die Anfrage angenommen haben. Wenn eine oder beide ablehnen, wird die Verbindung verworfen.

Die obigen Beispiele zeigen, wie die Verbindung automatisch von beiden akzeptiert wird. Seiten, aber je nach Anwendungsfall sollten Sie diese Wahl dem irgendwie Nutzende.