Projekt einrichten

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

Voraussetzungen

  • Bevor 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 Aufgaben übernehmen kann. Weitere Informationen finden Sie unter Google Cloud-Projekt einrichten.
  • Wenn Sie ein Projekt mit dem Navigation SDK for iOS erstellen möchten, benötigen Sie Version 15.0 oder höher von Xcode.
  • Die mindestens erforderliche iOS-Zielversion für das Navigation SDK ist 14.0.

SDK Installieren

Swift-Paketmanager

Das Navigation SDK kann über den Swift Package Manager installiert werden. Entfernen Sie vor dem Hinzufügen des SDK alle vorhandenen Navigation SDK-Abhängigkeiten.

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

  1. Öffnen Sie project oder workspace in Xcode und wählen Sie dann Datei > Paketabhängigkeiten hinzufügen aus.
  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, setzen Sie das Feld Abhängigkeitsregel auf eine der versionsbasierten Optionen. 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 zum festgelegten main-Ziel hinzugefügt wird. Klicke anschließend auf „Paket hinzufügen“.
  5. Um die Installation zu prüfen, gehen Sie zum Bereich General Ihres Ziels. Unter Frameworks, Bibliotheken und eingebettete Inhalte sollten die installierten Pakete angezeigt werden. Sie können auch im Abschnitt „Paketabhängigkeiten“ im „Project Navigator“ das Paket und seine Version prüfen.

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

  1. Gehen Sie in Xcode zu „File > Packages > Update To Recent Package Versions“ (Datei > Pakete> Auf neueste Paketversionen aktualisieren).
  2. Wenn Sie die Installation prüfen möchten, rufen Sie in der Projektnavigation den Bereich Paketabhängigkeiten auf. Dort sehen Sie das Paket und seine Version.

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 den Xcode workspace, wenn du sie ausschließlich für CocoaPods verwendest.

Gehen Sie so vor, um vorhandenes Navigation SDK for iOS zu entfernen, das manuell installiert wurde:
  1. Suchen Sie in den Konfigurationseinstellungen Ihres Xcode-Projekts 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 for 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 zu CocoaPods.

sudo gem install cocoapods

Erstelle eine Podfile für das Navigation SDK for iOS und installiere damit die API und die zugehörigen Abhängigkeiten:

  1. Wenn Sie noch kein Xcode-Projekt haben, erstellen Sie eines und speichern Sie es auf Ihrem lokalen Computer. Wenn Sie mit der iOS-Entwicklung noch nicht 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-ID. Mit diesem Wert können Sie den API-Schlüssel unten einschränken.
      3. Legen Sie das Projekt Interface auf Storyboard fest.
      4. Legen Sie für Language (Sprache) Swift oder Objective-C fest.
  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 ihren 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, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '5.3.1'
    end
            
    Führen Sie regelmäßig pod outdated 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 rufen Sie das Verzeichnis auf, das Podfile enthält:

    cd <path-to-project>
  6. Führe den Befehl pod install aus. Dadurch werden die in Podfile angegebenen APIs sowie alle 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 Podfile auf.
  2. Führe den Befehl pod update aus. Dadurch werden alle in Podfile angegebenen APIs auf die neueste Version aktualisiert.

Manuelle Installation

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

So installieren Sie das 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 mit iOS noch nicht vertraut sind, erstellen Sie ein neues Projekt und wählen Sie die Vorlage für iOS-Apps aus.
  3. Entfernen Sie alle vorhandenen Referenzen zu Maps, Navigation und Places aus dem Projekt.
  4. Ziehen Sie die folgenden XCFrameworks in Ihr Projekt unter Frameworks, Libraries and Integrierte Inhalte, um sowohl das Maps SDK als auch das Navigation SDK zu installieren. Wählen Sie Copy items if needed aus, wenn Sie dazu aufgefordert werden:
    • 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. Wenn Sie dazu aufgefordert werden, achten Sie darauf, dass Copy items if needed (Elemente bei Bedarf kopieren) ausgewählt ist.
  6. Ziehen Sie GoogleNavigation.bundle aus der heruntergeladenen GoogleNavigationResources in das Verzeichnis der obersten Ebene Ihres Xcode-Projekts. Wenn Sie dazu aufgefordert werden, achten Sie darauf, dass Copy items into theziel group' Ordner (Elemente in Ordner der Zielgruppe kopieren) ausgewählt ist.
  7. Wählen Sie Ihr Projekt im Project Navigator und dann das Ziel Ihrer Anwendung aus.
  8. Öffnen Sie den Tab Build Phase (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 Anwendung den Tab Funktionen aus, aktivieren Sie Hintergrundmodi und aktivieren Sie folgende Modi:
    • 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 Bereich Weitere Verknüpfungs-Flags ‑ObjC für debug und release hinzu. Falls diese Einstellungen nicht angezeigt werden, ändere den Filter in der Leiste Build Settings (Build-Einstellungen) von Basic in All.
  11. Öffnen Sie Info.plist und fügen Sie die folgenden Schlüssel/Wert-Paare hinzu:
    • Schlüssel:NSLocationWhenInUseUsageDescription (Datenschutz – Beschreibung der Verwendung des Standorts)
      Wert: „Diese App benötigt die Berechtigung, deinen Standort für die detaillierte Routenführung zu verwenden.“
    • Schlüssel:NSLocationAlwaysAndWhenInUseUsageDescription (Datenschutz – immer und wenn die Nutzung verwendet wird, Beschreibung)
      Wert: „Diese App benötigt die Berechtigung, deinen Standort für die detaillierte Routenführung zu verwenden.“

Apple Privacy Manifest-Datei hinzufügen

  1. Laden Sie das Privacy Manifest-Bundle für das Navigation SDK for iOS herunter: GoogleNavigationPrivacy.
  2. Extrahieren Sie die Datei, um auf GoogleNavigationPrivacy.bundle zuzugreifen.
  3. Fügen Sie GoogleNavigationPrivacy.bundle mit einer dieser Methoden in die Xcode-Projektnavigation ein. Das Kästchen „Zu Zielen hinzufügen“ muss für das Ziel Ihrer App aktiviert sein. Nach dem Hinzufügen wird die PrivacyInfo-Datei im Projektnavigator angezeigt und Sie können sich die Werte ansehen.
  4. Screenshot von Xcode-Datenschutzinformationen
  5. Prüfen Sie, ob das Datenschutzmanifest hinzugefügt wurde. Erstellen Sie dazu ein Archiv Ihrer App und generieren Sie aus dem Archiv einen Datenschutzbericht.

API-Schlüssel in Projekt einfügen

Die folgenden Beispiele zeigen, wie Sie den API-Schlüssel zu 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"];

Karte hinzufügen

Mit diesem Code wird veranschaulicht, wie Sie einem vorhandenen ViewController eine einfache Karte hinzufügen, einschließlich einiger Anfangseinstellungen für die Navigation.

Bevor die Navigation aktiviert werden kann, muss der Nutzer den Nutzungsbedingungen zustimmen. Wenn du den Nutzer dazu auffordern möchtest, rufe GMSNavigationServices.showTermsAndConditionsDialogIfNeeded() auf und prüfe, ob die Nutzungsbedingungen akzeptiert wurden. Wenn der Nutzer die Nutzungsbedingungen 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. Es sollte eine Karte angezeigt werden, auf der Kirkland in der Mitte liegt. Wenn die Karte nicht sichtbar ist, prüfen Sie, ob Sie den richtigen API-Schlüssel angegeben haben.

Wenn Sie Mobility Services-Kunde sind

Wenn Sie Mobility Services-Kunde sind, finden Sie in der Mobilitätsdokumentation 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 Mobilitätstransaktionen verknüpfen.