Suivez ce guide pour intégrer le SDK Navigation pour iOS dans une application iOS.
Conditions préalables
- Avant de commencer à utiliser le SDK Navigation pour iOS, vous devez disposer d'un projet avec un compte de facturation et le SDK Maps pour iOS doit être activé. Nous vous recommandons de désigner plusieurs propriétaires de projet et administrateurs de la facturation afin d'avoir toujours quelqu'un de disponible pour ces rôles dans votre équipe. Pour en savoir plus, consultez Configurer votre projet Google Cloud.
- Pour créer un projet à l'aide du SDK Navigation pour iOS, vous devez disposer de la version 15.0 ou ultérieure de Xcode.
- La version iOS cible minimale du SDK Navigation est la version 15.0.
Étape 1: Installez le SDK
Gestionnaire de paquets Swift
Le SDK Navigation peut être installé via le gestionnaire de packages Swift. Pour ajouter le SDK, assurez-vous d'avoir supprimé toutes les dépendances existantes du SDK Navigation.
Pour ajouter le SDK à un projet nouveau ou existant, procédez comme suit:
-
Ouvrez Xcode
project
ouworkspace
, puis accédez à File > Add Package Dependencies (Fichier > Ajouter des dépendances de packages). - Saisissez https://github.com/googlemaps/ios-navigation-sdk comme URL, appuyez sur Entrée pour extraire le package, puis cliquez sur "Ajouter un package".
-
Pour installer un
version
spécifique, définissez le champ Règle de dépendance sur l'une des options basées sur la version. Pour les nouveaux projets, nous vous recommandons de spécifier la dernière version et d'utiliser l'option "Version exacte". Une fois l'opération terminée, cliquez sur "Ajouter un package". -
Dans la fenêtre Choose Package Products (Sélectionner des produits de package), vérifiez que
GoogleNavigation
sera ajouté à la ciblemain
désignée. Une fois l'opération terminée, cliquez sur "Ajouter un package". -
Pour vérifier votre installation, accédez au volet
General
de votre cible. Les packages installés devraient s'afficher dans Cadres, bibliothèques et contenu intégré. Vous pouvez également afficher la section "Dépendances des packages" du "Navigateur de projets" pour vérifier le package et sa version.
Pour mettre à jour le package
pour un projet existant, procédez comme suit:
Si vous effectuez une mise à niveau à partir d'une version antérieure à la version 9.0.0, vous devez supprimer les dépendances suivantes:
GoogleMapsBase
,GoogleMapsCore
etGoogleMapsM4B
après la mise à niveau. Ne supprimez pas la dépendance deGoogleMaps
. Pour en savoir plus, consultez les notes de version de la version 9.0.0.Dans les paramètres de configuration de votre projet Xcode, recherchez Cadres, bibliothèques et contenu intégré. Utilisez le signe moins(-) pour supprimer le framework suivant:
GoogleMapsBase
(uniquement pour les mises à niveau à partir de versions antérieures à la version 9.0.0)GoogleMapsCore
(uniquement pour les mises à niveau à partir de versions antérieures à la version 9.0.0)GoogleMapsM4B
(uniquement pour les mises à niveau à partir de versions antérieures à la version 9.0.0)
- Depuis Xcode, accédez à "File > Packages > Update To Latest Package Versions" (Fichier > Packages > Mettre à jour vers les dernières versions de packages).
- Pour vérifier votre installation, accédez à la section Dépendances des packages du Navigateur de projets pour vérifier le package et sa version.
Pour supprimer les dépendances existantes du SDK Navigation ajoutées à l'aide de CocoaPods
, procédez comme suit:
- Fermez votre espace de travail Xcode. Ouvrez le terminal et exécutez la commande suivante :
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
Supprimez les éléments
Podfile
,Podfile.resolved
et Xcodeworkspace
si vous ne les utilisez pas pour d'autres produits que CocoaPods.
-
Dans les paramètres de configuration de votre projet Xcode, recherchez Cadres, bibliothèques et contenu intégré. Utilisez le signe moins(-) pour supprimer le framework suivant :
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
-
Dans le répertoire de premier niveau de votre projet Xcode, supprimez le bundle
GoogleMaps
.
CocoaPods
Le SDK Navigation pour iOS est disponible en tant que pod CocoaPods. CocoaPods est un gestionnaire de dépendances Open Source pour les projets Cocoa Swift et Objective-C.
Si vous ne possédez pas encore l'outil CocoaPods, installez-le sur macOS en exécutant la commande ci-dessous à partir du terminal. Pour en savoir plus, consultez le guide de démarrage de CocoaPods.
sudo gem install cocoapods
Créez un Podfile
pour le SDK Navigation pour iOS et utilisez-le pour installer l'API et ses dépendances:
- Si vous n'avez pas encore de projet Xcode, créez-en un maintenant et enregistrez-le sur votre ordinateur local. Si vous débutez dans le développement iOS :
- Créez un projet.
- Sélectionnez le modèle iOS > Application.
- Sur l'écran des options du projet :
- Saisissez le nom du projet dans le champ Project Name (Nom du projet).
- Notez la valeur du champ ID du bundle. Vous pouvez utiliser cette valeur pour restreindre votre clé API ci-dessous.
- Définissez l'interface du projet sur Storyboard.
- Définissez le paramètre Language (Langue) sur Swift ou Objective-C.
- Créez un fichier nommé
Podfile
dans le répertoire de votre projet. Ce fichier définit les dépendances de votre projet. - Modifiez
Podfile
et ajoutez vos dépendances avec leurs versions. Voici un exemple qui inclut la dépendance dont vous avez besoin pour le SDK Navigation pour iOS : # Référence d'installation Cocoapods #source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GoogleNavigation', '9.0.0' end
Assurez-vous d'exécuter régulièrementpod outdated
pour détecter les versions plus récentes. Si nécessaire, installez la dernière version. - Enregistrez le
Podfile
. Ouvrez un terminal et accédez au répertoire contenant le fichier
Podfile
:cd <path-to-project>
Exécutez la commande
pod install
. Cette action installe les API spécifiées dansPodfile
, ainsi que toutes les dépendances.pod install
Fermez Xcode, puis ouvrez (double-cliquez) le fichier
.xcworkspace
de votre projet pour lancer Xcode. À partir de ce moment, vous devez utiliser le fichier.xcworkspace
pour ouvrir le projet.
Pour mettre à jour l'API pour un projet existant, procédez comme suit:
- Ouvrez un terminal et accédez au répertoire du projet contenant
Podfile
. - Exécutez la commande
pod update
. Toutes les API spécifiées dansPodfile
sont alors mises à jour vers la dernière version.
Installation manuelle
Ce guide explique comment ajouter manuellement les XCFrameworks contenant le SDK Navigation pour iOS et le SDK Maps pour iOS à votre projet, et comment configurer vos paramètres de compilation dans Xcode. Un XCFramework est un paquet binaire que vous pouvez utiliser sur plusieurs plates-formes, y compris des machines utilisant le chipset M1.
Pour installer XCFrameworks pour le SDK Navigation pour iOS et le SDK Maps pour iOS, procédez comme suit:
- Téléchargez les fichiers de ressources et les binaires du SDK suivants :
- Lancez Xcode et ouvrez un projet existant ou créez-en un. Si vous débutez avec iOS, créez un projet et sélectionnez le modèle d'application iOS.
- Supprimez du projet toutes les références Maps, Navigation et Places existantes.
- Faites glisser les frameworks XCFrameworks suivants dans votre projet sous Frameworks, libraries, and Embedded Content (Cadres, bibliothèques et contenus intégrés) pour installer les SDK Maps et Navigation (lorsque vous y êtes invité, sélectionnez Copy items if needed) :
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
- Faites glisser
GoogleMaps.bundle
à partir des ressources GoogleMapsResources que vous avez téléchargées vers le répertoire de premier niveau de votre projet Xcode. Lorsque vous y êtes invité, assurez-vous que l'option Copy items if needed (Copier les éléments si nécessaire) est sélectionnée. - Faites glisser
GoogleNavigation.bundle
de GoogleNavigationResources que vous avez téléchargé vers le répertoire de premier niveau de votre projet Xcode. Lorsque vous y êtes invité, vérifiez que l'option Copy items in destination group's folder (Copier les éléments dans le dossier du groupe de destination) est sélectionnée. - Sélectionnez votre projet dans le navigateur de projets, puis choisissez la cible de votre application.
- Ouvrez l'onglet Build Phases (Phases de compilation) et, dans Link Binary with libraries (Associer le binaire avec des bibliothèques), ajoutez les frameworks et bibliothèques suivants :
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
- Dans la cible de votre application, sélectionnez l'onglet Fonctionnalités, activez Modes d'arrière-plan, puis activez les modes suivants :
- Audio, AirPlay et Picture-in-picture
- Mises à jour de la position
- Choisissez votre projet plutôt qu'une cible spécifique, puis ouvrez l'onglet Build Settings (Paramètres de compilation). Dans la section Other Linker Flags (Autres indicateurs Linker), ajoutez
‑ObjC
pour debug et release. Si ces paramètres ne sont pas visibles, modifiez le filtre de la barre Build Settings (Paramètres de compilation) de Basic (De base) à All (Tous). - Ouvrez
Info.plist
et ajoutez les paires clé-valeur suivantes :- Clé:
NSLocationWhenInUseUsageDescription
(Confidentialité – Localisation en cas d'utilisation, description de l'utilisation)
Valeur : "Cette application a besoin de l'autorisation d'utiliser votre position pour la navigation détaillée." - Clé:
NSLocationAlwaysAndWhenInUseUsageDescription
(Privacy - Location Always and when In Use Usage Description)
Valeur : "Cette application a besoin de l'autorisation d'utiliser votre position pour la navigation détaillée."
- Clé:
Étape 2: Inspectez le fichier manifeste de confidentialité Apple
Apple exige des informations sur la confidentialité des applications disponibles sur l'App Store. Pour obtenir des mises à jour et d'autres informations, consultez la page Informations sur la confidentialité sur l'App Store d'Apple.
Le fichier manifeste de confidentialité Apple est inclus dans le bundle de ressources pour le SDK. Pour vérifier que le fichier manifeste de confidentialité a été inclus et pour inspecter son contenu, créez une archive de votre application et générez un rapport sur la confidentialité à partir de cette archive.
Étape 3: Ajoutez une clé API à votre projet
Les exemples suivants montrent comment ajouter la clé API à votre projet dans Xcode:
Swift
Ajoutez votre clé API à votre fichier AppDelegate.swift
comme suit :
- Ajoutez les instructions d'importation suivantes :
import GoogleMaps import GoogleNavigation
- Ajoutez le code suivant à la méthode
application(_:didFinishLaunchingWithOptions:)
:GMSServices.provideAPIKey("YOUR_API_KEY")
Objective-C
Ajoutez votre clé API à votre fichier AppDelegate.m
comme suit :
- Ajoutez les instructions d'importation suivantes :
@import GoogleMaps; @import GoogleNavigation;
- Ajoutez le code suivant à la méthode
application:didFinishLaunchingWithOptions:
:[GMSServices provideAPIKey:@"YOUR_API_KEY"];
Étape 4: Ajoutez une carte
Ce code montre comment ajouter une carte simple à un ViewController
existant, y compris certains paramètres initiaux de navigation.
Pour pouvoir activer la navigation, l'utilisateur doit accepter les conditions d'utilisation. Pour inviter l'utilisateur, appelez GMSNavigationServices.showTermsAndConditionsDialogIfNeeded()
, puis vérifiez si les conditions ont été acceptées. Si l'utilisateur refuse les conditions d'utilisation, mapView.isNavigationEnabled = true
n'a aucun effet, et mapView.navigator
est nul.
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
Exécutez votre application. Vous devriez voir une carte centrée sur Kirkland, dans l'État de Washington. Si la carte n'est pas visible, vérifiez que vous avez fourni la bonne clé API.
Si vous êtes un client Services de mobilité
Si vous êtes client de services de mobilité, consultez la documentation sur la facturation pour en savoir plus. Pour en savoir plus sur l'enregistrement des transactions, consultez Configurer la facturation. Pour savoir comment ajouter des ID de transaction à votre implémentation du SDK Navigation, consultez Associer votre utilisation du service aux transactions Mobility.