সংযোগগুলি পরিচালনা করুন

একটি সংযোগ শুরু করুন

কাছাকাছি ডিভাইস খুঁজে পাওয়া গেলে, আবিষ্কারক সংযোগ শুরু করতে পারে। নিম্নলিখিত উদাহরণটি একটি ডিভাইস আবিষ্কৃত হওয়ার সাথে সাথেই সেটির সাথে সংযোগের অনুরোধ করে।

সুইফট

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:) ডেলিগেট পদ্ধতির মাধ্যমে সংযোগের অনুরোধটি সম্পর্কে অবহিত করা হয়।

সুইফট

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:) ডেলিগেট মেথডের মাধ্যমে সংযোগটি যাচাই করতে হবে।

আপনার অ্যাপ যেন ডেলিগেট মেথড দ্বারা প্রদত্ত ভেরিফিকেশন কোড ব্যবহার করে সংযোগটি যাচাই করে, সে ব্যাপারে পরামর্শ দেওয়া হচ্ছে। এর মাধ্যমে ব্যবহারকারীরা নিশ্চিত করতে পারেন যে, তাঁরা উদ্দিষ্ট ডিভাইসের সাথেই সংযোগ স্থাপন করছেন। উভয় ডিভাইসকেই একই কোড দেওয়া হয়, যা একটি সংক্ষিপ্ত র‍্যান্ডম স্ট্রিং; এটি কীভাবে যাচাই করবেন, সেই সিদ্ধান্ত আপনার উপর নির্ভর করে। সাধারণত, ব্লুটুথ পেয়ারিং ডায়ালগের মতোই, উভয় ডিভাইসে টোকেনটি দেখানো হয় এবং ব্যবহারকারীদেরকে ম্যানুয়ালি তুলনা করে নিশ্চিত করতে বলা হয়।

সুইফট

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

উভয় পক্ষ সম্মতি দিলেই সংযোগটি সম্পূর্ণরূপে স্থাপিত হয়। যদি এক পক্ষ বা উভয় পক্ষ প্রত্যাখ্যান করে, তবে সংযোগটি বাতিল হয়ে যায়।

উপরের উদাহরণগুলোতে দেখা যাচ্ছে যে সংযোগটি উভয় পক্ষ দ্বারা স্বয়ংক্রিয়ভাবে গৃহীত হচ্ছে, কিন্তু আপনার ব্যবহারের ধরনের ওপর নির্ভর করে আপনি ব্যবহারকারীকে এই পছন্দের সুযোগটি কোনোভাবে দিতে চাইতে পারেন।