iOS के लिए, Places Swift SDK टूल पर माइग्रेट करें (झलक)

iOS के लिए, Places SDK टूल से इस पर माइग्रेट करना iOS के लिए Places Swift SDK टूल की झलक आसान होनी चाहिए और इसे इंस्टॉल किया जा सकता है बढ़ोतरी होती है. iOS के लिए Places Swift SDK टूल (झलक) में दिए गए स्ट्रक्चर अगर ये वर्शन, Objective-C वाले संगठनों के साथ काम करते हैं, तो हमारा सुझाव है कि GMSPlaceClient में एपीआई के इस्तेमाल के आधार पर, अलग-अलग फ़ंक्शन का इस्तेमाल करती है.

अपने प्रोजेक्ट में iOS के लिए Places Swift SDK टूल (झलक) जोड़ें

iOS के लिए Places Swift SDK टूल (झलक) का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. Places API चालू करें (नया).
  2. जोड़ें iOS के लिए Places Swift 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))")
  }
}

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()

अपने आप पूरा होने के अनुरोध को अपडेट करें

इसके लिए, अपने-आप पूरा होने वाले अनुरोध के फ़्लो को अपडेट किया जा सकता है. पुराना कोड अपने-आप पूरे होने वाले सुझावों का अनुरोध करने के लिए कॉलबैक करें, जबकि नए कोड में await में से switch पैटर्न. कॉलबैक से कोड स्ट्रक्चर में जटिलता आ सकती है और गड़बड़ी ठीक करना. 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 में 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)")
}