Cómo iniciar una conexión
Cuando se encuentran dispositivos cercanos, el detective puede iniciar las conexiones. El El siguiente ejemplo solicita una conexión con un dispositivo en cuanto se descubierto.
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.
}
}
Según tu caso de uso, tal vez quieras mostrar en su lugar una lista de los recursos al usuario para que pueda elegir a qué dispositivos conectarse.
Cómo aceptar o rechazar una conexión
Después de que el investigador solicita conectarse con un anunciante, este
recibe una notificación de la solicitud de conexión a través del
advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:)
delegado.
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 vez que el anunciante acepte, ambas partes recibirán una notificación y deberán verificar el
a través de la connectionManager(_:didReceive:from:verificationHandler:)
delegado.
Se recomienda que la app verifique la conexión mediante el código de verificación proporcionado por el método delegado. Esto proporciona una forma de permitir los usuarios confirman que se conectan al dispositivo previsto. Ambos dispositivos son dado el mismo código, que es una string aleatoria corta; depende de ti decidir cómo verificarlo. Normalmente, esto implica mostrar el token en los dispositivos y Pedirles a los usuarios que comparen y confirmen manualmente, similar a una vinculación 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 conexión se establece por completo solo cuando ambos extremos aceptan. Si hay uno o ambas se rechazan, se descarta la conexión.
En los ejemplos anteriores, se muestra la conexión aceptada automáticamente por ambos pero, según tu caso de uso, tal vez te convenga presentar esta opción al usuario de alguna manera.