Kelola koneksi

Memulai koneksi

Saat perangkat di sekitar ditemukan, penemu dapat memulai koneksi. Contoh berikut meminta koneksi dengan perangkat segera setelah ditemukan.

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.
  }
}

Bergantung pada kasus penggunaan, Anda dapat menampilkan daftar perangkat yang ditemukan kepada pengguna, sehingga mereka dapat memilih perangkat yang terhubung.

Menyetujui atau menolak koneksi

Setelah penemu meminta koneksi ke pengiklan, pengiklan akan diberi tahu tentang permintaan koneksi tersebut melalui metode delegasi 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)
  }
}

Setelah pengiklan menyetujui, kedua belah pihak akan diberi tahu dan harus memverifikasi koneksi melalui metode delegasi connectionManager(_:didReceive:from:verificationHandler:).

Sebaiknya aplikasi Anda memverifikasi koneksi dengan menggunakan kode verifikasi yang diberikan oleh metode delegasi. Hal ini memberikan cara untuk memungkinkan pengguna mengonfirmasi bahwa mereka terhubung ke perangkat yang diinginkan. Kedua perangkat diberi kode yang sama, yang merupakan string acak singkat; Anda bebas menentukan cara memverifikasinya. Biasanya hal ini melibatkan penayangan token pada kedua perangkat dan meminta pengguna untuk membandingkan dan mengonfirmasi secara manual, serupa dengan dialog penyambungan 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)
  }
}

Koneksi akan terbentuk sepenuhnya hanya jika kedua belah pihak telah menyetujui. Jika salah satu atau keduanya menolak, koneksi akan dihapus.

Contoh di atas menunjukkan koneksi yang diterima secara otomatis oleh kedua sisi, tetapi bergantung pada kasus penggunaan Anda, mungkin Anda ingin menyajikan pilihan ini kepada pengguna dengan cara tertentu.