Verbindung herstellen
Wenn Geräte in der Nähe gefunden werden, kann der Finder Verbindungen herstellen. Im folgenden Beispiel wird eine Verbindung mit einem Gerät angefordert, sobald es 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 möchten Sie dem Nutzer möglicherweise stattdessen eine Liste der erkannten Geräte anzeigen, damit er auswählen kann, mit welchen Geräten er sich verbinden möchte.
Verbindung annehmen oder ablehnen
Nachdem der Entdecker eine Verbindung zu einem Werbetreibenden angefordert hat, wird der Werbetreibende über die Delegatenmethode 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 akzeptiert hat, werden beide Seiten benachrichtigt und müssen die Verbindung über die Delegatenmethode connectionManager(_:didReceive:from:verificationHandler:) bestätigen.
Es wird empfohlen, dass Ihre App die Verbindung mit dem vom Delegaten bereitgestellten Bestätigungscode überprüft. So können Nutzer bestätigen, dass sie eine Verbindung zum gewünschten Gerät herstellen. Beide Geräte erhalten denselben Code, der eine kurze zufällige Zeichenfolge ist. Sie entscheiden, wie Sie ihn bestätigen. Dazu wird das Token in der Regel auf beiden Geräten angezeigt und die Nutzer werden aufgefordert, es manuell zu vergleichen und zu bestätigen, ähnlich wie bei einem Bluetooth-Kopplungsdialog.
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 erst vollständig hergestellt, wenn beide Seiten die Anfrage angenommen haben. Wenn einer oder beide ablehnen, wird die Verbindung verworfen.
In den obigen Beispielen wird die Verbindung automatisch von beiden Seiten akzeptiert. Je nach Anwendungsfall möchten Sie dem Nutzer diese Auswahl jedoch möglicherweise auf irgendeine Weise präsentieren.