Configurer un projet Xcode

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Après avoir activé la facturation et créé une clé API, vous êtes prêt à configurer le projet Xcode que vous utilisez pour développer votre application.

Étape 1: Installez le logiciel requis

Pour créer un projet à l'aide du SDK Maps pour iOS, vous devez télécharger et installer:

  • Xcode version 13.0 ou ultérieure
  • CocoaPods ou Carthage

Étape 2: Créez le projet XCode et installez le SDK Maps pour iOS

Utiliser CocoaPods

Le SDK Maps 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 plus de détails, consultez le guide de démarrage de CocoaPods.

sudo gem install cocoapods

Créez un Podfile pour le SDK Maps 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 et enregistrez-le sur votre ordinateur local. Si vous découvrez le développement iOS :
    1. Créez un projet.
    2. Sélectionnez le modèle iOS > Application.
    3. Sur l'écran des options du projet :
      1. Saisissez le 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 avec leurs versions. Voici un exemple qui inclut la dépendance dont vous avez besoin pour le SDK Maps pour iOS :
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '13.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '7.3.0'
    end
    
    Assurez-vous d'exécuter régulièrement pod outdated pour détecter les nouvelles versions afin d'être toujours à jour. Si nécessaire, installez la dernière version.
  4. Enregistrez le Podfile.
  5. Ouvrez un terminal et accédez au répertoire contenant Podfile :

    cd <path-to-project>
  6. Exécutez la commande pod install. Cela installera les API spécifiées dans le Podfile, ainsi que toutes les éventuelles 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 d'un projet existant, procédez comme suit:

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

Utiliser Carthage

Le SDK Maps pour iOS peut être utilisé avec Carthage, un gestionnaire de dépendances simple et décentralisé pour les projets Cocoa Swift et Objective-C.

  1. Installez Carthage. Il existe plusieurs méthodes. Pour en savoir plus, consultez le fichier README de Carthage.
  2. Si vous n'avez pas encore de projet Xcode, créez-en un et enregistrez-le sur votre ordinateur local. Si vous découvrez le développement iOS :
    1. Créez un projet.
    2. Sélectionnez le modèle iOS > Application.
    3. Sur l'écran des options du projet :
      1. Saisissez le 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.
  3. Créez un fichier nommé Cartfile dans le répertoire de votre projet. Ce fichier définit les dépendances de votre projet.
  4. Modifiez Cartfile et ajoutez vos dépendances avec leurs versions :
    binary "https://dl.google.com/geosdk/GoogleMaps.json" == 6.2.1
    Assurez-vous d'exécuter régulièrement carthage outdated pour détecter les nouvelles versions afin d'être toujours à jour. Si nécessaire, passez à la dernière version.
  5. Enregistrez le Cartfile.
  6. Dans une fenêtre de terminal, accédez au répertoire contenant Cartfile:
    cd <path-to-project>
  7. Exécutez la commande carthage update. Cela installera les API spécifiées dans le Cartfile, ainsi que toutes les éventuelles dépendances.
  8. Dans le Finder, dans le répertoire de votre projet, accédez aux fichiers du framework téléchargés sous Carthage/Build/iOS.
  9. Faites glisser les groupes suivants dans votre projet (lorsque vous y êtes invité, sélectionnez Copier des éléments si nécessaire, veuillez utiliser la même version que ci-dessus).
    • GoogleMaps-x.x.x/Base/Frameworks/GoogleMapsBase.framework
    • GoogleMaps-x.x.x/Maps/Frameworks/GoogleMaps.framework
    • GoogleMaps-x.x.x/Maps/Frameworks/GoogleMapsCore.framework
    • (Clients du forfait Premium uniquement) GoogleMaps-x.x.x/M4B/Frameworks/GoogleMapsM4B.framework
  10. Effectuez un clic droit sur GoogleMaps.framework dans votre projet, puis sélectionnez Show In Finder (Afficher dans le Finder).
  11. Faites glisser GoogleMaps.bundle depuis le dossier Resources vers le répertoire de premier niveau de votre projet Xcode. Lorsque vous y êtes invité, assurez-vous que l'option Copier les éléments dans le dossier du groupe de destination n'est pas sélectionnée.
  12. Sélectionnez votre projet dans Project Navigator, puis choisissez la cible de votre application.
  13. Ouvrez l'onglet Phases de compilation de la cible de votre application. Dans Link Binary with Libraries (Associer le binaire avec des bibliothèques), ajoutez les frameworks et bibliothèques suivants :
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  14. Choisissez votre projet plutôt qu'une cible spécifique, et ouvrez l'onglet Build Settings (Paramètres de build). Dans la section Other Linker Flags (Autres indicateurs Linker), ajoutez -ObjC. Si ces paramètres ne sont pas visibles, modifiez le filtre dans la barre Build Settings (Paramètres de build) de Basic (De base) à All (Tous).

  15. Pour installer le SDK Places pour iOS, consultez Premiers pas avec le SDK Places pour iOS.

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

  1. Ouvrez un terminal et accédez au répertoire du projet contenant Cartfile.
  2. Exécutez la commande carthage update. Cela mettra à jour toutes les API spécifiées dans Cartfile vers la dernière version.

Insérer la balise manuellement

Ce guide explique comment ajouter manuellement le SDK Maps pour iOS à votre projet et configurer vos paramètres de compilation dans Xcode.

  1. Téléchargez les fichiers sources du SDK : GoogleMaps-7.3.0.
  2. Décompressez les fichiers sources.
  3. Si vous n'avez pas encore de projet Xcode, créez-en un et enregistrez-le sur votre ordinateur local. Si vous découvrez le développement iOS :
    1. Créez un projet.
    2. Sélectionnez le modèle iOS > Application.
    3. Sur l'écran des options du projet :
      1. Saisissez le 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.
  4. Faites glisser les groupes suivants dans votre projet (lorsque vous y êtes invité, sélectionnez Copier des éléments si nécessaire, veuillez utiliser la même version que ci-dessus).
    • GoogleMaps-x.x.x/Base/Frameworks/GoogleMapsBase.framework
    • GoogleMaps-x.x.x/Maps/Frameworks/GoogleMaps.framework
    • GoogleMaps-x.x.x/Maps/Frameworks/GoogleMapsCore.framework
    • (Clients du forfait Premium uniquement) GoogleMaps-x.x.x/M4B/Frameworks/GoogleMapsM4B.framework
  5. Effectuez un clic droit sur GoogleMaps.framework dans votre projet, puis sélectionnez Show In Finder (Afficher dans le Finder).
  6. Faites glisser GoogleMaps.bundle depuis le dossier Resources vers le répertoire de premier niveau de votre projet Xcode. Lorsque vous y êtes invité, assurez-vous que l'option Copier les éléments dans le dossier du groupe de destination n'est pas sélectionnée.
  7. Sélectionnez votre projet dans Project Navigator, puis choisissez la cible de votre application.
  8. Ouvrez l'onglet Phases de compilation de la cible de votre application. Dans Link Binary with Libraries (Associer le binaire avec des bibliothèques), ajoutez les frameworks et bibliothèques suivants :
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  9. Choisissez votre projet plutôt qu'une cible spécifique, et ouvrez l'onglet Build Settings (Paramètres de build). Dans la section Other Linker Flags (Autres indicateurs Linker), ajoutez -ObjC. Si ces paramètres ne sont pas visibles, modifiez le filtre dans la barre Build Settings (Paramètres de build) de Basic (De base) à All (Tous).

  10. Pour installer le SDK Places pour iOS, consultez Premiers pas avec le SDK Places pour iOS.

Installer XCFramework

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

Avec Carthage

Le SDK Maps pour iOS peut être utilisé avec Carthage, un gestionnaire de dépendances simple et décentralisé pour les projets Cocoa Swift et Objective-C.

  1. Installez Carthage. Il existe plusieurs méthodes. Pour en savoir plus, consultez le fichier README de Carthage.
  2. Si vous n'avez pas encore de projet Xcode, créez-en un et enregistrez-le sur votre ordinateur local. Si vous découvrez le développement iOS :
    1. Créez un projet.
    2. Sélectionnez le modèle iOS > Application.
    3. Sur l'écran des options du projet :
      1. Saisissez le 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.
  3. Créez un fichier nommé Cartfile dans le répertoire de votre projet. Ce fichier définit les dépendances de votre projet.
  4. Modifiez Cartfile et ajoutez vos dépendances avec leurs versions :

    binary "https://dl.google.com/geosdk/GoogleMaps.json" == 6.2.1-beta
  5. Enregistrez le Cartfile.
  6. Dans une fenêtre de terminal, accédez au répertoire contenant Cartfile:
    cd <path-to-project>
  7. Exécutez la commande carthage update. Cette action permet d'installer les API spécifiées dans Cartfile, ainsi que les dépendances éventuelles.
  8. Dans le Finder, dans le répertoire de votre projet, accédez aux fichiers du framework téléchargés sous Carthage/Build.
  9. Faites glisser les éléments XCFrameworks suivants dans votre projet sous Frameworks, bibliothèques et contenus intégrés. Veillez à sélectionner Do not Embed (Ne pas intégrer) pour chaque XCFramework :
    • GoogleMaps-x.x.x/GoogleMapsBase.xcframework
    • GoogleMaps-x.x.x/GoogleMaps.xcframework
    • GoogleMaps-x.x.x/GoogleMapsCore.xcframework
    • (Clients du forfait Premium uniquement) GoogleMaps-x.x.x/GoogleMapsM4B.xcframework
  10. Effectuez un clic droit sur GoogleMaps.xcframework dans votre projet, puis sélectionnez Afficher dans le Finder.
  11. Faites glisser GoogleMaps.bundle depuis le dossier ios-arm64_x86_64-simulator/GoogleMaps.framework/Resources vers le répertoire de premier niveau de votre projet Xcode. Lorsque vous y êtes invité, assurez-vous que l'option Copier les éléments si nécessaire n'est pas sélectionnée.
  12. Sélectionnez votre projet dans Project Navigator, puis choisissez la cible de votre application.
  13. Ouvrez l'onglet Phases de compilation de la cible de votre application et dans Link Binary with Libraries (Associer le binaire avec des bibliothèques), puis ajoutez les bibliothèques et les frameworks suivants :
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  14. Choisissez votre projet plutôt qu'une cible spécifique, puis ouvrez l'onglet Paramètres de compilation. Dans la section Autres indicateurs de lien, ajoutez -ObjC. Si ces paramètres ne sont pas visibles, modifiez le filtre dans la barre Build Settings de Basic à All.

  15. Pour installer le SDK Places pour iOS XCFramework, consultez Premiers pas avec le SDK Places pour iOS.

Manuellement

Ce guide explique comment ajouter manuellement le SDK Maps pour iOS à votre projet et configurer vos paramètres de compilation dans Xcode.

  1. Téléchargez les fichiers sources du SDK : GoogleMaps-7.3.0.
  2. Décompressez les fichiers sources. Accédez au dossier Frameworks pour accéder à XCFramework.
  3. Si vous n'avez pas encore de projet Xcode, créez-en un et enregistrez-le sur votre ordinateur local. Si vous découvrez le développement iOS :
    1. Créez un projet.
    2. Sélectionnez le modèle iOS > Application.
    3. Sur l'écran des options du projet :
      1. Saisissez le 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.
  4. Faites glisser les éléments XCFrameworks suivants dans votre projet sous Frameworks, bibliothèques et contenus intégrés. Veillez à sélectionner Do not Embed (Ne pas intégrer) pour chaque XCFramework :
    • GoogleMaps-x.x.x/GoogleMapsBase.xcframework
    • GoogleMaps-x.x.x/GoogleMaps.xcframework
    • GoogleMaps-x.x.x/GoogleMapsCore.xcframework
    • (Clients du forfait Premium uniquement) GoogleMaps-x.x.x/GoogleMapsM4B.xcframework
  5. Effectuez un clic droit sur GoogleMaps.xcframework dans votre projet, puis sélectionnez Afficher dans le Finder.
  6. Faites glisser GoogleMaps.bundle depuis le dossier ios-arm64_x86_64-simulator/GoogleMaps.framework/Resources vers le répertoire de premier niveau de votre projet Xcode. Lorsque vous y êtes invité, assurez-vous que l'option Copier les éléments si nécessaire n'est pas sélectionnée.
  7. Sélectionnez votre projet dans Project Navigator, puis choisissez la cible de votre application.
  8. Ouvrez l'onglet Phases de compilation de la cible de votre application et dans Link Binary with Libraries (Associer le binaire avec des bibliothèques), puis ajoutez les bibliothèques et les frameworks suivants :
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  9. Choisissez votre projet plutôt qu'une cible spécifique, puis ouvrez l'onglet Paramètres de compilation. Dans la section Autres indicateurs de lien, ajoutez -ObjC. Si ces paramètres ne sont pas visibles, modifiez le filtre dans la barre Build Settings de Basic à All.

  10. Pour installer le SDK Places pour iOS XCFramework, consultez Premiers pas avec le SDK Places pour iOS.

Étape 3 : Ajoutez votre clé API au projet

Dans Obtenir une clé API, vous avez généré une clé API pour votre application. Ajoutez-la maintenant à votre projet Xcode.

Dans les exemples suivants, remplacez YOUR_API_KEY par votre clé API.

Swift

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

  1. Ajoutez l'instruction d'importation suivante :
    import GoogleMaps
  2. Ajoutez les éléments suivants à votre méthode application(_:didFinishLaunchingWithOptions:) à l'aide de votre clé API :
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. Si vous utilisez également l'API Places, ajoutez à nouveau votre clé comme indiqué ici :
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

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

  1. Ajoutez l'instruction d'importation suivante :
    @import GoogleMaps;
  2. Ajoutez les éléments suivants à votre méthode application:didFinishLaunchingWithOptions: à l'aide de votre clé API :
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. Si vous utilisez également l'API Places, ajoutez à nouveau votre clé comme indiqué ici :
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Étape 4 (facultatif): Activez l'utilisation de la structure de rendu Metal

Le SDK Maps pour iOS vous permet d'activer le framework de rendu Metal d'Apple. Pour essayer le moteur de rendu Metal dans votre application, appelez [GMSServices setMetalRendererEnabled:YES] dans Objective-C ou GMSServices.setMetalRendererEnabled(true) dans Swift avant de créer des vues de carte.

Si vous installez le SDK manuellement, vous devez également veiller à ajouter Metal.framework dans XCode.

Étape 5: Ajoutez une carte

Le code ci-dessous montre comment ajouter une carte simple à un ViewController existant :

  1. Ajoutez ou mettez à jour des méthodes dans le fichier ViewController par défaut de votre application pour créer et initialiser une instance de GMSMapView.

    Swift

    /*
     * Copyright 2020 Google Inc. All rights reserved.
     *
     *
     * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
     * file except in compliance with the License. You may obtain a copy of the License at
     *
     *     http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software distributed under
     * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
     * ANY KIND, either express or implied. See the License for the specific language governing
     * permissions and limitations under the License.
     */
    
    import UIKit
    import GoogleMaps
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
            // Create a GMSCameraPosition that tells the map to display the
            // coordinate -33.86,151.20 at zoom level 6.
            let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
            let mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera)
            self.view.addSubview(mapView)
    
            // Creates a marker in the center of the map.
            let marker = GMSMarker()
            marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
            marker.title = "Sydney"
            marker.snippet = "Australia"
            marker.map = mapView
      }
    }
    
          

    Objective-C

    /*
    * Copyright 2020 Google Inc. All rights reserved.
    *
    *
    * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
    * file except in compliance with the License. You may obtain a copy of the License at
    *
    *     http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing, software distributed under
    * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
    * ANY KIND, either express or implied. See the License for the specific language governing
    * permissions and limitations under the License.
    */
    
    #import "ViewController.h"
    #import <GoogleMaps/GoogleMaps.h>
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
      // Do any additional setup after loading the view.
      // Create a GMSCameraPosition that tells the map to display the
      // coordinate -33.86,151.20 at zoom level 6.
      GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                              longitude:151.20
                                                                   zoom:6];
      GMSMapView *mapView = [GMSMapView mapWithFrame:self.view.frame camera:camera];
      mapView.myLocationEnabled = YES;
      [self.view addSubview:mapView];
    
      // Creates a marker in the center of the map.
      GMSMarker *marker = [[GMSMarker alloc] init];
      marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
      marker.title = @"Sydney";
      marker.snippet = @"Australia";
      marker.map = mapView;
    }
    
    @end
    
          
  2. Exécutez votre application. Vous devriez voir une carte avec un seul repère centré sur Sydney, en Australie. Si vous voyez le repère, mais que la carte n'est pas visible, vérifiez que vous avez fourni votre clé API.

Étape 6 (facultatif): Déclarez les schémas d'URL utilisés par l'API

À partir d'iOS 9 et Xcode 7, les applications peuvent déclarer les schémas d'URL qu'elles ont l'intention d'ouvrir en les spécifiant dans le fichier Info.plist de l'application. Le SDK Maps pour iOS ouvre l'application mobile Google Maps lorsque l'utilisateur clique sur le logo Google sur la carte. Votre application peut donc déclarer les schémas d'URL pertinents.

Pour déclarer les schémas d'URL utilisés par le SDK Maps pour iOS, ajoutez les lignes suivantes à votre Info.plist :

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>googlechromes</string>
    <string>comgooglemaps</string>
</array>

La capture d'écran ci-dessous montre la configuration dans l'interface utilisateur Xcode :

Configuration de LSApplicationQueriesSchemes dans Xcode

Sans la déclaration ci-dessus, les erreurs suivantes peuvent se produire lorsque l'utilisateur appuie sur le logo Google sur la carte:

-canOpenURL: failed for URL: "comgooglemaps://" - error: "This app is not allowed to query for scheme comgooglemaps"
-canOpenURL: failed for URL: "googlechromes://" - error: "This app is not allowed to query for scheme googlechromes"

Pour éliminer ces erreurs, ajoutez la déclaration à votre Info.plist comme décrit ci-dessus.

Étapes suivantes

Maintenant que vous disposez d'une clé API et d'un projet Xcode, vous pouvez créer et exécuter des applications. Le SDK Maps pour iOS propose de nombreux tutoriels et exemples d'applications qui peuvent vous aider à démarrer. Pour en savoir plus, consultez les pages suivantes :