Configura il progetto

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

Prerequisiti

  • Prima di iniziare a utilizzare l'SDK di navigazione per iOS, devi avere un progetto con un account di fatturazione e l'SDK Maps per iOS abilitato. Consigliamo di creare più proprietari del progetto e amministratori della fatturazione, in modo da avere sempre a disposizione qualcuno con questi ruoli per il tuo team. Per scoprire di più, consulta Configurare il progetto Google Cloud.
  • Per creare un progetto utilizzando l'SDK di navigazione per iOS, è necessaria la versione 15.0 o successiva di Xcode.
  • La versione iOS minima di destinazione per l'SDK di navigazione è 14.0.

Passaggio 1: installa l'SDK

Gestore pacchetti Swift

L'SDK di navigazione può essere installato tramite Swift Package Manager. Per aggiungere l'SDK, assicurati di aver rimosso tutte le dipendenze esistenti dell'SDK di navigazione.

Per aggiungere l'SDK a un progetto nuovo o esistente:

  1. Apri il file Xcode project o workspace, quindi vai a File > Aggiungi dipendenze pacchetto.
  2. Inserisci https://github.com/googlemaps/ios-navigation-sdk come URL, premi Invio per estrarre il pacchetto e fai clic su "Aggiungi pacchetto".
  3. Per installare un elemento version specifico, imposta il campo Regola di dipendenza su una delle opzioni basate sulla versione. Per i nuovi progetti, ti consigliamo di specificare la versione più recente e di utilizzare l'opzione "Versione esatta". Al termine, fai clic su "Aggiungi pacchetto".
  4. Nella finestra Scegli i prodotti del pacchetto, verifica che GoogleNavigation verrà aggiunto alla destinazione main designata. Al termine, fai clic su "Aggiungi pacchetto".
  5. Per verificare l'installazione, vai al riquadro General di destinazione. In Framework, librerie e contenuti incorporati dovresti vedere i pacchetti installati. Puoi anche visualizzare la sezione "Dipendenze pacchetto" di "Navigatore progetto" per verificare il pacchetto e la sua versione.

Per aggiornare package per un progetto esistente:

  1. Se esegui l'upgrade da una versione precedente alla 9.0.0, devi rimuovere le seguenti dipendenze: GoogleMapsBase, GoogleMapsCore e GoogleMapsM4B dopo l'upgrade. Non rimuovere la dipendenza per GoogleMaps. Per maggiori informazioni, consulta le note di rilascio della versione 9.0.0.

    Nelle impostazioni di configurazione del progetto Xcode, individua Framework, librerie e contenuti incorporati. Utilizza il segno meno(-) per rimuovere il seguente framework:

    • GoogleMapsBase (solo per gli upgrade da versioni precedenti alla 9.0.0)
    • GoogleMapsCore (solo per gli upgrade da versioni precedenti alla 9.0.0)
    • GoogleMapsM4B (solo per gli upgrade da versioni precedenti alla 9.0.0)
  2. Da Xcode, seleziona "File > Packages > Update to Latest Package Versions" (File > Pacchetti > Aggiorna alle versioni più recenti dei pacchetti).
  3. Per verificare l'installazione, vai alla sezione Dipendenze pacchetto di Project Navigator per verificare il pacchetto e la relativa versione.

Per rimuovere le dipendenze esistenti dell'SDK di navigazione aggiunte utilizzando CocoaPods:

  1. Chiudi l'area di lavoro Xcode. Apri il terminale ed esegui questo comando:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Rimuovi Podfile, Podfile.resolved e Xcode workspace se non li utilizzi per scopi diversi da CocoaPods.

Per rimuovere l'SDK di navigazione esistente per iOS installato manualmente, segui questi passaggi:
  1. Nelle impostazioni di configurazione del progetto Xcode, individua Framework, librerie e contenuti incorporati. Utilizza il segno meno(-) per rimuovere il seguente framework:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. Rimuovi il bundle GoogleMaps dalla directory di primo livello del tuo progetto Xcode.

CocoaPods

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

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

sudo gem install cocoapods

Crea un Podfile per l'SDK di navigazione per 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 familiarità con lo sviluppo di 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 il progetto Interface su Storyboard.
      4. Imposta il campo Lingua su Swift o Objective-C.
  2. Crea un file denominato Podfile nella directory del tuo progetto. Questo file definisce le dipendenze del progetto.
  3. Modifica Podfile e aggiungi le dipendenze insieme alle relative versions. Ecco un esempio che include la dipendenza necessaria per l'SDK di navigazione per iOS: # Riferimento per l'installazione di Cocoapods #
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '9.0.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 in Podfile, insieme alle eventuali dipendenze.

    pod install
  7. Chiudi Xcode, quindi apri (doppio clic) il file .xcworkspace del tuo progetto per avviare Xcode. D'ora 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 l'Podfile.
  2. Esegui il comando pod update. Tutte le API specificate in Podfile vengono aggiornate all'ultima versione.

Installazione manuale

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

Per installare XCFrameworks per l'SDK di navigazione per iOS e Maps SDK per iOS:

  1. Scarica i seguenti programmi binari dell'SDK e file di risorse:
  2. Avvia Xcode e apri un progetto esistente o creane uno nuovo. Se è la prima volta che utilizzi iOS, crea un nuovo progetto e seleziona il modello di app per iOS.
  3. Rimuovi tutti i riferimenti a Maps, Navigazione e Luoghi esistenti dal progetto.
  4. Trascina i seguenti XCFrameworks nel progetto in Framework, librerie e contenuti incorporati per installare sia gli SDK Maps sia quelli di navigazione (quando richiesto, seleziona Copia elementi se necessario):
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. Trascina GoogleMaps.bundle da GoogleMapsResources che hai scaricato nella directory di primo livello del tuo progetto Xcode. Quando richiesto, assicurati che sia selezionata l'opzione Copia elementi se necessario.
  6. Trascina GoogleNavigation.bundle da GoogleNavigationResources scaricato nella directory di primo livello del progetto Xcode. Quando richiesto, assicurati che sia selezionata l'opzione Copia elementi nella cartella del gruppo di destinazione.
  7. Seleziona il tuo progetto dal navigatore dei progetti e scegli il target della tua applicazione.
  8. Apri la scheda Fasi di creazione e, in Collega binario con le librerie, aggiungi i seguenti framework e librerie:
    • Accelerate.framework
    • AudioToolbox.framework
    • AVFoundation.framework
    • Contacts.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
  9. Nel target dell'applicazione, seleziona la scheda Funzionalità, attiva Modalità in background e abilita le seguenti modalità:
    • Audio, AirPlay e Picture in picture
    • Aggiornamenti sulla posizione
  10. Scegli il tuo progetto, anziché una destinazione specifica, e apri la scheda Impostazioni build. Nella sezione Altri flag linker, aggiungi ‑ObjC sia per debug sia per release. Se queste impostazioni non sono visibili, modifica il filtro nella barra Impostazioni build da Di base a Tutte.
  11. Apri Info.plist e aggiungi le seguenti coppie chiave-valore:
    • Chiave: NSLocationWhenInUseUsageDescription (Privacy - Location When in Use Use Description)
      Valore: "Questa app richiede l'autorizzazione per utilizzare la tua posizione per la navigazione passo passo."
    • Chiave: NSLocationAlwaysAndWhenInUseUsageDescription (Privacy - Location Always and When in Use Use Description)
      Valore: "Questa app richiede l'autorizzazione per utilizzare la tua posizione per la navigazione passo passo."

Passaggio 2: esamina il file manifest della privacy di Apple

Apple richiede informazioni sulla privacy per le app disponibili sull'App Store. Visita la pagina dei dettagli sulla privacy dell'App Store di Apple per aggiornamenti e ulteriori informazioni.

Il file manifest della privacy di Apple è incluso nel bundle di risorse per l'SDK. Per verificare che il file manifest per la privacy sia stato incluso e per controllarne i contenuti, crea un archivio della tua app e genera una segnalazione sulla privacy dall'archivio.

Passaggio 3: aggiungi una chiave API al progetto

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

Swift

Aggiungi la chiave API a AppDelegate.swift nel seguente modo:

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

Objective-C

Aggiungi la chiave API a AppDelegate.m nel seguente modo:

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

Passaggio 4: aggiungi una mappa

Questo codice mostra come aggiungere una mappa semplice a un elemento 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 e mapView.navigator è nullo.

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, scopri di più sulla fatturazione nella documentazione sulla mobilità. Per ulteriori informazioni sulla registrazione delle transazioni, consulta la sezione Configurare la fatturazione. Per scoprire come aggiungere ID transazione all'implementazione dell'SDK di navigazione, consulta Associare l'utilizzo del servizio alle transazioni di mobilità.