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

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

Places SDK for iOS-এর নিম্নলিখিত ক্লাস, মেথড এবং টাইপডেফগুলো 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-এর রিলিজ নোট পৃষ্ঠাটি দেখুন।