iOS-এর জন্য Places Swift SDK-এ মাইগ্রেট করুন

Places SDK for iOS থেকে Places Swift SDK for iOS-এ মাইগ্রেট করা সহজ হওয়া উচিত এবং এটি পর্যায়ক্রমে করা যেতে পারে। যেহেতু Places Swift SDK for iOS-এর struct-গুলো তাদের Objective-C ভিত্তিক প্রতিরূপের সাথে সামঞ্জস্যপূর্ণ নয়, তাই আমরা GMSPlacesClient-এর API ব্যবহারের উপর ভিত্তি করে কার্যকারিতার পৃথক অংশ মাইগ্রেট করার পরামর্শ দিই।

আপনার প্রোজেক্টে iOS-এর জন্য Places Swift SDK যোগ করুন।

iOS-এর জন্য Places Swift SDK ব্যবহার করতে নিম্নলিখিত ধাপগুলো অনুসরণ করতে হবে:

  1. প্লেসেস এপিআই (নতুন) সক্রিয় করুন।
  2. আপনার ডিপেন্ডেন্সিতে Places Swift SDK যোগ করুন। আপনি GooglePlaces , GooglePlacesSwift , অথবা উভয়ই ইনস্টল করতে পারেন।

  3. PlacesClient ব্যবহার করে Places ক্লায়েন্টটি চালু করুন।

ধাপে ধাপে স্থানান্তরের উদাহরণ

উদাহরণস্বরূপ, ধরা যাক, iOS-এর জন্য Places SDK ব্যবহারকারী একটি অ্যাপ টেক্সট ইনপুটের উপর ভিত্তি করে অটোকমপ্লিট সাজেশন গ্রহণ করে এবং তারপর প্রথম সাজেশনটির বিস্তারিত তথ্য সংগ্রহ করে। iOS-এর জন্য Places SDK ব্যবহার করে, বিদ্যমান কোডটি দেখতে নিচের মতো হতে পারে:

// Initialize Places Client.
GMSPlacesClient.provideAPIKey(apiKey)
let client = GMSPlacesClient.shared()

// Fetch Autocomplete Request.
let center = CLLocation(latitude: 37.3913916, longitude: -122.0879074)
let northEast = CLLocationCoordinate2DMake(37.388162, -122.088137)
let southWest = CLLocationCoordinate2DMake(37.395804, -122.077023)

let filter = GMSAutocompleteFilter()
filter.types = [kGMSPlaceTypeRestaurant]
filter.origin = center
filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest)

let request = GMSAutocompleteRequest(query: "Sicilian piz")
request.filter = filter

client.fetchAutocompleteSuggestions(from: request) { (results, error) in
  guard let results, error == nil else {
    print("Autocomplete error: \(String(describing: error))")
    return
  }

  // Fetch Place Request.
  guard let placeID = results.first?.placeSuggestion?.placeID else { return }
  let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue}

  let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil)

  client.fetchPlace(with: fetchPlaceRequest) { (place: GMSPlace?, error: Error?) in
    guard let place, error == nil else { return }
    print("Place found: \(String(describing: place.name)); \(String(describing: place.website))")
  }
}

Places Client ইনিশিয়ালাইজার আপডেট করুন

কোডটিকে আধুনিক করতে এবং নতুন SDK-এর সুবিধাগুলো গ্রহণ করতে, আপনাকে GMSPlacesClient-এর পরিবর্তে PlacesClient ব্যবহার করতে হবে। এছাড়াও, নতুন মেথডটিতে প্যারামিটারের নাম পরিবর্তন করা হয়েছে, তাই আপনাকে প্যারামিটারটি with এর পরিবর্তে from এ আপডেট করতে হবে। সবশেষে, Places Swift SDK আপগ্রেড করা AutocompleteRequest ব্যবহার করে।

আপডেট করা কোড

// Initialize Places Swift Client.
let _ = PlacesClient.provideAPIKey(apiKey)
let placesSwiftClient = PlacesClient.shared

মূল কোড

// Initialize Places Client.
GMSPlacesClient.provideAPIKey(apiKey)
let client = GMSPlacesClient.shared()

অটোকমপ্লিট অনুরোধ আপডেট করুন

আপনি অটোকমপ্লিট রিকোয়েস্ট ফ্লো আপডেট করার মাধ্যমে শুরু করতে পারেন। পুরোনো কোডটি অটোকমপ্লিট সাজেশনের জন্য অনুরোধ করতে একটি কলব্যাক ব্যবহার করে, যেখানে নতুন কোডটি একটি switch / await প্যাটার্ন ব্যবহার করে। কলব্যাক কোডের গঠন এবং এরর হ্যান্ডলিং-এ জটিলতা যোগ করতে পারে। নতুন প্লেসেস সুইফট এসডিকে কনকারেন্সি সমর্থন করে, যা অ্যাসিঙ্ক্রোনাস অপারেশনগুলোকে সহজ করে তোলে।

// Initialize Places Swift Client.
let _ = PlacesClient.provideAPIKey(apiKey)
let placesSwiftClient = PlacesClient.shared

// Fetch Autocomplete Request.
let center = CLLocation(latitude: 37.3913916, longitude: -122.0879074)
let northEast = CLLocationCoordinate2DMake(37.388162, -122.088137)
let southWest = CLLocationCoordinate2DMake(37.395804, -122.077023)

let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest)
let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias)

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter)
let placeID: String
switch await placesSwiftClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let results):
  switch results.first {
  case .place(let placeSuggestion):
    placeID = placeSuggestion.placeID
  case .none:
    fallthrough
  @unknown default:
    return
  }
case .failure(let placesError):
  print("Autocomplete error: \(placesError)")
  return
}

// Initialize Places Client.
GMSPlacesClient.provideAPIKey(apiKey)
let placesClient = GMSPlacesClient.shared()

// Fetch Place Request.
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue}

let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil)

placesClient.fetchPlace(with: fetchPlaceRequest) { (place: GMSPlace?, error: Error?) in
  guard let place, error == nil else { return }
  print("Place found: \(String(describing: place.name)); \(String(describing: place.website))")
}

অপ্রচলিত ক্লাস, মেথড এবং টাইপডেফ প্রতিস্থাপন করুন

iOS-এর জন্য Places SDK-এর নিম্নলিখিত ক্লাস, মেথড এবং টাইপডেফগুলো v10.4 সংস্করণ থেকে অপ্রচলিত (deprecated) ঘোষণা করা হয়েছে। ২০২৬ সালের তৃতীয় ত্রৈমাসিকে (Q3 2026) প্রকাশিতব্য v11.0 সংস্করণে এগুলো আর পাওয়া যাবে না।

এই সারণিতে অপ্রচলিত মেথডগুলো এবং তাদের প্রতিস্থাপনগুলো দেখানো হয়েছে:

অপ্রচলিত প্রতিস্থাপন
currentPlaceWithCallback অথবা findPlaceLikelihoodsFromCurrentLocationWithPlaceFields searchNearbyWithRequest
lookUpPlaceID অথবা fetchPlaceFromPlaceID fetchPlaceWithRequest
lookUpPhotosForPlaceID অথবা loadPlacePhoto fetchPhotoWithRequest
GMSAutocompletePrediction AutocompleteSuggestion
findAutocompletePredictionsFromQuery অথবা GMSAutocompleteFetcher fetchAutocompleteSuggestionsFromRequest
isOpenWithPlaceID অথবা isOpenWithPlace isOpenWithRequest
GMSAutocompleteResultsViewController , GMSAutocompleteTableDataSource , অথবা GMSAutocompleteViewController placeAutocomplete

মেথড এবং ক্লাসের নাম আপডেট করুন

অবশেষে, fetchPlace কোডটি রিফ্যাক্টর করে এবং GMSPlacesClient ইনিশিয়ালাইজেশন ও GMSPlaceProperty ডিক্লারেশন উভয়ই অপসারণ করে মাইগ্রেশনটি সম্পূর্ণ করুন। Places Swift SDK-তে, মেথড এবং ক্লাসের নাম থেকে "GMS" প্রিফিক্সটি অপসারণ করে আপডেট করা হয়েছে, এবং সেই অনুযায়ী সেগুলিও আপডেট করতে হবে; যেমন, GMSFetchPlaceRequest এর পরিবর্তে FetchPlaceRequest হবে।

টাইপ-হ্যান্ডলিং

নতুন fetchPlace মেথডটি উন্নত টাইপ হ্যান্ডলিং ব্যবহার করে। পুরোনো কোডে যেখানে প্রপার্টির র ভ্যালু পাস করার প্রয়োজন হতো, সেখানে নতুন কোডে ডেভেলপারদের আর স্পষ্টভাবে র ভ্যালু ফেচ করার প্রয়োজন হয় না, ফলে এটি আরও সংক্ষিপ্ত ও পাঠযোগ্য হয়েছে।

যুগপৎ

এছাড়াও, নতুন পদ্ধতিটি কনকারেন্সি সমর্থন করে, যার ফলে placesClient.fetchPlace এর কলব্যাকটিকে placesSwiftClient.fetchPlace এ একটি switch / await প্যাটার্ন দিয়ে প্রতিস্থাপন করা যায়।

// Initialize Places Swift Client.
let _ = PlacesClient.provideAPIKey(apiKey)
let placesSwiftClient = PlacesClient.shared

// Fetch Autocomplete Request.
let center = CLLocation(latitude: 37.3913916, longitude: -122.0879074)
let northEast = CLLocationCoordinate2DMake(37.388162, -122.088137)
let southWest = CLLocationCoordinate2DMake(37.395804, -122.077023)

let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest)
let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias)

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter)
let placeID: String
switch await placesSwiftClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let results):
  switch results.first {
  case .place(let placeSuggestion):
    placeID = placeSuggestion.placeID
  case .none:
    fallthrough
  @unknown default:
    return
  }
case .failure(let placesError):
  print("Autocomplete error: \(placesError)")
  return
}

// Fetch Place Request.
let fetchPlaceRequest = FetchPlaceRequest(placeID: placeID, placeProperties: [.displayName, .websiteURL])
switch await placesSwiftClient.fetchPlace(with: fetchPlaceRequest) {
case .success(let place):
  print("Place found: \(place.displayName): \(String(describing: place.description))")

case .failure(let placesError):
  print("Place not found: \(placeID); \(placesError)")
}

হালনাগাদ থাকুন

নতুন বৈশিষ্ট্য ও পরিবর্তনগুলো সম্পর্কে জানতে Places Swift SDK for iOS-এর রিলিজ নোট পৃষ্ঠাটি দেখুন।