Bağlantıları yönet

Bağlantı başlatma

Yakındaki cihazlar bulunduğunda, gezgin bağlantıları başlatabilir. Aşağıdaki örnek, bulunur bulunmaz bir cihaz ile bağlantı kurulmasını ister.

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

Kullanım alanınıza bağlı olarak, kullanıcıya hangi cihazların bağlanacağını seçmesine olanak tanıyarak kullanıcıya söz konusu cihazların listesini gösterebilirsiniz.

Bağlantıyı kabul etme veya reddetme

Keşif üretici bir reklamverenle bağlantı isteğinde bulunduğunda reklamveren, bağlantı isteği için advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:) yetki verme yöntemiyle bilgilendirilir.

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

Reklamveren kabul ettikten sonra her iki taraf da bilgilendirilir ve bağlantıyı connectionManager(_:didReceive:from:verificationHandler:) yetki verme yöntemiyle doğrulamaları gerekir.

Uygulamanızın, yetki verme yöntemi tarafından sağlanan doğrulama kodunu kullanarak bağlantıyı doğrulaması önerilir. Bu, kullanıcıların istenen cihaza bağlandıklarını onaylamaları için bir yol sağlar. Her iki cihaza da aynı kod verilir. Kısa kod, rastgele bir dizedir; nasıl doğrulanacağına karar vermek size bağlıdır. Bu işlem genellikle jetonun her iki cihazda da gösterilmesini ve kullanıcılardan bir Bluetooth eşleme iletişim kutusuna benzer şekilde manuel olarak karşılaştırmalarını ve onaylamalarını istemeyi içerir.

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

Bağlantı tam olarak yalnızca her iki taraf da kabul ettiğinde kurulur. İkisinden biri de reddederse bağlantı silinir.

Yukarıdaki örneklerde, bağlantı her iki tarafça otomatik olarak kabul edilmektedir. Ancak kullanım alanınıza bağlı olarak bu seçeneği bir şekilde kullanıcıya sunmak isteyebilirsiniz.