Bağlantıları yönet

Bağlantı başlatma

Yakındaki cihazlar bulunduğunda, keşfi yapan kullanıcı bağlantı başlatabilir. Aşağıdaki örnekte, bir cihaz keşfedilir keşfedilmez cihazla bağlantı kurulması isteniyor.

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, bunun yerine kullanıcılara keşfedilen cihazların listesini göstermek isteyebilirsiniz. Böylece kullanıcılar hangi cihazlara bağlanacaklarını seçebilir.

Bağlantı isteğini kabul etme veya reddetme

Keşfeden kullanıcı bir reklamverene bağlanma isteğinde bulunduktan sonra reklamverene advertiser(_:didReceiveConnectionRequestFrom:with:connectionRequestHandler:) yetkilendirme yöntemiyle bağlantı isteği bildirilir.

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 tarafa da bildirim gönderilir ve connectionManager(_:didReceive:from:verificationHandler:) yetkilendirme yöntemiyle bağlantı doğrulanmalıdır.

Uygulamanızın, temsilci yöntemi tarafından sağlanan doğrulama kodunu kullanarak bağlantıyı doğrulaması önerilir. Bu, kullanıcıların amaçlanan cihaza bağlandıklarını onaylamalarına olanak tanır. Her iki cihaza da aynı kod verilir. Bu kod, kısa ve rastgele bir dizedir. Nasıl doğrulayacağınıza siz karar verirsiniz. Bu işlem genellikle jetonun her iki cihazda da gösterilmesini ve Bluetooth eşleştirme iletişim kutusuna benzer şekilde kullanıcıların manuel olarak karşılaştırıp onaylamasını gerektirir.

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ı yalnızca her iki taraf da kabul ettiğinde tamamen kurulur. Taraflardan biri veya her ikisi de reddederse bağlantı silinir.

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