Mengelola koneksi

Memulai koneksi

Saat perangkat di sekitar ditemukan, penemu dapat memulai koneksi. Tujuan 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, sebaiknya tampilkan daftar perangkat kepada pengguna, memungkinkan mereka memilih perangkat mana yang akan dihubungkan.

Menerima atau menolak koneksi

Setelah penemu meminta untuk terhubung dengan pengiklan, pengiklan tersebut akan diberi tahu tentang permintaan koneksi melalui advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:) delegasikan.

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 menyetujuinya, kedua belah pihak akan diberi tahu dan harus memverifikasi koneksi melalui connectionManager(_:didReceive:from:verificationHandler:) delegasikan.

Sebaiknya aplikasi Anda memverifikasi koneksi dengan menggunakan kode verifikasi yang diberikan oleh metode delegasi. Ini memberikan cara untuk membiarkan pengguna mengonfirmasi bahwa mereka terhubung ke perangkat yang dituju. Kedua perangkat diberi kode yang sama, yang merupakan string acak pendek; terserah Anda untuk memutuskan cara memverifikasinya. Biasanya, cara ini adalah menampilkan token pada kedua perangkat dan meminta pengguna untuk membandingkan dan mengonfirmasi secara manual, mirip dengan penyambungan bluetooth dialog.

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 sepenuhnya terjalin hanya ketika kedua belah pihak telah menyetujui. Jika satu atau keduanya menolak, koneksi akan dibuang.

Contoh di atas menunjukkan koneksi yang diterima secara otomatis oleh keduanya tetapi bergantung pada kasus penggunaan Anda, sebaiknya berikan pilihan ini pada pengguna dalam beberapa hal.