Configura il progetto

Segui questa guida per integrare l'SDK Navigation per iOS in un'app per iOS.

Prerequisiti

  • Prima di iniziare a utilizzare l'SDK di navigazione per iOS, devi disporre di un progetto con un account di fatturazione e l'SDK Maps for iOS abilitato. Ti consigliamo di creare più proprietari del progetto e amministratori della fatturazione, in modo da avere sempre a disposizione del team qualcuno con questi ruoli. Per ulteriori informazioni, consulta Configurare il progetto Google Cloud.
  • Per creare un progetto utilizzando l'SDK di navigazione per iOS, devi disporre della versione 13.0 o successiva di Xcode.
  • La versione iOS target minima per l'SDK di navigazione è 13.0.

Installazione dell'SDK

Utilizzare CocoaPods

L'SDK Navigation per iOS è disponibile come pod CocoaPods. CocoaPods è un gestore delle dipendenze open source per i progetti Cocoa Swift e Objective-C.

Se non hai ancora lo strumento CocoaPods, installalo su macOS eseguendo questo comando dal terminale. Per i dettagli, consulta la Guida introduttiva di CocoaPods.

sudo gem install cocoapods

Crea un Podfile per l'SDK Navigation for iOS e utilizzalo per installare l'API e le sue dipendenze:

  1. Se non hai ancora un progetto Xcode, creane uno ora e salvalo sulla tua macchina locale. Se non hai mai utilizzato lo sviluppo iOS:
    1. Creare un nuovo progetto.
    2. Seleziona il modello iOS > App.
    3. Nella schermata delle opzioni del progetto:
      1. Inserisci il Nome progetto.
      2. Registra il valore del campo Identificatore bundle. Puoi utilizzare questo valore per limitare la chiave API di seguito.
      3. Imposta l'Interfaccia del progetto su Storyboard.
      4. Imposta la Lingua su Swift o Objective-C.
  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 include la dipendenza necessaria per l'SDK Navigation per iOS:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '13.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '4.4.0'
    end
            
    Assicurati di eseguire regolarmente pod outdated per rilevare le versioni più recenti. Se necessario, esegui l'upgrade alla versione più recente.
  4. Salva Podfile.
  5. Apri un terminale e vai alla directory contenente Podfile:

    cd <path-to-project>
  6. Esegui il comando pod install. Questa operazione installa le API specificate nel criterio Podfile, insieme a 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:

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

Installa manualmente

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

Segui questi passaggi per installare XCFrameworks per l'SDK di navigazione per iOS e l'SDK Maps per iOS:

  1. Scarica XCFrameworks seguendo questa procedura:
    1. Puoi trovare la versione più recente del file Podspec dell'SDK di navigazione nella pagina delle specifiche di CocoaPods per Google Navigation e la versione più recente del file Podspec dell'SDK Maps dalla pagina delle specifiche di CocoaPods per Google Maps.
    2. Vai alla directory per la versione più recente.
    3. Apri i file GoogleNavigation.podspec.json e GoogleMaps.podspec.json.
    4. Vai in fondo ai file JSON e cerca il campo denominato source e il campo al suo interno denominato http.
    5. Il valore di questo campo è il link di download per CocoaPod. Scaricalo e decomprimilo in locale.
    6. Per GoogleNavigazione, trova GoogleNavigation.xcframework all'interno della directory Framework.
    7. Per Google Maps, trova GoogleMapsBase.xcframework nella directory Base/Frameworks e trova GoogleMapsCore.xcframework e GoogleMaps.xcframework nella directory Maps/Frameworks.
  2. Avvia Xcode e apri un progetto esistente o creane uno nuovo. Se non hai mai utilizzato iOS, crea un nuovo progetto e seleziona il modello di app per iOS.
  3. Rimuovi dal progetto tutti i riferimenti a Maps, Navigation e Places esistenti.
  4. Trascina i seguenti XCFrameworks nel progetto in Frameworks, librerie e contenuti incorporati per installare entrambi gli SDK Maps e Navigation (se richiesto, seleziona Copia elementi se necessario):
    • GoogleMapsBase.xcframework
    • GoogleMaps.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. Fai clic con il pulsante destro del mouse su GoogleMaps.xcframework nel progetto e seleziona Mostra nel Finder.
  6. Trascina GoogleMaps.bundle dalla cartella ios-arm64/GoogleMaps.framework/Resources alla directory di primo livello del tuo progetto Xcode. Quando richiesto, assicurati che l'opzione Copia elementi se necessario non sia selezionata.
  7. Ripeti i due passaggi precedenti per aggiungere GoogleNavigation.bundle dalla cartella ios-arm64/GoogleNavigation.framework/Resources.
  8. Seleziona il progetto da Navigazione progetto e scegli il target dell'applicazione.
  9. Apri la scheda Fasi di creazione e, all'interno di Collega file binario alle librerie, aggiungi i seguenti framework e librerie:
    • Accelerate.framework
    • AudioToolbox.framework
    • AVFoundation.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libxml2.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • Security.framework
    • SystemConfiguration.framework
    • UIKit.framework
    • UserNotifications.framework
    • WebKit.framework
  10. Nel target della tua applicazione, seleziona la scheda Funzionalità, attiva le Modalità in background e abilita le seguenti modalità:
    • Audio, AirPlay e Picture in picture
    • Aggiornamenti sulla posizione
  11. Scegli il progetto anziché una destinazione specifica e apri la scheda Impostazioni build. Nella sezione Altri flag Linker, aggiungi ‑ObjC sia per debug sia release. Se queste impostazioni non sono visibili, cambia il filtro nella barra Impostazioni build da Base a Tutti.
  12. Apri Info.plist e aggiungi le seguenti coppie chiave-valore:
    • Chiave: NSLocationWhenInUseUsageDescription (Privacy - Descrizione dell'utilizzo della posizione quando è in uso)
      Valore: "Questa app richiede l'autorizzazione a usare la tua posizione per la navigazione passo passo".
    • Chiave: NSLocationAlwaysAndWhenInUseUsageDescription (Privacy - Posizione sempre e Descrizione utilizzo quando è in uso)
      Valore: "Questa app richiede l'autorizzazione a usare la tua posizione per la navigazione passo passo".

Aggiungi una chiave API al progetto

I seguenti esempi mostrano come aggiungere la chiave API al tuo progetto in Xcode:

Swift

Aggiungi la tua chiave API a AppDelegate.swift come segue:

  1. Aggiungi le seguenti istruzioni di importazione:
    import GoogleMaps
    import GoogleNavigation
  2. Aggiungi quanto segue al tuo metodo application(_:didFinishLaunchingWithOptions:):
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

Aggiungi la tua chiave API a AppDelegate.m come segue:

  1. Aggiungi le seguenti istruzioni di importazione:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. Aggiungi quanto segue al tuo metodo application:didFinishLaunchingWithOptions::
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

Aggiungi una mappa

Questo codice mostra come aggiungere una semplice mappa a una ViewController esistente, incluse alcune impostazioni iniziali per la navigazione.

Prima di poter attivare la navigazione, l'utente deve accettare i Termini e condizioni. Per chiedere all'utente, chiama GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(), quindi controlla se i termini sono stati accettati. Se l'utente rifiuta i termini, mapView.isNavigationEnabled = true non ha alcun effetto, mentre mapView.navigator è pari a zero.

Swift

import UIKit
import GoogleNavigation

class ViewController: UIViewController {

  var mapView: GMSMapView!
  var locationManager: CLLocationManager!

  override func loadView() {
    locationManager = CLLocationManager()
    locationManager.requestAlwaysAuthorization()

    let camera = GMSCameraPosition.camera(withLatitude: 47.67, longitude: -122.20, zoom: 14)
    mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    // Show the terms and conditions.
    let companyName = "Ride Sharing Co."
    GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(
      withCompanyName: companyName) { termsAccepted in
      if termsAccepted {
        // Enable navigation if the user accepts the terms.
        self.mapView.isNavigationEnabled = true
      } else {
        // Handle the case when the user rejects the terms and conditions.
      }
    }

    view = mapView
  }

  // TODO: Add navigation code.

}

Objective-C

#import "ViewController.h"
@import GoogleNavigation;

@interface ViewController ()
@end

@implementation ViewController
GMSMapView *_mapView;
CLLocationManager *_locationManager;

- (void)loadView {

  _locationManager = [[CLLocationManager alloc] init];
  [_locationManager requestAlwaysAuthorization];

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.67
                                                          longitude:-122.20
                                                               zoom:14];
  _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  // Show the terms and conditions.
  NSString *companyName = @"Ride Sharing Co.";
  [GMSNavigationServices
    showTermsAndConditionsDialogIfNeededWithCompanyName:companyName
    callback:^(BOOL termsAccepted) {
     if (termsAccepted) {
       // Enable navigation if the user accepts the terms.
       _mapView.navigationEnabled = YES;
     } else {
       // Handle the case when the user rejects the terms and conditions.
     }
   }];

  self.view = _mapView;
}

// TODO: Add navigation code.

@end

Esegui l'applicazione. Dovresti vedere una mappa centrata su Kirkland, Washington. Se la mappa non è visibile, verifica di aver fornito la chiave API corretta.

Se sei un cliente di Servizi di mobilità

Se sei un cliente di Mobility Services, consulta le informazioni sulla fatturazione nella documentazione relativa a Mobility Services. Per ulteriori informazioni sulla registrazione delle transazioni, consulta Configurare la fatturazione. Per scoprire come aggiungere ID transazione all'implementazione dell'SDK di navigazione, consulta Associare l'utilizzo del servizio alle transazioni relative alla mobilità.