Configurare un progetto Xcode

Segui i passaggi descritti in questa guida per scaricare l'SDK Places per iOS, aggiungere la libreria e le sue dipendenze alla tua app e ottenere una chiave API senza costi aggiuntivi.

Per ogni release sono disponibili le note di rilascio.

Passaggio 1: scarica l'ultima versione di Xcode

Per creare un progetto utilizzando l'SDK Places per iOS, devi disporre di:

  1. Xcode 13.0 o versioni successive.
  2. Cocoapods o Cartagine.

Passaggio 2: installa l'SDK

Per installare l'API in un nuovo progetto, segui questi passaggi:

Utilizzare i cocoapod

L'SDK Places per iOS è disponibile come pod CocoaPod, GooglePlaces, che contiene tutte le funzionalità di Places.

CocoaPods è un gestore di dipendenze open source per progetti Cocoa Swift e Objective-C. Se non hai ancora lo strumento CocoaPods, installalo su macOS eseguendo il comando seguente dal terminale. Per maggiori dettagli, consulta la Guida introduttiva a CocoaPods.

sudo gem install cocoapods

Crea un Podfile per l'SDK Places per iOS e utilizzalo per installare l'SDK e le sue dipendenze:

  1. Se non hai ancora un progetto Xcode, creane uno ora e salvalo sulla tua macchina locale. Se sei più recente nello sviluppo iOS, crea un nuovo progetto e seleziona il modello di app per iOS.
  2. Crea un file denominato Podfile nella directory del progetto. Questo file definisce le dipendenze del progetto.
  3. Modifica il Podfile e aggiungi le tue dipendenze insieme alle relative versioni. Ecco un esempio che specifica il nome della destinazione dell'applicazione e il nome del pod GooglePlaces:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '13.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '7.2.0'
    end
    Assicurati di eseguire regolarmente pod outdated per rilevare quando è disponibile una versione più recente per assicurarti di essere sempre aggiornato.
  4. Salva il Podfile.
  5. Apri un terminale e vai alla directory contenente il Podfile:

    cd <path-to-project>
  6. Esegui il comando pod install. Verranno installate le API specificate in Podfile, insieme alle eventuali dipendenze che potrebbero avere.

    pod install
  7. Chiudi Xcode, quindi apri (fai doppio clic) sul file .xcworkspace del progetto per avviare Xcode. Da quel momento in poi, dovrai utilizzare il file .xcworkspace per aprire il progetto.

Per aggiornare l'API per un progetto esistente:

  1. Apri un terminale e vai alla directory del progetto contenente Podfile.
  2. Esegui il comando pod update. Tutte le API specificate in Podfile verranno aggiornate all'ultima versione.

Usa Cartagine

L'SDK Places per iOS può essere utilizzato con Carthage, un semplice gestore decentralizzato delle dipendenze per i progetti Swift e Objective-C Cocoa.

  1. Installare Cartagine. Esistono diversi metodi, quindi consulta il file README di Cartagine per i passaggi esatti.
  2. Se non hai ancora un progetto Xcode, creane uno ora e salvalo sulla tua macchina locale. Se sei più recente nello sviluppo iOS, crea un nuovo progetto e seleziona il modello di app per iOS.
  3. Crea un file denominato Cartfile nella directory del progetto. Questo file definisce le dipendenze del progetto.
  4. Modifica il Cartfile e aggiungi le tue dipendenze insieme alle relative versioni:
     binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1
    Assicurati di eseguire regolarmente carthage outdated per rilevare quando è disponibile una versione più recente per assicurarti di avere sempre le versioni più recenti.
  5. Salva il Cartfile.
  6. In una finestra del terminale, vai alla directory contenente Cartfile:
    cd <path-to-project>
  7. Esegui il comando carthage update. Verranno installate le API specificate in Cartfile, insieme alle eventuali dipendenze che potrebbero avere.
  8. Nel Finder, nella directory del progetto, vai ai file del framework scaricati in Carthage/Build/iOS.
  9. Trascina i seguenti pacchetti nel progetto (quando richiesto, seleziona Copia elementi se necessario):
    • GooglePlaces-5.x.x/Frameworks/GooglePlaces.framework
  10. Fai clic con il tasto destro del mouse su GooglePlaces.framework nel progetto e seleziona Mostra nel Finder.
  11. Trascina GooglePlaces.bundle dalla cartella Resources nel progetto. Quando richiesto, assicurati che l'opzione Copia elementi nella cartella del gruppo di destinazione non sia selezionata.
  12. Seleziona il progetto nel navigatore dei progetti e scegli la destinazione dell'applicazione.
  13. Apri la scheda Fasi della build e, in Collega binaria con librerie, aggiungi i seguenti framework e librerie:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. Scegli il progetto, anziché un target specifico, e apri la scheda Impostazioni build.

  15. Nella sezione Altri flag del linker, aggiungi -ObjC. Se queste impostazioni non sono visibili, modifica il filtro nella barra Impostazioni build da Di base a Tutte.

Per aggiornare l'API per un progetto esistente:

  1. Apri un terminale e vai alla directory del progetto contenente Cartfile.
  2. Esegui il comando carthage update. Tutte le API specificate in Cartfile verranno aggiornate alla versione più recente.

Installa manualmente

Questa guida mostra come aggiungere manualmente il framework Google Places al vostro progetto e configurare le impostazioni di build in Xcode.

  1. Scarica i file di origine dell'SDK: GooglePlaces-7.2.0
  2. Apri i file di origine.
  3. Avvia Xcode e apri un progetto esistente oppure crea un nuovo progetto. Se hai effettuato lo sviluppo per iOS di recente, crea un nuovo progetto e seleziona il modello di app per iOS.
  4. Rimuovi dal progetto eventuali bundle Maps dalle release precedenti.
  5. Trascina i seguenti pacchetti nel progetto (quando richiesto, seleziona Copia elementi se necessario):
    • GooglePlaces-5.x.x/Frameworks/GooglePlaces.framework
  6. Fai clic con il tasto destro del mouse su GooglePlaces.framework nel progetto e seleziona Mostra nel Finder.
  7. Trascina GooglePlaces.bundle dalla cartella Resources nel progetto. Quando richiesto, assicurati che l'opzione Copia elementi nella cartella del gruppo di destinazione non sia selezionata.
  8. Seleziona il progetto nel navigatore dei progetti e scegli la destinazione dell'applicazione.
  9. Apri la scheda Fasi della build e, in Collega binaria con librerie, aggiungi i seguenti framework e librerie:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. Scegli il progetto, anziché un target specifico, e apri la scheda Impostazioni build.

  11. Nella sezione Altri flag del linker, aggiungi -ObjC. Se queste impostazioni non sono visibili, modifica il filtro nella barra Impostazioni build da Di base a Tutte.

Installa XCFramework

Un XCFramework è un pacchetto binario che puoi utilizzare su più piattaforme, incluse le macchine che utilizzano il chipset M1, per installare l'SDK Places per iOS. Questa guida mostra come aggiungere al tuo progetto l'XCFramework contenente l'SDK Places per iOS e configurare le impostazioni di build in Xcode.

Con Cartagine

L'SDK Places per iOS può essere utilizzato con Carthage, un semplice gestore decentralizzato delle dipendenze per i progetti Swift e Objective-C Cocoa.

  1. Installare Cartagine. Esistono diversi metodi, quindi consulta il file README di Cartagine per i passaggi esatti.
  2. Se non hai ancora un progetto Xcode, creane uno ora e salvalo sulla tua macchina locale. Se sei più recente nello sviluppo iOS, crea un nuovo progetto e seleziona il modello di app per iOS.
  3. Crea un file denominato Cartfile nella directory del progetto. Questo file definisce le dipendenze del progetto.
  4. Modifica il Cartfile e aggiungi le tue dipendenze insieme alle relative versioni:

    binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1-beta
  5. Salva il Cartfile.
  6. In una finestra del terminale, vai alla directory contenente Cartfile:

    cd <path-to-project>
  7. Esegui il comando carthage update. Verranno installate le API specificate in Cartfile, insieme alle eventuali dipendenze che potrebbero avere.
  8. Nel Finder, nella directory del progetto, vai ai file del framework scaricati in Carthage/Build.
  9. Trascina il seguente XCFramework nel progetto in Frameworks, Libraries e Embedded Content. Assicurati di selezionare Non incorporare:
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  10. Fai clic con il tasto destro del mouse su GooglePlaces.xcframework nel progetto e seleziona Mostra nel Finder.
  11. Trascina GooglePlaces.bundle dalla cartella ios-arm64/GooglePlaces.framework/Resources nella directory di primo livello del tuo progetto Xcode. Quando richiesto, assicurati che l'opzione Copia elementi nella cartella del gruppo di destinazione non sia selezionata.
  12. Seleziona il progetto nel navigatore dei progetti e scegli la destinazione dell'applicazione.
  13. Apri la scheda Fasi della build e in Collega binaria con le librerie e aggiungi i seguenti framework e librerie:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. Scegli il progetto, anziché un target specifico, e apri la scheda Impostazioni build.

  15. Nella sezione Altri flag del linker, aggiungi -ObjC. Se queste impostazioni non sono visibili, modifica il filtro nella barra Impostazioni build da Di base a Tutte.

Manualmente

Questa guida mostra come aggiungere manualmente l'SDK Maps per iOS al tuo progetto e configurare le impostazioni di build in Xcode.

  1. Scarica i file di origine dell'SDK: GooglePlaces-7.2.0-beta-xcframework.
  2. Apri i file di origine.
  3. Avvia Xcode e apri un progetto esistente oppure crea un nuovo progetto. Se non hai mai utilizzato iOS, crea un nuovo progetto e seleziona il modello di app per iOS.
  4. Trascina il seguente XCFramework nel progetto in Frameworks, Libraries e Embedded Content. Assicurati di selezionare Non incorporare:
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  5. Fai clic con il tasto destro del mouse su GooglePlaces.xcframework nel progetto e seleziona Mostra nel Finder.
  6. Trascina GooglePlaces.bundle dalla cartella ios-arm64/GooglePlaces.framework/Resources nella directory di primo livello del tuo progetto Xcode. Quando richiesto, assicurati che l'opzione Copia elementi nella cartella del gruppo di destinazione non sia selezionata.
  7. Seleziona il progetto nel navigatore dei progetti e scegli la destinazione dell'applicazione.
  8. Apri la scheda Fasi della build e in Collega binaria con le librerie e aggiungi i seguenti framework e librerie:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  9. Scegli il progetto, anziché un target specifico, e apri la scheda Impostazioni build.

  10. Nella sezione Altri flag del linker, aggiungi -ObjC. Se queste impostazioni non sono visibili, modifica il filtro nella barra Impostazioni build da Di base a Tutte.

Passaggio 3: aggiungi la chiave API all'app

Negli esempi seguenti, sostituisci YOUR_API_KEY con la chiave API.

Swift

Aggiungi la chiave API a AppDelegate.swift come segue:

  • Aggiungi la seguente istruzione di importazione:
    import GooglePlaces
  • Aggiungi quanto segue al metodo application(_:didFinishLaunchingWithOptions:), sostituendo YOUR_API_KEY con la tua chiave API:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

Aggiungi la chiave API a AppDelegate.m come segue:

  • Aggiungi la seguente istruzione di importazione:
    @import GooglePlaces;
  • Aggiungi quanto segue al metodo application:didFinishLaunchingWithOptions:, sostituendo YOUR_API_KEY con la tua chiave API:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Passaggio 4: inizia a scrivere il codice

I seguenti esempi di codice mostrano come ottenere il luogo attuale.

Swift

import GooglePlaces
import UIKit

class GetStartedViewController : UIViewController {

  // Add a pair of UILabels in Interface Builder, and connect the outlets to these variables.
  @IBOutlet private var nameLabel: UILabel!
  @IBOutlet private var addressLabel: UILabel!

  private var placesClient: GMSPlacesClient!

  override func viewDidLoad() {
    super.viewDidLoad()
    placesClient = GMSPlacesClient.shared()
  }

  // Add a UIButton in Interface Builder, and connect the action to this function.
  @IBAction func getCurrentPlace(_ sender: UIButton) {
    let placeFields: GMSPlaceField = [.name, .formattedAddress]
    placesClient.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: placeFields) { [weak self] (placeLikelihoods, error) in
      guard let strongSelf = self else {
        return
      }

      guard error == nil else {
        print("Current place error: \(error?.localizedDescription ?? "")")
        return
      }

      guard let place = placeLikelihoods?.first?.place else {
        strongSelf.nameLabel.text = "No current place"
        strongSelf.addressLabel.text = ""
        return
      }

      strongSelf.nameLabel.text = place.name
      strongSelf.addressLabel.text = place.formattedAddress
    }
  }
}
      

Objective-C

#import "GetStartedViewController.h"
@import GooglePlaces;

@interface GetStartedViewController ()
// Add a pair of UILabels in Interface Builder and connect the outlets to these variables
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *addressLabel;
@end

@implementation GetStartedViewController {
  GMSPlacesClient *_placesClient;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  _placesClient = [GMSPlacesClient sharedClient];
}

// Add a pair of UILabels in Interface Builder and connect the outlets to these variables.
- (IBAction)getCurrentPlace:(UIButton *)sender {
  GMSPlaceField placeFields = (GMSPlaceFieldName | GMSPlaceFieldFormattedAddress);

  __weak typeof(self) weakSelf = self;
  [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:placeFields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) {
    __typeof__(self) strongSelf = weakSelf;
    if (strongSelf == nil) {
      return;
    }

    if (error != nil) {
      NSLog(@"An error occurred %@", [error localizedDescription]);
      return;
    }

    GMSPlace *place = likelihoods.firstObject.place;
    if (place == nil) {
      strongSelf.nameLabel.text = @"No current place";
      strongSelf.addressLabel.text = @"";
      return;
    }

    strongSelf.nameLabel.text = place.name;
    strongSelf.addressLabel.text = place.formattedAddress;
  }];
}

@end
      

Passaggi successivi

Dopo aver configurato il progetto, puoi esplorare le app di esempio. Dovrai installare Cocoapods v1.6.1.