接続を開始する
近くにあるデバイスが見つかると、検出者は接続を開始できます。「 次の例では、デバイスが接続されるとすぐに 検出されます。
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.
}
}
ユースケースによっては、検出されたリソースのリストを、 接続し、接続先のデバイスをユーザーが選択できるようにします。
接続を承認または拒否する
検出者が広告主への接続をリクエストすると、広告主は
接続リクエストが通知されます。
advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:)
delegate メソッドを使用します。
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)
}
}
広告主様が承認すると、両者にその旨が通知され、
connectionManager(_:didReceive:from:verificationHandler:)
経由の接続です
delegate メソッドを使用します。
アプリでは、 認証コードが生成されます。これにより、 目的のデバイスに接続していることをユーザーが確認します。どちらのデバイスも これは短いランダムな文字列です。アプリケーションの開発時に 確認します。通常、トークンを両方のデバイスとで表示し、 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)
}
}
双方が受け入れた場合にのみ、接続は完全に確立されます。1 つ または両方が拒否された場合、接続は破棄されます。
上記の例は、接続が自動的に受け入れられる状態を示しています。 ユースケースによっては、この選択を アクセスします。