Places SDK for iOS (Legacy) থেকে Places Swift SDK for iOS-এ মাইগ্রেট করা সহজ এবং এটি ধীরে ধীরে করা যেতে পারে। iOS-এর জন্য Places Swift SDK-তে স্ট্রাক্টগুলি তাদের Objective-C ভিত্তিক সমকক্ষগুলির সাথে সামঞ্জস্যপূর্ণ নয়, তাই আমরা GMSPlacesClient-এ API-এর ব্যবহারের উপর ভিত্তি করে কার্যকারিতার বিচ্ছিন্ন অংশগুলি মাইগ্রেট করার পরামর্শ দিই।
আপনার প্রোজেক্টে iOS-এর জন্য Places Swift SDK যোগ করুন
iOS-এর জন্য Places Swift SDK ব্যবহার করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করতে হবে:
- Places API (নতুন) চালু করুন।
আপনার ডিপেন্ডেন্সিতে Places Swift SDK যোগ করুন। আপনি
GooglePlaces,GooglePlacesSwiftঅথবা দুটিই ইনস্টল করার বিকল্প বেছে নিতে পারেন।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-এর সুবিধা নিতে, আপনাকে
PlacesClient-এর সাথে GMSPlacesClient পরিবর্তন করতে হবে। এছাড়াও, নতুন পদ্ধতিতে
প্যারামিটারের নাম পরিবর্তন করা হয়েছে, তাই আপনাকে 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 প্যাটার্ন ব্যবহার করে। কলব্যাক কোড স্ট্রাকচার ও
এরর ম্যানেজমেন্টকে আরও জটিল করে তুলতে পারে। নতুন Places Swift 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))")
}
পুরনো হয়ে যাওয়া ক্লাস, মেথড ও টাইপডেফ পরিবর্তন করা
iOS-এর জন্য Places SDK-তে নিম্নলিখিত ক্লাস, পদ্ধতি এবং টাইপডেফ 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)")
}
আপ-টু-ডেট থাকুন
নতুন ফিচার ও পরিবর্তন সম্পর্কে জানতে iOS-এর জন্য Places Swift SDK-এর রিলিজ নোট পৃষ্ঠা দেখুন।