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łączony pakiet SDK Map Google na iOS. Zalecamy utworzenie wielu właścicieli projektu i administratorów rozliczeniowych. Dzięki temu Twój zespół zawsze będzie miał dostęp do kogoś z tymi rolami. Więcej informacji znajdziesz w artykule Konfigurowanie projektu Google Cloud.
  • Aby utworzyć projekt za pomocą pakietu SDK nawigacji na iOS, musisz mieć Xcode w wersji 13.0 lub nowszej.
  • Minimalna docelowa wersja pakietu SDK do nawigacji na iOS to 13.0.

Instalowanie pakietu SDK

Korzystanie z CocoaPods

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

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

sudo gem install cocoapods

Utwórz obiekt Podfile dla pakietu SDK nawigacji na iOS i użyj go do zainstalowania interfejsu API oraz 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. Wpisz nazwę 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 w projekcie na Scenorys.
      4. Ustaw Język na Swift lub Objective-C.
  2. Utwórz w katalogu projektu plik o nazwie Podfile. Ten plik określa zależności w projekcie.
  3. Edytuj Podfile i dodaj zależności wraz z ich wersjami. Oto przykład, który obejmuje zależność wymaganą przez pakiet SDK nawigacji na iOS:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '13.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '4.4.0'
    end
            
    Pamiętaj, aby regularnie uruchamiać pod outdated w celu wykrywania nowszych wersji. W razie potrzeby przejdź na najnowszą wersję.
  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 projektu, aby uruchomić Xcode. Od tej pory projekt możesz 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 zawierającego Podfile.
  2. Uruchom polecenie pod update. Spowoduje to zaktualizowanie do najnowszej wersji wszystkich interfejsów API określonych w Podfile.

Instalowanie ręczne

Z tego przewodnika dowiesz się, jak ręcznie dodać do projektu pakiet XCFrameworks zawierający 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.

Wykonaj te czynności, aby zainstalować XCFrameworks dla SDK nawigacji na iOS i Maps SDK na iOS:

  1. Pobierz XCFrameworks, wykonując te czynności:
    1. Znajdź najnowszą wersję pliku Podspec pakietu Nawigacji SDK ze strony specyfikacji CocoaPods dla Nawigacji Google oraz najnowszą wersję pliku Podspec pakietu Maps SDK na stronie specyfikacji CocoaPods dla Map Google.
    2. Przejdź do katalogu z najnowszą wersją.
    3. Otwórz plik GoogleNavigation.podspec.json i GoogleMaps.podspec.json.
    4. Na dole plików JSON odszukaj pole o nazwie source i pole w nim o nazwie http.
    5. Wartością tego pola jest link do pobierania CocoaPoda. Pobierz i rozpakuj go lokalnie.
    6. Aby skorzystać z nawigacji Google, znajdź GoogleNavigation.xcframework w katalogu Frameworks.
    7. W przypadku Map Google znajdź GoogleMapsBase.xcframework w katalogu Base/Frameworks, a GoogleMapsCore.xcframework i GoogleMaps.xcframework w katalogu Maps/Frameworks.
  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 Miejsca.
  4. Przeciągnij ten XCFrameworks do projektu do sekcji Frameworks, Libraries and Embedded Content, aby zainstalować pakiety SDK Map i Nawigacji (gdy pojawi się odpowiedni komunikat, wybierz Skopiuj elementy w razie potrzeby):
    • GoogleMapsBase.xcframework
    • GoogleMaps.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. Kliknij prawym przyciskiem myszy GoogleMaps.xcframework w projekcie i wybierz Pokaż w Finderze.
  6. Przeciągnij GoogleMaps.bundle z folderu ios-arm64/GoogleMaps.framework/Resources do katalogu najwyższego poziomu w projekcie Xcode. Po wyświetleniu monitu upewnij się, że pole Kopiuj elementy w razie potrzeby nie jest zaznaczone.
  7. Powtórz 2 poprzednie kroki, aby dodać plik GoogleNavigation.bundle z folderu ios-arm64/GoogleNavigation.framework/Resources.
  8. Wybierz projekt w usłudze Project Navigator i wskaż miejsce docelowe aplikacji.
  9. Otwórz kartę Etapy kompilacji, a w sekcji Połącz plik binarny z bibliotekami dodaj te platformy i biblioteki:
    • Accelerate.framework
    • AudioToolbox.framework
    • AVFoundation.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
  10. W obszarze 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
  11. Wybierz projekt, a nie konkretny cel, i otwórz kartę Ustawienia kompilacji. W sekcji Inne flagi łączące dodaj tag ‑ObjC zarówno dla zdarzenia debugowanie, jak i elementu release. Jeśli te ustawienia nie są widoczne, zmień filtr na pasku Ustawienia kompilacji z Podstawowe na Wszystkie.
  12. Otwórz Info.plist i dodaj te pary klucz-wartość:
    • Klucz: NSLocationWhenInUseUsageDescription (Prywatność – lokalizacja podczas używania)
      Wartość: „Ta aplikacja potrzebuje uprawnień do korzystania z Twojej lokalizacji w celu szczegółowej nawigacji”.
    • Klucz: NSLocationAlwaysAndWhenInUseUsageDescription (Prywatność – lokalizacja zawsze i w trakcie używania)
      Wartość: „Ta aplikacja potrzebuje uprawnień do korzystania z Twojej lokalizacji na potrzeby szczegółowej nawigacji”.

Dodawanie klucza 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:) te dane:
    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: te dane:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

Dodawanie mapy

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

Przed włączeniem nawigacji użytkownik musi zaakceptować warunki korzystania z usługi. Aby zapytać użytkownika, wywołaj GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(), a potem sprawdź, czy warunki zostały zaakceptowane. Jeśli użytkownik odrzuci warunki, właściwość mapView.isNavigationEnabled = true nie będzie miała skutków, a pole mapView.navigator będzie miało 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 z regionem Kirkland w stanie Waszyngton. Jeśli mapa jest niewidoczna, sprawdź, czy podano prawidłowy klucz interfejsu API.

Jeśli jesteś klientem usług mobilnych

Jeśli jesteś klientem usług komórkowych, sprawdź informacje o rozliczeniach w dokumentacji dotyczącej usług mobilnych. Więcej informacji o rejestrowaniu transakcji znajdziesz w artykule o konfigurowaniu rozliczeń. Aby dowiedzieć się, jak dodać identyfikatory transakcji do implementacji pakietu SDK nawigacji, przeczytaj sekcję Przypisywanie wykorzystania usługi z transakcjami mobilnymi.