Initier une connexion
Lorsque des appareils à proximité sont détectés, l'appareil découvreur peut établir des connexions. L'exemple suivant demande une connexion avec un appareil dès qu'il est détecté.
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.
}
}
Selon votre cas d'utilisation, vous pouvez afficher une liste des appareils détectés pour permettre à l'utilisateur de choisir ceux auxquels il souhaite se connecter.
Accepter ou refuser une connexion
Une fois que l'appareil de découverte a demandé une connexion à un annonceur, celui-ci est informé de la demande de connexion via la méthode de délégué advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:).
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)
}
}
Une fois que l'annonceur a accepté, les deux parties sont averties et doivent valider la connexion via la méthode déléguée connectionManager(_:didReceive:from:verificationHandler:).
Nous vous recommandons de valider la connexion à l'aide du code de validation fourni par la méthode déléguée. Cela permet aux utilisateurs de confirmer qu'ils se connectent à l'appareil prévu. Les deux appareils reçoivent le même code, qui est une courte chaîne aléatoire. C'est à vous de décider comment le valider. En règle générale, cela implique d'afficher le jeton sur les deux appareils et de demander aux utilisateurs de comparer et de confirmer manuellement, comme dans une boîte de dialogue d'association 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 connexion n'est entièrement établie que lorsque les deux parties l'ont acceptée. Si l'un ou les deux refusent, la connexion est supprimée.
L'exemple précédent montre que la connexion est automatiquement acceptée par les deux côtés, mais selon votre cas d'utilisation, vous pouvez présenter ce choix à l'utilisateur d'une manière ou d'une autre.