Zainicjuj połączenie
Po znalezieniu urządzeń w pobliżu detektor może zainicjować połączenia. ten przykład prosi o nawiązanie połączenia z urządzeniem, gdy tylko się pojawi odkrycie.
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.
}
}
W zależności od zastosowania możesz zamiast tego wyświetlić listę wykrytych urządzeń mobilnych, co pozwala mu wybierać urządzenia, z którymi chcą się połączyć.
Akceptowanie i odrzucanie połączenia
Gdy odkrywca poprosi o połączenie z reklamodawcą,
otrzyma powiadomienie o prośbie o połączenie przez
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)
}
}
Gdy reklamodawca zaakceptuje zaproszenie, obie strony otrzymają powiadomienie i będą musiały zweryfikować
połączenie przez connectionManager(_:didReceive:from:verificationHandler:)
.
Zalecamy, aby aplikacja weryfikuje połączenie za pomocą kod weryfikacyjny podany przez metodę przekazywania dostępu. Dzięki temu użytkownicy sprawdzają, czy łączą się z odpowiednim urządzeniem. Oba urządzenia ten sam kod, który jest krótkim losowym ciągiem znaków; decyzja należy do Ciebie jak ją zweryfikować. Zwykle wymaga to wyświetlenia tokena zarówno na urządzeniach, prosić użytkowników o ręczne porównanie i potwierdzenie, podobnie jak przy parowaniu przez 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)
}
}
Połączenie zostanie w pełni nawiązane dopiero po zaakceptowaniu przez obie strony. Jeśli jeden lub oba te warunki odrzucenia, połączenie zostanie odrzucone.
W powyższych przykładach połączenie jest automatycznie akceptowane przez oba stron, ale w zależności od zastosowania możesz ten wybór przedstawić użytkownika.