Configurare un progetto Xcode

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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 ricevere una chiave API senza costi aggiuntivi.

Per ogni release sono disponibili note di rilascio.

Passaggio 1: installa la versione più recente 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:

Usa Cocoapod

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

CocoaPods è un gestore delle dipendenze open source per i progetti Cocoa di 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 di 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 e salvalo sulla tua macchina locale. Se hai appena iniziato a sviluppare 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 Podfile e aggiungi le 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.4.0'
    end
    
    Assicurati di eseguire regolarmente pod outdated per rilevare quando è disponibile una versione più recente per assicurarti di avere sempre l'ultima versione.
  4. Salva Podfile.
  5. Apri un terminale e vai alla directory contenente Podfile:

    cd <path-to-project>
  6. Esegui il comando pod install. Verranno installate le API specificate in Podfile, insieme a 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, 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 in Podfile verranno aggiornate alla versione più recente.

Usa Cartagine

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

  1. Installa Cartagine. Esistono diversi metodi, quindi consulta il file README di Cartagine per conoscere la procedura esatta.
  2. Se non hai ancora un progetto Xcode, creane uno e salvalo sulla tua macchina locale. Se hai appena iniziato a sviluppare 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 Cartfile e aggiungi le 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 l'ultima versione.
  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 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 bundle nel tuo progetto (quando richiesto, seleziona Copia gli 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 in 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 dal navigatore dei progetti e scegli il target dell'applicazione.
  13. Apri la scheda Fasi della build e, in Collega 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, modifica il filtro nella barra Impostazioni build da 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 in 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 compilazione in Xcode.

  1. Scarica i file sorgente SDK: GooglePlaces-7.4.0
  2. Decomprimi i file di origine.
  3. Avvia Xcode e apri un progetto esistente oppure crea un nuovo progetto. Se hai appena iniziato a sviluppare iOS, crea un nuovo progetto e seleziona il modello di app per iOS.
  4. Rimuovi dal bundle qualsiasi bundle Maps delle release precedenti.
  5. Trascina i seguenti bundle nel tuo progetto (quando richiesto, seleziona Copia gli 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 in 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 dal navigatore dei progetti e scegli il target dell'applicazione.
  9. Apri la scheda Fasi della build e, in Collega 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, modifica il filtro nella barra Impostazioni build da 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 progetto il progetto XCFramework contenente l'SDK Places per iOS e configurare le impostazioni della build in Xcode.

Con cartagine

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

  1. Installa Cartagine. Esistono diversi metodi, quindi consulta il file README di Cartagine per conoscere la procedura esatta.
  2. Se non hai ancora un progetto Xcode, creane uno e salvalo sulla tua macchina locale. Se hai appena iniziato a sviluppare 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 Cartfile e aggiungi le dipendenze insieme alle relative 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 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 tuo progetto in Framework, Libraries and 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 dal navigatore dei progetti e scegli il target dell'applicazione.
  13. Apri la scheda Fasi della build e, in Collega 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, modifica il filtro nella barra Impostazioni build da Base a Tutte.

Manualmente

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

  1. Scarica i file sorgente SDK: GooglePlaces-7.4.0.
  2. Decomprimi i file di origine. Vai alla cartella Frameworks per accedere all'XCFramework.
  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 tuo progetto in Framework, Libraries and 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 dal navigatore dei progetti e scegli il target dell'applicazione.
  8. Apri la scheda Fasi della build e, in Collega programma binario con librerie, 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 Base a Tutte.

Passaggio 3: aggiungi la chiave API alla tua app

Negli esempi riportati di seguito, sostituisci YOUR_API_KEY con la chiave API.

Swift

Aggiungi la chiave API al tuo 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 al tuo 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 dimostrano come recuperare il luogo 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. È necessario installare Cocoapods 1.6.1.