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:
- Se non hai ancora un progetto Xcode, creane uno ora e salvalo sulla tua macchina locale. Se non hai mai utilizzato lo sviluppo iOS:
- Creare un nuovo progetto.
- Seleziona il modello iOS > App.
- Nella schermata delle opzioni del progetto:
- Inserisci il Nome progetto.
- Registra il valore del campo Identificatore bundle. Puoi utilizzare questo valore per limitare la chiave API di seguito.
- Imposta l'Interfaccia del progetto su Storyboard.
- Imposta la Lingua su Swift o Objective-C.
- Crea un file denominato
Podfile
nella directory del progetto. Questo file definisce le dipendenze del progetto. - 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 regolarmentepod outdated
per rilevare le versioni più recenti. Se necessario, esegui l'upgrade alla versione più recente. - Salva
Podfile
. Apri un terminale e vai alla directory contenente
Podfile
:cd <path-to-project>
Esegui il comando
pod install
. Questa operazione installa le API specificate nel criterioPodfile
, insieme a eventuali dipendenze.pod install
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:
- Apri un terminale e vai alla directory del progetto contenente
Podfile
. - Esegui il comando
pod update
. Tutte le API specificate inPodfile
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:
- Scarica XCFrameworks seguendo questa procedura:
- 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.
- Vai alla directory per la versione più recente.
- Apri i file
GoogleNavigation.podspec.json
eGoogleMaps.podspec.json
. - Vai in fondo ai file JSON e cerca il campo denominato
source
e il campo al suo interno denominatohttp
. - Il valore di questo campo è il link di download per CocoaPod. Scaricalo e decomprimilo in locale.
- Per GoogleNavigazione, trova
GoogleNavigation.xcframework
all'interno della directory Framework. - Per Google Maps, trova
GoogleMapsBase.xcframework
nella directoryBase/Frameworks
e trovaGoogleMapsCore.xcframework
eGoogleMaps.xcframework
nella directoryMaps/Frameworks
. - 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.
- Rimuovi dal progetto tutti i riferimenti a Maps, Navigation e Places esistenti.
- 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
- Fai clic con il pulsante destro del mouse su
GoogleMaps.xcframework
nel progetto e seleziona Mostra nel Finder. - Trascina
GoogleMaps.bundle
dalla cartellaios-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. - Ripeti i due passaggi precedenti per aggiungere
GoogleNavigation.bundle
dalla cartellaios-arm64/GoogleNavigation.framework/Resources
. - Seleziona il progetto da Navigazione progetto e scegli il target dell'applicazione.
- 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
- 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
- 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. - 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".
- Chiave:
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:
- Aggiungi le seguenti istruzioni di importazione:
import GoogleMaps import GoogleNavigation
- 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:
- Aggiungi le seguenti istruzioni di importazione:
@import GoogleMaps; @import GoogleNavigation;
- 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à.