Projekt einrichten

Befolgen Sie diese Anleitung, um das Navigation SDK für iOS in eine iOS-App zu integrieren.

Voraussetzungen

  • Damit Sie das Navigation SDK for iOS verwenden können, benötigen Sie ein Projekt mit einem Rechnungskonto. Außerdem muss das Maps SDK for iOS aktiviert sein. Wir empfehlen, mehrere Projektinhaber und Abrechnungsadministratoren einzurichten, damit immer jemand aus Ihrem Team die entsprechenden Rollen hat. Weitere Informationen finden Sie unter Google Cloud-Projekt einrichten.
  • Wenn Sie ein Projekt mit dem Navigation SDK für iOS erstellen möchten, benötigen Sie Version 15.0 oder höher von Xcode.
  • Die Mindestzielversion von iOS für das Navigation SDK ist 15.0.

Schritt 1: SDK installieren

Swift-Paketmanager

Das Navigation SDK kann über den Swift Package Manager installiert werden. Achten Sie vor dem Hinzufügen des SDK darauf, dass alle vorhandenen Navigation SDK-Abhängigkeiten entfernt wurden.

So fügen Sie das SDK einem neuen oder vorhandenen Projekt hinzu:

  1. Öffnen Sie Xcode project oder workspace und klicken Sie dann auf Datei > Paketabhängigkeiten hinzufügen.
  2. Geben Sie https://github.com/googlemaps/ios-navigation-sdk als URL ein, drücken Sie die Eingabetaste, um das Paket abzurufen, und klicken Sie auf „Paket hinzufügen“.
  3. Wenn Sie eine bestimmte version installieren möchten, legen Sie das Feld Abhängigkeitsregel auf eine der versionsbasierten Optionen fest. Bei neuen Projekten empfehlen wir, die neueste Version anzugeben und die Option „Exakte Version“ zu verwenden. Klicke anschließend auf „Paket hinzufügen“.
  4. Prüfen Sie im Fenster Paketprodukte auswählen, ob GoogleNavigation dem festgelegten Ziel main hinzugefügt wird. Klicke anschließend auf „Paket hinzufügen“.
  5. Um die Installation zu überprüfen, navigiere zum Bereich General deines Ziels. Die installierten Pakete sollten nun unter Frameworks, Bibliotheken und eingebettete Inhalte zu sehen sein. Sie können auch den Abschnitt „Paketabhängigkeiten“ der Projektnavigation aufrufen, um das Paket und seine Version zu prüfen.

So aktualisieren Sie package für ein vorhandenes Projekt:

  1. Wenn Sie ein Upgrade von einer Version vor 9.0.0 durchführen, müssen Sie nach dem Upgrade die folgenden Abhängigkeiten entfernen: GoogleMapsBase, GoogleMapsCore und GoogleMapsM4B. Entfernen Sie die Abhängigkeit für GoogleMaps nicht. Weitere Informationen finden Sie in den Versionshinweisen zu Version 9.0.0.

    Suchen Sie in den Xcode-Projektkonfigurationseinstellungen nach Frameworks, Bibliotheken und eingebettete Inhalte. Verwenden Sie das Minuszeichen(-), um das folgende Framework zu entfernen:

    • GoogleMapsBase (nur für Upgrades von Versionen vor 9.0.0)
    • GoogleMapsCore (nur für Upgrades von Versionen vor 9.0.0)
    • GoogleMapsM4B (nur für Upgrades von Versionen vor 9.0.0)
  2. Gehen Sie in Xcode zu „File > Packages > Update to Latest Package Versions“ (Datei > Pakete> Auf neueste Paketversionen aktualisieren).
  3. Um Ihre Installation zu überprüfen, gehen Sie zum Abschnitt Paketabhängigkeiten der Projektnavigation, um das Paket und seine Version zu überprüfen.

So entfernen Sie vorhandene Navigation SDK-Abhängigkeiten, die mit CocoaPods hinzugefügt wurden:

  1. Schließen Sie den Xcode-Arbeitsbereich. Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Entferne Podfile, Podfile.resolved und Xcode workspace, wenn du sie ausschließlich für CocoaPods verwendest.

So entfernen Sie ein manuell installiertes Navigation SDK for iOS:
  1. Suchen Sie in den Xcode-Projektkonfigurationseinstellungen nach Frameworks, Bibliotheken und eingebettete Inhalte. Verwenden Sie das Minuszeichen(-), um das folgende Framework zu entfernen:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. Entfernen Sie das GoogleMaps-Bundle aus dem Verzeichnis der obersten Ebene Ihres Xcode-Projekts.

CocoaPods

Das Navigation SDK für iOS ist als Pod von CocoaPods verfügbar. CocoaPods ist ein Open-Source-Abhängigkeitsmanager für Cocoa-Projekte in Swift und Objective-C.

Falls du das Tool „CocoaPods“ noch nicht nutzt, installiere es unter macOS, indem du den folgenden Befehl über das Terminal ausführst. Weitere Informationen findest du im Startleitfaden für CocoaPods.

sudo gem install cocoapods

Erstellen Sie eine Podfile für das Navigation SDK for iOS und installieren Sie damit die API und ihre Abhängigkeiten:

  1. Wenn Sie noch kein Xcode-Projekt haben, erstellen Sie eines und speichern Sie es auf Ihrem lokalen Computer. Wenn Sie noch nicht mit der iOS-Entwicklung vertraut sind:
    1. Erstellen Sie ein neues Projekt.
    2. Wählen Sie die Vorlage iOS > App aus.
    3. Auf dem Bildschirm mit den Projektoptionen:
      1. Geben Sie den Projektnamen ein.
      2. Notieren Sie den Wert des Felds Bundle Identifier. Mit diesem Wert können Sie Ihren API-Schlüssel unten einschränken.
      3. Setze das Projekt Interface auf Storyboard.
      4. Stellen Sie die Sprache auf Swift oder Objective-C ein.
  2. Erstelle in deinem Projektverzeichnis eine Datei mit dem Namen Podfile. In dieser Datei sind die Abhängigkeiten des Projekts definiert.
  3. Bearbeiten Sie die Podfile und fügen Sie die Abhängigkeiten zusammen mit den zugehörigen versions hinzu. Das folgende Beispiel enthält die Abhängigkeit, die Sie für das Navigation SDK for iOS benötigen: # CocoaPods-Installationsreferenz #
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '9.0.0'
    end
            
    Führen Sie pod outdated regelmäßig aus, um neuere Versionen zu erkennen. Führen Sie bei Bedarf ein Upgrade auf die neueste Version durch.
  4. Speichere die Podfile.
  5. Öffnen Sie ein Terminal und wechseln Sie zum Verzeichnis mit der Datei Podfile:

    cd <path-to-project>
  6. Führe den Befehl pod install aus. Dadurch werden die in Podfile angegebenen APIs zusammen mit allen Abhängigkeiten installiert.

    pod install
  7. Schließe Xcode und öffne dann mit einem Doppelklick die Datei .xcworkspace deines Projekts, um Xcode wieder zu starten. Ab jetzt musst du das Projekt über die Datei .xcworkspace aufrufen.

So aktualisieren Sie die API für ein vorhandenes Projekt:

  1. Öffnen Sie ein Terminal und rufen Sie das Projektverzeichnis mit der Datei Podfile auf.
  2. Führe den Befehl pod update aus. Dadurch werden alle in der Podfile angegebenen APIs auf die neueste Version aktualisiert.

Manuelle Installation

In diesem Leitfaden erfahren Sie, wie Sie Ihrem Projekt die XCFrameworks, die das Navigation SDK for iOS und das Maps SDK for iOS enthalten, manuell hinzufügen und die Build-Einstellungen in Xcode konfigurieren. Ein XCFramework ist ein Binärpaket, das auf mehreren Plattformen verwendet werden kann, einschließlich Maschinen mit dem M1-Chipsatz.

So installieren Sie XCFrameworks für das Navigation SDK for iOS und das Maps SDK for iOS:

  1. Laden Sie die folgenden SDK-Binärdateien und Ressourcendateien herunter:
  2. Starte Xcode und öffne ein vorhandenes oder erstelle ein neues Projekt. Wenn Sie neu bei iOS sind, erstellen Sie ein neues Projekt und wählen Sie die Vorlage für iOS-Apps aus.
  3. Entfernen Sie alle vorhandenen Verweise auf Maps, Navigation und Places aus dem Projekt.
  4. Ziehen Sie die folgenden XCFrameworks in Ihr Projekt unter Frameworks, Libraries, and Embedded Content (Frameworks, Bibliotheken und eingebettete Inhalte), um sowohl das Maps SDK als auch das Navigation SDK zu installieren. Wählen Sie bei entsprechender Aufforderung Copy items if needed (Elemente bei Bedarf kopieren) aus:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. Ziehen Sie GoogleMaps.bundle aus den heruntergeladenen GoogleMapsResources in das Verzeichnis der obersten Ebene Ihres Xcode-Projekts. Achten Sie darauf, dass Copy items if needed (Elemente bei Bedarf kopieren) ausgewählt ist, wenn Sie dazu aufgefordert werden.
  6. Ziehen Sie GoogleNavigation.bundle aus den heruntergeladenen GoogleNavigationResources in das Verzeichnis der obersten Ebene Ihres Xcode-Projekts. Wenn Sie dazu aufgefordert werden, achten Sie darauf, dass Copy items into destination group's Ordner (Elemente in Ordner der Zielgruppe kopieren) ausgewählt ist.
  7. Wählen Sie Ihr Projekt aus dem Project Navigator und dann das Ziel Ihrer App aus.
  8. Öffnen Sie den Tab Build Phases (Build-Phasen) und fügen Sie unter Link Binary with Libraries (Binärdatei mit Bibliotheken verknüpfen) die folgenden Frameworks und Bibliotheken hinzu:
    • 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. Wählen Sie im Ziel Ihrer App den Tab Funktionen aus, aktivieren Sie Hintergrundmodi und wählen Sie die folgenden Modi aus:
    • Audio, AirPlay und Bild im Bild
    • Standortaktualisierungen
  10. Wählen Sie Ihr Projekt anstelle eines bestimmten Ziels aus und öffnen Sie den Tab Build Settings (Build-Einstellungen). Fügen Sie im Abschnitt Other Linker Flags ‑ObjC sowohl für debug als auch für release hinzu. Wenn diese Einstellungen nicht sichtbar sind, ändern Sie den Filter in der Leiste Build Settings (Build-Einstellungen) von Basic (Standard) zu All (Alle).
  11. Öffnen Sie Info.plist und fügen Sie die folgenden Schlüssel/Wert-Paare hinzu:
    • Schlüssel:NSLocationWhenInUseUsageDescription (Datenschutz – Standort bei Nutzung, Beschreibung)
      Wert: „Diese App benötigt die Berechtigung, Ihren Standort für die detaillierte Routenführung zu verwenden.“
    • Schlüssel:NSLocationAlwaysAndWhenInUseUsageDescription (Privacy – Location Always and When In Use Usage, Beschreibung)
      Wert: „Diese App benötigt die Berechtigung, Ihren Standort für die detaillierte Routenführung zu verwenden.“

Schritt 2: Apple Privacy Manifest-Datei prüfen

Apple verlangt, dass für Apps im App Store Details zum App-Datenschutz angegeben werden. Aktuelle Informationen und weitere Informationen finden Sie auf der Seite zu Datenschutzdetails im Apple App Store.

Die Apple Privacy Manifest-Datei ist im Ressourcenpaket für das SDK enthalten. Wenn Sie prüfen möchten, ob die Privacy Manifest-Datei enthalten ist, und ihren Inhalt prüfen möchten, erstellen Sie ein Archiv Ihrer App und generieren Sie aus dem Archiv einen Datenschutzbericht.

Schritt 3: API-Schlüssel zum Projekt hinzufügen

Die folgenden Beispiele zeigen, wie Sie den API-Schlüssel Ihrem Projekt in Xcode hinzufügen:

Swift

Füge deinen API-Schlüssel folgendermaßen in AppDelegate.swift ein:

  1. Fügen Sie die folgenden Importanweisungen hinzu:
    import GoogleMaps
    import GoogleNavigation
  2. Fügen Sie der Methode application(_:didFinishLaunchingWithOptions:) Folgendes hinzu:
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

Füge deinen API-Schlüssel folgendermaßen in AppDelegate.m ein:

  1. Fügen Sie die folgenden Importanweisungen hinzu:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. Fügen Sie der Methode application:didFinishLaunchingWithOptions: Folgendes hinzu:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

Schritt 4: Karte hinzufügen

In diesem Code wird gezeigt, wie einem vorhandenen ViewController eine einfache Karte hinzugefügt wird, einschließlich einiger Anfangseinstellungen für die Navigation.

Bevor die Navigation aktiviert werden kann, muss der Nutzer den Nutzungsbedingungen zustimmen. Rufe dazu GMSNavigationServices.showTermsAndConditionsDialogIfNeeded() auf und prüfe, ob die Nutzungsbedingungen akzeptiert wurden. Wenn der Nutzer die Bedingungen ablehnt, hat mapView.isNavigationEnabled = true keine Auswirkungen und mapView.navigator ist null.

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

Führen Sie die Anwendung aus. Sie sollten eine Karte sehen, die auf Kirkland, Washington, zeigt. Ist die Karte nicht sichtbar, prüfen Sie, ob Sie den richtigen API-Schlüssel angegeben haben.

Wenn Sie Mobilfunkdienst-Kunde sind

Wenn Sie ein Mobility Services-Kunde sind, finden Sie in der Mobility-Dokumentation Informationen zur Abrechnung. Weitere Informationen zum Aufzeichnen von Transaktionen finden Sie unter Abrechnung einrichten. Informationen zum Hinzufügen von Transaktions-IDs zu Ihrer Navigation SDK-Implementierung finden Sie unter Dienstnutzung mit Mobility-Transaktionen verknüpfen.