iOS এর জন্য স্থানান্তর করুন সুইফট SDK (প্রিভিউ)

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

আপনার প্রকল্পে iOS (প্রিভিউ) এর জন্য স্থান সুইফট SDK যোগ করুন

iOS এর জন্য Places Swift SDK ব্যবহার করার জন্য নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন (প্রিভিউ):

  1. স্থান API (নতুন) সক্ষম করুন৷
  2. আপনার নির্ভরতাগুলিতে iOS (প্রিভিউ) এর জন্য স্থান সুইফট SDK যোগ করুন।
  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))")
  }
}

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

কোডটি আধুনিকীকরণ করতে এবং নতুন SDK-এর ক্ষমতার সুবিধা নিতে, আপনাকে PlacesClient-এর সাথে GMSPlacesClient প্রতিস্থাপন করতে হবে। অতিরিক্তভাবে, নতুন পদ্ধতিতে প্যারামিটারের নাম পরিবর্তন করা হয়েছে, তাই আপনাকে with পরিবর্তে from থেকে প্যারামিটার আপডেট করতে হবে। অবশেষে, iOS এর জন্য 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 প্যাটার্ন নিয়োগ করে। কলব্যাক কোড গঠন এবং ত্রুটি পরিচালনার জটিলতা যোগ করতে পারে। iOS (প্রিভিউ) এর জন্য নতুন প্লেস সুইফ্ট SDK কনকারেন্সি সমর্থন করে, যা অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপকে সহজ করে।

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

পদ্ধতি এবং ক্লাসের নাম আপডেট করুন

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

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

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

সঙ্গতি

অতিরিক্তভাবে, নতুন পদ্ধতিটি সঙ্গতি সমর্থন করে, যা placesClient.fetchPlace এ একটি switch / await প্যাটার্ন দিয়ে placesSwiftClient.fetchPlace এ কলব্যাক প্রতিস্থাপনের অনুমতি দেয়।

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