Konfigurowanie projektu

Z tego przewodnika dowiesz się, jak zintegrować pakiet SDK nawigacji na iOS z aplikacją na iOS.

Wymagania wstępne

  • Zanim zaczniesz korzystać z pakietu SDK nawigacji na iOS, musisz mieć projekt z kontem rozliczeniowym i włączonym pakietem SDK Map Google na iOS. Zalecamy utworzenie wielu właścicieli projektu i administratorów rozliczeń, aby Twój zespół zawsze miał dostęp do osoby z tymi rolami. Więcej informacji znajdziesz w artykule o konfigurowaniu projektu Google Cloud.
  • Aby utworzyć projekt za pomocą pakietu SDK nawigacji na iOS, potrzebujesz Xcode w wersji 14.0 lub nowszej.
  • Minimalna docelowa wersja iOS nawigacji SDK to 14.0.

Zainstaluj pakiet SDK

Menedżer pakietów Swift

Pakiet SDK nawigacji można zainstalować za pomocą menedżera pakietów Swift. Aby dodać pakiet SDK, upewnij się, że zostały usunięte wszystkie istniejące zależności SDK nawigacji.

Aby dodać pakiet SDK do nowego lub istniejącego projektu, wykonaj te czynności:

  1. Otwórz plik Xcode project lub workspace i kliknij Plik > Dodaj zależności pakietów.
  2. Wpisz adres URL https://github.com/googlemaps/ios-navigation-sdk, naciśnij Enter, by pobrać pakiet, a następnie kliknij „Add Package” (Dodaj pakiet).
  3. Aby zainstalować określony version, w polu Reguła zależności ustaw jedną z opcji opartych na wersji. W przypadku nowych projektów zalecamy określenie najnowszej wersji i użycie opcji „Dokładna wersja”. Gdy skończysz, kliknij „Dodaj pakiet”.
  4. W oknie Wybierz produkty w pakiecie sprawdź, czy pakiet GoogleNavigation zostanie dodany do wyznaczonego miejsca docelowego main. Gdy skończysz, kliknij „Dodaj pakiet”.
  5. Aby sprawdzić instalację, przejdź do panelu General środowiska docelowego. Zainstalowane pakiety powinny być widoczne w sekcji Frameworks, Biblioteki i Umieszczone treści. Możesz też wyświetlić sekcję „Zależności pakietów” w aplikacji „Project Navigator”, aby sprawdzić pakiet i jego wersję.

Aby zaktualizować package w istniejącym projekcie, wykonaj te czynności:

  1. W Xcode wybierz kolejno „File” (Plik) > Packages (Pakiety) > Update To Last Package Versions (Aktualizuj do najnowszych wersji pakietów).
  2. Aby sprawdzić instalację, przejdź do sekcji Zależności pakietów w Project Navigator i sprawdź pakiet i jego wersję.

Aby usunąć istniejące zależności pakietu Navigation SDK dodane za pomocą pakietu CocoaPods, wykonaj te czynności:

  1. Zamknij obszar roboczy Xcode. Otwórz terminal i wykonaj to polecenie:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Usuń Podfile, Podfile.resolved i Xcode workspace, jeśli nie używasz ich do niczego innego niż CocoaPods.

Aby usunąć zainstalowany ręcznie pakiet SDK nawigacji na iOS, wykonaj te czynności:
  1. W ustawieniach konfiguracji projektu Xcode znajdź Frameworks, Libraries, and Embedded Content. Za pomocą znaku minusa(-) usuń tę platformę:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. Z katalogu najwyższego poziomu projektu Xcode usuń pakiet GoogleMaps.

CocoaPods

Pakiet Navigation SDK na iOS jest dostępny jako pod CocoaPods. CocoaPods to menedżer zależności typu open source dla projektów Swift i Objective-C Cocoa.

Jeśli nie masz jeszcze narzędzia CocoaPods, zainstaluj je w macOS, uruchamiając z terminala to polecenie. Szczegółowe informacje znajdziesz w przewodniku dla początkujących na temat CocoaPods.

sudo gem install cocoapods

Utwórz obiekt Podfile dla pakietu Navigation SDK na iOS i użyj go do zainstalowania interfejsu API i jego zależności:

  1. Jeśli nie masz jeszcze projektu Xcode, utwórz go teraz i zapisz na komputerze lokalnym. Jeśli dopiero zaczynasz tworzyć aplikacje na iOS:
    1. Utwórz nowy projekt.
    2. Wybierz szablon iOS > Aplikacja.
    3. Na ekranie opcji projektu:
      1. Wypełnij pole Nazwa projektu.
      2. Zapisz wartość w polu Identyfikator pakietu. Możesz użyć tej wartości, aby ograniczyć swój klucz interfejsu API poniżej.
      3. Ustaw Interfejs projektu na Scenorys.
      4. Jako Language ustaw Swift lub Objective-C.
  2. W katalogu projektu utwórz plik o nazwie Podfile. Ten plik określa zależności Twojego projektu.
  3. Edytuj Podfile i dodaj zależności wraz z ich versions. Oto przykład, który przedstawia zależność wymaganą w pakiecie SDK nawigacji na iOS:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '5.3.1'
    end
            
    Pamiętaj, aby regularnie uruchamiać pod outdated, aby wykrywać nowsze wersje. W razie potrzeby uaktualnij go do najnowszej wersji.
  4. Zapisz Podfile.
  5. Otwórz terminal i przejdź do katalogu zawierającego Podfile:

    cd <path-to-project>
  6. Uruchom polecenie pod install. Spowoduje to zainstalowanie interfejsów API określonych w Podfile oraz wszystkich zależności.

    pod install
  7. Zamknij Xcode, a następnie otwórz (dwukrotnie) plik .xcworkspace swojego projektu, aby uruchomić Xcode. Od tej pory projekt będzie można otwierać tylko za pomocą pliku .xcworkspace.

Aby zaktualizować interfejs API w istniejącym projekcie, wykonaj te czynności:

  1. Otwórz terminal i przejdź do katalogu projektu, w którym znajduje się Podfile.
  2. Uruchom polecenie pod update. Spowoduje to zaktualizowanie do najnowszej wersji wszystkich interfejsów API określonych w: Podfile.

Instalacja ręczna

Z tego przewodnika dowiesz się, jak ręcznie dodać do projektu XCFrameworks zawierające pakiet SDK nawigacji na iOS i pakiet Maps SDK na iOS oraz skonfigurować ustawienia kompilacji w Xcode. XCFramework to pakiet binarny, którego można używać na wielu platformach, w tym na maszynach korzystających z chipsetu M1.

Aby zainstalować pakiet XCFrameworks dla pakietu Navigation SDK na iOS i pakietu Maps SDK na iOS, wykonaj następujące czynności:

  1. Pobierz te pliki binarne i pliki zasobów pakietu SDK:
  2. Uruchom Xcode i otwórz istniejący projekt lub utwórz nowy. Jeśli dopiero zaczynasz korzystać z iOS, utwórz nowy projekt i wybierz Szablon aplikacji na iOS.
  3. Usuń z projektu wszystkie istniejące odwołania do Map, Nawigacji i miejsc.
  4. Przeciągnij ten XCFrameworks do swojego projektu do sekcji Frameworks, Biblioteki i Umieszczone treści, aby zainstalować pakiety SDK Map i Nawigacji (gdy pojawi się odpowiedni komunikat, wybierz Skopiuj elementy, w razie potrzeby):
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. Przeciągnij plik GoogleMaps.bundle z pobranego pliku GoogleMapsResources do katalogu najwyższego poziomu projektu Xcode. Gdy pojawi się odpowiedni komunikat, upewnij się, że opcja Kopiuj elementy w razie potrzeby jest zaznaczona.
  6. Przeciągnij pobrany plik GoogleNavigation.bundle z pliku GoogleNavigationResources do katalogu najwyższego poziomu w projekcie Xcode. Gdy pojawi się komunikat, upewnij się, że wybrana jest opcja Kopiuj elementy do folderu grupy docelowej.
  7. Wybierz projekt z Nawigatora projektów i wybierz miejsce docelowe aplikacji.
  8. Otwórz kartę Etapy kompilacji i w sekcji Połącz plik binarny z bibliotekami dodaj te platformy i biblioteki:
    • 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 środowisku docelowym aplikacji wybierz kartę Możliwości, włącz Tryby w tle oraz te tryby:
    • Dźwięk, AirPlay i obraz w obrazie
    • Aktualizacje lokalizacji
  10. Wybierz projekt, a nie konkretny cel, i otwórz kartę Ustawienia kompilacji. W sekcji Inne flagi łączące tagi dodaj parametr ‑ObjC w przypadku parametrów debug i release. Jeśli te ustawienia nie są widoczne, zmień filtr na pasku Ustawienia kompilacji z Podstawowe na Wszystkie.
  11. Otwórz Info.plist i dodaj te pary klucz-wartość:
    • Klucz: NSLocationWhenInUseUsageDescription (Prywatność – lokalizacja podczas używania – opis użytkowania)
      Wartość: „Ta aplikacja wymaga uprawnień do korzystania z Twojej lokalizacji na potrzeby szczegółowej nawigacji”.
    • Klucz: NSLocationAlwaysAndWhenInUseUsageDescription (Prywatność – lokalizacja zawsze i podczas używania – opis)
      Wartość: „Ta aplikacja wymaga uprawnień do korzystania z Twojej lokalizacji na potrzeby szczegółowej nawigacji”.

Dodaj klucz interfejsu API do projektu

Poniższe przykłady pokazują, jak dodać klucz interfejsu API do projektu w Xcode:

Swift

Dodaj klucz interfejsu API do urządzenia AppDelegate.swift, wykonując te czynności:

  1. Dodaj te instrukcje importu:
    import GoogleMaps
    import GoogleNavigation
  2. Dodaj do metody application(_:didFinishLaunchingWithOptions:) ten kod:
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

Dodaj klucz interfejsu API do urządzenia AppDelegate.m, wykonując te czynności:

  1. Dodaj te instrukcje importu:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. Dodaj do metody application:didFinishLaunchingWithOptions: ten kod:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

Dodaj mapę

Ten kod pokazuje, jak dodać prostą mapę do istniejącego obiektu ViewController, w tym kilka początkowych ustawień nawigacji.

Przed włączeniem nawigacji użytkownik musi zaakceptować warunki korzystania z usługi. Aby poprosić użytkownika o zgodę, wywołaj GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(), a potem sprawdź, czy warunki zostały zaakceptowane. Jeśli użytkownik odrzuci warunki, mapView.isNavigationEnabled = true nie będzie działać, a mapView.navigator będzie mieć wartość zerową.

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

Uruchom aplikację. Powinna wyświetlić się mapa wyśrodkowana na Kirkland w stanie Waszyngton. Jeśli mapa jest niewidoczna, sprawdź, czy podano prawidłowy klucz interfejsu API.

Jeśli jesteś klientem korzystającym z usług komórkowych

Jeśli jesteś klientem korzystającym z usług mobilnych, informacje o rozliczeniach znajdziesz w dokumentacji dotyczącej usług związanych z transportem. Więcej informacji o rejestrowaniu transakcji znajdziesz w artykule o konfigurowaniu rozliczeń. Aby dowiedzieć się, jak dodać identyfikatory transakcji do implementacji pakietu Navigation SDK, przeczytaj artykuł Powiązanie korzystania z usługi z transakcjami związanych z urządzeniami mobilnymi.