Configurer votre projet

Suivez ce guide pour intégrer le SDK Navigation pour iOS à une application iOS.

Prérequis

  • Pour pouvoir utiliser le SDK Navigation pour iOS, vous devez disposer d'un projet associé à un compte de facturation et vous devez activer le SDK Maps pour iOS. Nous vous recommandons de désigner plusieurs propriétaires de projet et administrateurs de 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 compiler 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 pour le SDK de navigation est 14.0.

Installer le SDK

Gestionnaire de paquets Swift

Le SDK Navigation peut être installé via Swift Package Manager. Pour ajouter le SDK, assurez-vous d'avoir supprimé toutes ses dépendances.

Pour ajouter le SDK à un projet nouveau ou existant, procédez comme suit:

  1. Ouvrez votre fichier Xcode project ou workspace, puis accédez à File > Add Package Dependencies (Fichier > Ajouter des dépendances de packages).
  2. Saisissez https://github.com/googlemaps/ios-navigation-sdk comme URL, appuyez sur Entrée pour récupérer le package, puis cliquez sur "Add Package" (Ajouter un paquet).
  3. 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".
  4. Dans la fenêtre Choose Package Products (Sélectionner des produits de package), vérifiez que GoogleNavigation sera ajouté à la cible main désignée. Une fois l'opération terminée, cliquez sur "Ajouter un package".
  5. Pour vérifier votre installation, accédez au volet General de votre cible. Dans Cadres, bibliothèques et contenu intégré, vous devriez voir les packages installés. Vous pouvez également consulter la section "Package Dependencies" (Dépendances de packages) de "Project Navigator" (Navigateur de projets) pour vérifier le package et sa version.

Pour mettre à jour le package d'un projet existant, procédez comme suit:

  1. Dans Xcode, accédez à Fichier > Packages > Mettre à jour vers les dernières versions du package.
  2. Pour vérifier votre installation, accédez à la section Package Dependencies (Dépendances de packages) de Project Navigator afin de 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:

  1. 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
  2. Supprimez Podfile, Podfile.resolved et Xcode workspace si vous ne les utilisez que pour CocoaPods.

Pour supprimer le SDK Navigation pour iOS installé manuellement, procédez comme suit :
  1. Dans les paramètres de configuration de votre projet Xcode, recherchez Frameworks, bibliothèques et contenu intégré. Utilisez le signe moins(-) pour supprimer le framework suivant :
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. Dans le répertoire racine 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:

  1. 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 pour iOS :
    1. Créez un projet.
    2. Sélectionnez le modèle iOS > Application.
    3. Sur l'écran des options du projet :
      1. Renseignez le champ Nom du projet.
      2. Notez la valeur du champ Bundle Identifier (Identifiant de groupe). Vous pouvez utiliser cette valeur pour restreindre votre clé API ci-dessous.
      3. Définissez l'interface du projet sur Storyboard.
      4. Définissez la langue sur Swift ou Objective-C.
  2. Créez un fichier nommé Podfile dans le répertoire de votre projet. Ce fichier définit les dépendances de votre projet.
  3. Modifiez Podfile et ajoutez vos dépendances ainsi que 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 n°
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '5.3.1'
    end
            
    Veillez à exécuter régulièrement pod outdated pour détecter les versions plus récentes. Si nécessaire, passez à la dernière version.
  4. Enregistrez le Podfile.
  5. Ouvrez un terminal et accédez au répertoire contenant le fichier Podfile:

    cd <path-to-project>
  6. Exécutez la commande pod install. Cette action installe les API spécifiées dans Podfile, ainsi que toutes les dépendances.

    pod install
  7. 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:

  1. Ouvrez un terminal et accédez au répertoire du projet contenant le fichier Podfile.
  2. Exécutez la commande pod update. Toutes les API spécifiées dans le fichier Podfile sont mises à jour vers la dernière version.

Installation manuelle

Ce guide explique comment ajouter manuellement à votre projet les XCFrameworks contenant le SDK Navigation pour iOS et le SDK Maps pour iOS, et comment configurer vos paramètres de compilation dans Xcode. XCFramework est un paquet binaire que vous pouvez utiliser sur plusieurs plates-formes, y compris les machines utilisant le chipset M1

Pour installer XCFrameworks pour le SDK Navigation pour iOS et le SDK Maps pour iOS, procédez comme suit:

  1. Téléchargez les fichiers binaires et les fichiers de ressources suivants du SDK :
  2. 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.
  3. Supprimez toutes les références Maps, Navigation et Places existantes du projet.
  4. Faites glisser les éléments XCFrameworks suivants dans votre projet sous Frameworks, bibliothèques et contenu intégré 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
  5. Faites glisser GoogleMaps.bundle depuis GoogleMapsResources que vous avez téléchargé 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.
  6. Faites glisser GoogleNavigation.bundle depuis GoogleNavigationResources que vous avez téléchargé vers le répertoire de premier niveau de votre projet Xcode. Lorsque vous y êtes invité, assurez-vous que l'option Copier des éléments dans le dossier du groupe de destination est sélectionnée.
  7. Sélectionnez votre projet dans Project Navigator, puis choisissez la cible de votre application.
  8. 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
  9. Dans la cible de votre application, sélectionnez l'onglet Fonctionnalités, activez les modes d'arrière-plan, puis activez les modes suivants :
    • Audio, AirPlay et Picture-in-picture
    • Mises à jour de la position
  10. 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, remplacez le filtre Basic (De base) par All (Tous) dans la barre Build Settings (Paramètres de compilation).
  11. Ouvrez Info.plist et ajoutez les paires clé-valeur suivantes :
    • Clé:NSLocationWhenInUseUsageDescription (Privacy - Location With In Use Usage Description)
      Valeur : "Cette appli a besoin de l'autorisation d'utiliser votre position pour la navigation détaillée."
    • Clé:NSLocationAlwaysAndWhenInUseUsageDescription (Privacy - Location Always and En utilisant Usage Description)
      Valeur : "Cette application a besoin de l'autorisation d'utiliser votre position pour la navigation détaillée."

Ajouter un fichier manifeste de confidentialité Apple

  1. Téléchargez le bundle du fichier manifeste de confidentialité pour le SDK Navigation pour iOS: GoogleNavigationPrivacy.
  2. Extrayez le fichier pour accéder à GoogleNavigationPrivacy.bundle.
  3. Ajoutez GoogleNavigationPrivacy.bundle au navigateur de projet Xcode à l'aide de l'une de ces méthodes. Assurez-vous que la case "Ajouter aux cibles" est cochée pour la cible de votre application. Une fois ajouté, le fichier PrivacyInfo s'affiche dans le navigateur de projets, et vous pouvez inspecter ses valeurs.
  4. Capture d&#39;écran des informations sur la confidentialité dans Xcode
  5. Vérifiez que le fichier manifeste de confidentialité a été ajouté en créant une archive de votre application et en générant un rapport de confidentialité à partir de cette archive.

Ajouter 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 :

  1. Ajoutez les instructions d'importation suivantes :
    import GoogleMaps
    import GoogleNavigation
  2. Ajoutez les éléments suivants à la méthode application(_:didFinishLaunchingWithOptions:) :
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

Ajoutez votre clé API à votre fichier AppDelegate.m comme suit :

  1. Ajoutez les instructions d'importation suivantes :
    @import GoogleMaps;
    @import GoogleNavigation;
  2. Ajoutez les éléments suivants à la méthode application:didFinishLaunchingWithOptions: :
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

Ajouter une carte

Ce code montre comment ajouter une carte simple à un ViewController existant, y compris certains paramètres initiaux de navigation.

Pour que la navigation puisse être activée, 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, 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 des services de mobilité

Si vous êtes un client des services de mobilité, découvrez la facturation dans la documentation de mobilité. 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.