iOS এর জন্য Places SDK থেকে iOS এর জন্য Places Swift SDK এ স্থানান্তর করা সহজ হওয়া উচিত এবং ক্রমবর্ধমানভাবে করা যেতে পারে। যেহেতু 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))")
}
}
প্লেস ক্লায়েন্ট ইনিশিয়ালাইজার আপডেট করুন
কোডটি আধুনিকীকরণ করতে এবং নতুন SDK এর ক্ষমতার সুবিধা নিতে, আপনাকে GMSPlacesClient কে PlacesClient দিয়ে প্রতিস্থাপন করতে হবে। অতিরিক্তভাবে, নতুন পদ্ধতিতে প্যারামিটারের নাম পরিবর্তন করা হয়েছে, তাই আপনাকে প্যারামিটারটি আপডেট করার পরিবর্তে from with আপডেট করতে হবে। অবশেষে, 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 থেকে বন্ধ করা হয়েছে। এগুলি আর v11.0 সংস্করণে উপলব্ধ থাকবে না যা 2026 সালের তৃতীয় প্রান্তিকে প্রকাশিত হবে।
এই টেবিলটি অবচিত পদ্ধতি এবং তাদের প্রতিস্থাপনগুলি দেখায়:
| অবচিত | প্রতিস্থাপন |
|---|---|
currentPlaceWithCallback অথবা findPlaceLikelihoodsFromCurrentLocationWithPlaceFields বর্তমান অবস্থানের সাথে স্থানের ক্ষেত্রের সাথে | searchNearbyWithRequest |
lookUpPlaceID অথবা fetchPlaceFromPlaceID | fetchPlaceWithRequest |
lookUpPhotosForPlaceID অথবা loadPlacePhoto | fetchPhotoWithRequest |
GMSAutocompletePrediction | AutocompleteSuggestion |
findAutocompletePredictionsFromQuery অথবা GMSAutocompleteFetcher | fetchAutocompleteSuggestionsFromRequest |
isOpenWithPlaceID অথবা isOpenWithPlace | isOpenWithRequest |
GMSAutocompleteResultsViewController , GMSAutocompleteTableDataSource , অথবা GMSAutocompleteViewController | placeAutocomplete |
পদ্ধতি এবং শ্রেণীর নাম আপডেট করুন
অবশেষে, fetchPlace কোডটি রিফ্যাক্টর করে এবং GMSPlacesClient initialization এবং GMSPlaceProperty ঘোষণা উভয়ই সরিয়ে মাইগ্রেশন সম্পূর্ণ করুন। Places Swift SDK-তে, "GMS" উপসর্গটি সরানোর জন্য পদ্ধতি এবং ক্লাসনামগুলি আপডেট করা হয়েছে এবং সেই অনুযায়ী আপডেট করতে হবে; যেমন, GMSFetchPlaceRequest FetchPlaceRequest হয়ে যায়।
টাইপ-হ্যান্ডলিং
নতুন fetchPlace পদ্ধতিতে উন্নত টাইপ হ্যান্ডলিং ব্যবহার করা হয়েছে। যদিও পুরানো কোডে সম্পত্তির raw মানগুলি পাস করার প্রয়োজন ছিল, নতুন কোডে ডেভেলপারদের এখানে স্পষ্টভাবে raw মানগুলি আনতে হবে না, যার ফলে সংক্ষিপ্তকরণ এবং পাঠযোগ্যতা উন্নত হবে।
সমান্তরালতা
অতিরিক্তভাবে, নতুন পদ্ধতিটি কনকারেন্সি সমর্থন করে, যা 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 এর রিলিজ নোট পৃষ্ঠাটি দেখুন।