Migra a Place Details (nuevo)

El SDK de Places para iOS es compatible con la versión existente de Place Details. Si conoces el SDK de Places para iOS existente, la versión nueva de Place Details realiza los siguientes cambios:

  • Usa un nuevo modelo de precios. Para obtener información sobre los precios de todas las APIs, consulta Precios del SDK de Places para iOS (nuevo).

  • El enmascaramiento de campo es obligatorio. Debes especificar qué campos quieres que se muestren en la respuesta. No hay una lista predeterminada de los campos que se muestran. Si omites esta lista, los métodos mostrarán un error.

  • Para realizar una solicitud, llama al nuevo método GMSPlacesClient fetchPlaceWithRequest:.

  • Pasa a la solicitud:

    • Una instancia de la nueva clase GMSFetchPlaceRequest que define todos los parámetros de solicitud, como el ID de lugar y el token de sesión.

    • Una devolución de llamada de tipo GMSPlaceResultCallback para controlar la respuesta.

  • En la respuesta, se incluye una instancia de GMSPlace con detalles sobre el lugar. Los valores en la propiedad types de la instancia GMSPlace ahora se definen en la Tabla A y la Tabla B.

  • La instancia de GMSPlace de respuesta contiene la nueva propiedad reviews del tipo GMSPlaceReview. Cuando tu app muestra información obtenida de la instancia de GMSPlace, como fotos y opiniones, también debe mostrar las atribuciones requeridas.

    Para obtener más información, consulta la documentación sobre las atribuciones.

  • La instancia GMSPlace de respuesta contiene las siguientes funciones de miembro:

    • isOpen calcula si un lugar está abierto en un momento determinado.

    • isOpenAtDate calcula si un lugar está abierto en una fecha determinada.

    Estas funciones solo están disponibles cuando habilitas el SDK de Places para iOS. No están disponibles cuando habilitas el SDK de Places para iOS (nuevo). Para obtener más información, consulta Cómo elegir tu versión del SDK.

Ejemplo de solicitud

Con Place Details (nuevo), realizas una solicitud y pasas todos los parámetros en la instancia GMSFetchPlaceRequest. En este ejemplo, también se usa una máscara de campo para que la respuesta solo incluya el nombre visible y la URL del sitio web del lugar:

Swift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let fields: [GMSPlaceProperty] = [.name, .website]

// Create the GMSFetchPlaceRequest instance.
let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: fields)

client.fetchPlaceWithRequest(fetchPlaceRequest: fetchPlaceRequest, callback: {
  (place: GMSPlace?, error: Error?) in
  guard let place, error == nil else { return }
  print("Place found: \(place.name)")
})

Objective‑C

// A hotel in Saigon with an attribution.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

// Specify the place data types to return.
NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyName, GMSPlacePropertyWebsite];

// Create the GMSFetchPlaceRequest instance.
GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: fields];

[placesClient fetchPlaceWithRequest: fetchPlaceRequest, callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) {
  if (error == null) {
    NSLog(@"Place Found: %@", place.name);
  }
}];