Configurare un progetto Xcode

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

Per ogni release sono disponibili 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 14.0 o versioni successive.
  2. Cocoapods o Carta.

Passaggio 2: installa l'SDK

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

Utilizzare i cocoapie

L'SDK Places per iOS è disponibile come pod CocoaPod, GooglePlaces, che contiene la funzionalità per tutti i luoghi.

CocoaPods è un gestore delle dipendenze open source per i progetti Cocoa di Swift e Objective-C. Se non disponi già dello 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 hai appena iniziato a sviluppare prodotti per 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 i Podfile e aggiungi le dipendenze insieme alle rispettive versioni. Ecco un esempio che specifica il nome di destinazione dell'applicazione e il nome del pod GooglePlaces:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '8.0.0'
    end
    
    Assicurati di eseguire regolarmente pod outdated per rilevare quando è disponibile una versione più recente per assicurarti di utilizzare sempre la versione più recente.
  4. Salva 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 a tutte le eventuali dipendenze.

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

Per aggiornare l'API per un progetto esistente, segui questi passaggi:

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

Usa carta

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

  1. Installa 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 hai appena iniziato a sviluppare prodotti per 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 i Cartfile e aggiungi le dipendenze insieme alle rispettive 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 disporre sempre della versione più recente.
  5. Salva 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 a tutte le eventuali dipendenze.
  8. Nel Finder, nella directory del progetto, vai ai file del framework scaricati in Carthage/Build/iOS.
  9. Trascina i bundle seguenti nel progetto (quando richiesto, seleziona Copia elementi se necessario):
    • GooglePlaces-x.x.x/Frameworks/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 Resources nel progetto. Quando richiesto, assicurati che non sia selezionato Copia elementi nella cartella del gruppo di destinazione.
  12. Seleziona il progetto dalla barra di navigazione del progetto e scegli il target dell'applicazione.
  13. Apri la scheda Fasi di compilazione e, in Collega il programma binario 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, cambia il filtro nella barra Impostazioni build da Di base a Tutte.

Per aggiornare l'API per un progetto esistente, segui questi passaggi:

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

Installazione manuale

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

  1. Scarica i file di origine dell'SDK: GooglePlaces-8.0.0
  2. Decomprimi i file di origine.
  3. Avvia Xcode e apri un progetto esistente oppure creane uno nuovo. Se non hai mai utilizzato lo sviluppo iOS, crea un nuovo progetto e seleziona il modello di app iOS.
  4. Rimuovi eventuali pacchetti Maps dalle release precedenti del progetto.
  5. Trascina i bundle seguenti nel progetto (quando richiesto, seleziona Copia elementi se necessario):
    • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
  6. Fai clic con il tasto destro del mouse su GooglePlaces.xcframework nel progetto e seleziona Mostra nel Finder.
  7. Trascina GooglePlaces.bundle dalla cartella Resources nel progetto. Quando richiesto, assicurati che non sia selezionato Copia elementi nella cartella del gruppo di destinazione.
  8. Seleziona il progetto dalla barra di navigazione del progetto e scegli il target dell'applicazione.
  9. Apri la scheda Fasi di compilazione e, in Collega il programma binario 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, cambia 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 carta

L'SDK Places per iOS è disponibile per l'utilizzo con Carthage, un semplice gestore di dipendenze decentralizzato per i progetti Swift e Objective-C Cocoa.

  1. Installa 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 hai appena iniziato a sviluppare prodotti per 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 i Cartfile e aggiungi le dipendenze insieme alle rispettive versioni:

    binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1-beta
  5. Salva 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 a tutte le eventuali dipendenze.
  8. Nel Finder, nella directory del progetto, vai ai file del framework scaricati in Carthage/Build.
  9. Trascina il seguente XCFramework nel progetto in Framework, librerie e contenuti incorporati. 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 dalla barra di navigazione del progetto e scegli il target dell'applicazione.
  13. Apri la scheda Fasi di compilazione e, in Collega Binary with Libraries, 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, cambia 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-8.0.0.
  2. Decomprimi i file di origine. Vai alla cartella Frameworks per accedere all'elemento XCFramework.
  3. Avvia Xcode e apri un progetto esistente oppure creane uno nuovo. 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 Framework, librerie e contenuti incorporati. 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 dalla barra di navigazione del progetto e scegli il target dell'applicazione.
  8. Apri la scheda Fasi di compilazione e, in Collega Binary with Libraries, 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, cambia il filtro nella barra Impostazioni build da Di base a Tutte.

Passaggio 3: aggiungi la chiave API alla tua app

Negli esempi riportati di seguito, sostituisci YOUR_API_KEY con la tua 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 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 chiave API:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Passaggio 4: inizia a scrivere codice

I seguenti esempi di codice mostrano come ottenere la posizione corrente.

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.