Konfigurowanie projektu

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

Wymagania wstępne

  • Zanim zaczniesz korzystać z pakietu Navigation SDK na iOS, potrzebujesz projektu z kontem rozliczeniowym i włączonym pakietem SDK Maps na iOS. Zalecamy utworzenie wielu właścicieli projektów i administratorów rozliczeń, aby zespół zawsze miał dostęp do osób z tymi rolami. Więcej informacji znajdziesz w artykule Konfigurowanie projektu Google Cloud.
  • Aby utworzyć projekt za pomocą pakietu Navigation SDK na iOS, potrzebujesz wersji 15.0 lub nowszej Xcode.
  • Minimalna docelowa wersja iOS dla pakietu SDK nawigacji to 15.0.

Krok 1. Zainstaluj pakiet SDK

Menedżer pakietów Swift

Pakiet Navigation SDK można zainstalować za pomocą menedżera pakietów Swift. Aby dodać pakiet SDK, usuń wszystkie istniejące zależności pakietu Navigation SDK.

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

  1. Otwórz project lub workspace Xcode, a następnie wybierz File > Add Package Dependencies (Plik > Dodaj zależności pakietu).
  2. Wpisz URL https://github.com/googlemaps/ios-navigation-sdk, naciśnij Enter, aby pobrać pakiet, i kliknij „Dodaj pakiet”.
  3. Aby zainstalować określony element version, w polu Reguła zależności ustaw jedną z opcji zależnych od 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 GoogleNavigation zostanie dodany do wyznaczonego main celu. Gdy skończysz, kliknij „Dodaj pakiet”.
  5. Aby sprawdzić instalację, przejdź do panelu General środowiska docelowego. W obszarze Frameworks, biblioteki i umieszczona treść powinny być widoczne zainstalowane pakiety. Możesz też wyświetlić sekcję „Zależności pakietów” w „Nawigatorze projektu”, aby sprawdzić pakiet i jego wersję.

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

  1. Jeśli uaktualniasz aplikację z wersji wcześniejszej niż 9.0.0, po uaktualnieniu musisz usunąć te zależności: GoogleMapsBase, GoogleMapsCore i GoogleMapsM4B. Nie usuwaj zależności dla: GoogleMaps. Więcej informacji znajdziesz w informacjach o wersji 9.0.0.

    W ustawieniach konfiguracji projektu Xcode znajdź Frameworks, biblioteki i Embedded Content. Aby usunąć strukturę, użyj znaku minusa(-):

    • GoogleMapsBase (tylko w przypadku uaktualnień z wersji starszych niż 9.0.0)
    • GoogleMapsCore (tylko w przypadku uaktualnień z wersji starszych niż 9.0.0)
    • GoogleMapsM4B (tylko w przypadku uaktualnień z wersji starszych niż 9.0.0)
  2. W Xcode wybierz „File > Packages > Update to Latest Package Versions” (Plik > Pakiety> Aktualizuj do najnowszych wersji pakietu).
  3. Aby sprawdzić instalację, przejdź do sekcji Zależności pakietów w narzędziu Project Navigator i sprawdź pakiet i jego wersję.

Aby usunąć istniejące zależności pakietu Navigation SDK dodane za pomocą 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 ręcznie usunąć zainstalowany pakiet Navigation SDK na iOS, wykonaj te czynności:
  1. W ustawieniach konfiguracji projektu Xcode znajdź Frameworks, biblioteki i Embedded Content. Użyj znaku minusa(-), aby usunąć tę strukturę:
    • 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 open source na potrzeby projektów Swift i Objective-C Cocoa.

Jeśli nie masz jeszcze narzędzia CocoaPods, zainstaluj je w systemie macOS, uruchamiając w terminalu poniższe polecenie. Szczegółowe informacje znajdziesz w wprowadzeniu do CocoaPods.

sudo gem install cocoapods

Utwórz 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 i zapisz na komputerze lokalnym. Jeśli dopiero zaczynasz programowanie aplikacji na iOS:
    1. Utwórz nowy projekt.
    2. Wybierz szablon iOS > Aplikacja.
    3. Na ekranie opcji projektu:
      1. Wpisz nazwę projektu.
      2. Zapisz wartość pola Identyfikator pakietu. Możesz użyć tej wartości, aby ograniczyć poniżej swój klucz interfejsu API.
      3. Ustaw projekt Interface na Storyboard.
      4. Ustaw Language (Język) na Swift lub Objective-C.
  2. Utwórz w katalogu projektu plik o nazwie Podfile. Ten plik definiuje zależności projektu.
  3. Edytuj obiekt Podfile i dodaj zależności wraz z ich versions. Oto przykład, który zawiera zależność potrzebną do pakietu Navigation SDK na iOS: # Numer referencyjny instalacji Cocoapods
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '9.0.0'
    end
            
    Pamiętaj, aby regularnie uruchamiać pod outdated, aby wykryć nowsze wersje. W razie potrzeby uaktualnij 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 wymienionych w zadaniu Podfile wraz ze wszystkimi zależnościami.

    pod install
  7. Zamknij Xcode, a następnie otwórz (kliknij dwukrotnie) plik .xcworkspace projektu, aby uruchomić Xcode. Od tej pory do otwierania projektu musisz używać pliku .xcworkspace.

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

  1. Otwórz terminal i przejdź do katalogu projektu zawierającego Podfile.
  2. Uruchom polecenie pod update. Spowoduje to zaktualizowanie wszystkich interfejsów API podanych w zadaniu Podfile do najnowszej wersji.

Instalacja ręczna

Z tego przewodnika dowiesz się, jak ręcznie dodać do projektu pakiet XCFrameworks zawierający pakiet Navigation SDK na iOS oraz Maps SDK na iOS, a także skonfigurować ustawienia kompilacji w Xcode. XCFramework to pakiet binarny, którego można używać na wielu platformach, w tym na komputerach z chipsetem M1.

Aby zainstalować pakiet XCFrameworks do pakietu Navigation SDK na iOS lub pakietu Maps SDK na iOS, wykonaj te 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 nie masz doświadczenia w korzystaniu z iOS, utwórz nowy projekt i wybierz szablon aplikacji na iOS.
  3. Usuń z projektu wszystkie dotychczasowe odniesienia do Map, Nawigacji i Miejsca.
  4. Przeciągnij te XCFrameworks do projektu w obszarze Frameworks, Library, and Embedded Content, aby zainstalować zarówno pakiety SDK Map, jak i pakiety Navigation (W razie potrzeby wybierz Skopiuj elementy):
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. Przeciągnij GoogleMaps.bundle z pobranego GoogleMapsResources do katalogu najwyższego poziomu projektu Xcode. Gdy pojawi się odpowiedni komunikat, zaznacz opcję W razie potrzeby skopiuj elementy.
  6. Przeciągnij GoogleNavigation.bundle z pobranego GoogleNavigationResources do katalogu najwyższego poziomu projektu Xcode. Gdy pojawi się odpowiedni komunikat, upewnij się, że wybrana jest opcja Copy items to target's folder's folder (Skopiuj elementy do folderu grupy docelowej).
  7. Wybierz projekt w narzędziu Project Navigator, a następnie 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 miejscu docelowym aplikacji wybierz kartę Możliwości, włącz Tryby w tle i te tryby:
    • Dźwięk, AirPlay i obraz w obrazie
    • Aktualizacje lokalizacji
  10. Wybierz projekt zamiast konkretnego środowiska docelowego i otwórz kartę Ustawienia kompilacji. W sekcji Inne flagi łączące dodaj ‑ObjC zarówno do debugowania, jak i do wersji. 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ść – opis użytkowania w przypadku użycia lokalizacji)
      Wartość: „Ta aplikacja wymaga uprawnień do używania Twojej lokalizacji w celu korzystania z nawigacji zakręt po zakręcie”.
    • Klucz: NSLocationAlwaysAndWhenInUseUsageDescription (Prywatność – zawsze używana lokalizacja i opis użytkowania)
      Wartość: „Ta aplikacja wymaga uprawnień do używania Twojej lokalizacji w celu korzystania z nawigacji zakręt po zakręcie”.

Krok 2. Sprawdź plik manifestu prywatności Apple

Apple wymaga podania informacji o ochronie prywatności w aplikacjach z App Store. Aktualizacje i inne informacje znajdziesz na stronie z informacjami o ochronie prywatności w Apple App Store.

Plik manifestu prywatności Apple jest zawarty w pakiecie zasobów SDK. Aby sprawdzić, czy plik manifestu prywatności został dołączony, i sprawdzić jego zawartość, utwórz archiwum aplikacji i wygeneruj raport o ochronie prywatności z archiwum.

Krok 3. 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 AppDelegate.swift w ten sposób:

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

Objective-C

Dodaj klucz interfejsu API do AppDelegate.m w ten sposób:

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

Krok 4. Dodaj mapę

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

Aby można było włączyć nawigację, użytkownik musi zaakceptować warunki korzystania z usługi. Aby poprosić użytkownika, wywołaj GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(), a następnie sprawdź, czy warunki zostały zaakceptowane. Jeśli użytkownik odrzuci warunki, polecenie mapView.isNavigationEnabled = true nie będzie działać, a pole mapView.navigator nie będzie miało skutku.

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 swoją aplikację. Powinna zostać wyświetlona mapa wyśrodkowana na Kirkland w stanie Waszyngton. Jeśli mapa nie jest widoczna, sprawdź, czy został podany prawidłowy klucz interfejsu API.

Jeśli jesteś klientem korzystającym z usług mobilnych

Jeśli korzystasz z usług mobilnych, dowiedz się więcej o rozliczeniach z dokumentacji usług związanych z transportem. Więcej informacji o rejestrowaniu transakcji znajdziesz w artykule na temat konfigurowania płatności. Aby dowiedzieć się, jak dodać identyfikatory transakcji do implementacji pakietu Navigation SDK, zapoznaj się z artykułem Przypisywanie wykorzystania usługi do transakcji związanych z transportem.