Places SDK for iOS से, iOS के लिए Places Swift SDK (प्रीव्यू) पर माइग्रेट करना आसान है. साथ ही, इसे धीरे-धीरे किया जा सकता है. iOS के लिए Places Swift SDK (झलक) में मौजूद स्ट्रक्चर, Objective-C पर आधारित स्ट्रक्चर के साथ काम नहीं करते. इसलिए, हमारा सुझाव है कि GMSPlacesClient में एपीआई के इस्तेमाल के आधार पर, अलग-अलग फ़ंक्शन को माइग्रेट करें.
अपने प्रोजेक्ट में iOS के लिए Places Swift SDK (प्रीव्यू) जोड़ना
iOS के लिए Places Swift SDK (प्रीव्यू) का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
- Places API (नया) चालू करें.
अपनी डिपेंडेंसी में iOS के लिए 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 क्लाइंट को शुरू करने वाले टूल को अपडेट करना
कोड को आधुनिक बनाने और SDK के नए वर्शन की सुविधाओं का फ़ायदा पाने के लिए, आपको GMSPlacesClient को PlacesClient से बदलना होगा. इसके अलावा, नए तरीके में पैरामीटर के नाम बदले गए हैं. इसलिए, आपको पैरामीटर को 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 के लिए 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))")
}
अपडेट करने का तरीका और क्लास के नाम
आखिर में, fetchPlace
कोड को फिर से लिखकर और GMSPlacesClient
को शुरू करने और GMSPlaceProperty
के एलान, दोनों को हटाकर माइग्रेशन पूरा करें. iOS के लिए 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 (झलक) के रिलीज़ नोट वाले पेज पर जाएं.