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:
-
Otwórz
project
lubworkspace
Xcode, a następnie wybierz File > Add Package Dependencies (Plik > Dodaj zależności pakietu). - Wpisz URL https://github.com/googlemaps/ios-navigation-sdk, naciśnij Enter, aby pobrać pakiet, i kliknij „Dodaj pakiet”.
-
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”. -
W oknie Wybierz produkty w pakiecie sprawdź, czy
GoogleNavigation
zostanie dodany do wyznaczonegomain
celu. Gdy skończysz, kliknij „Dodaj pakiet”. -
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:
Jeśli uaktualniasz aplikację z wersji wcześniejszej niż 9.0.0, po uaktualnieniu musisz usunąć te zależności:
GoogleMapsBase
,GoogleMapsCore
iGoogleMapsM4B
. 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)
- W Xcode wybierz „File > Packages > Update to Latest Package Versions” (Plik > Pakiety> Aktualizuj do najnowszych wersji pakietu).
- 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:
- Zamknij obszar roboczy Xcode. Otwórz terminal i wykonaj to polecenie:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
Usuń
Podfile
,Podfile.resolved
i Xcodeworkspace
, jeśli nie używasz ich do niczego innego niż CocoaPods.
-
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
-
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:
- Jeśli nie masz jeszcze projektu Xcode, utwórz go i zapisz na komputerze lokalnym. Jeśli dopiero zaczynasz programowanie aplikacji na iOS:
- Utwórz nowy projekt.
- Wybierz szablon iOS > Aplikacja.
- Na ekranie opcji projektu:
- Wpisz nazwę projektu.
- Zapisz wartość pola Identyfikator pakietu. Możesz użyć tej wartości, aby ograniczyć poniżej swój klucz interfejsu API.
- Ustaw projekt Interface na Storyboard.
- Ustaw Language (Język) na Swift lub Objective-C.
- Utwórz w katalogu projektu plik o nazwie
Podfile
. Ten plik definiuje zależności projektu. - 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 Cocoapodssource '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. - Zapisz
Podfile
. Otwórz terminal i przejdź do katalogu zawierającego
Podfile
:cd <path-to-project>
Uruchom polecenie
pod install
. Spowoduje to zainstalowanie interfejsów API wymienionych w zadaniuPodfile
wraz ze wszystkimi zależnościami.pod install
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:
- Otwórz terminal i przejdź do katalogu projektu zawierającego
Podfile
. - Uruchom polecenie
pod update
. Spowoduje to zaktualizowanie wszystkich interfejsów API podanych w zadaniuPodfile
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:
- Pobierz te pliki binarne i pliki zasobów pakietu SDK:
- 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.
- Usuń z projektu wszystkie dotychczasowe odniesienia do Map, Nawigacji i Miejsca.
- 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
- 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. - 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). - Wybierz projekt w narzędziu Project Navigator, a następnie wybierz miejsce docelowe aplikacji.
- 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
- 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
- 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. - 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”.
- Klucz:
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:
- Dodaj te instrukcje importu:
import GoogleMaps import GoogleNavigation
- Dodaj do metody
application(_:didFinishLaunchingWithOptions:)
:GMSServices.provideAPIKey("YOUR_API_KEY")
Objective-C
Dodaj klucz interfejsu API do AppDelegate.m
w ten sposób:
- Dodaj te instrukcje importu:
@import GoogleMaps; @import GoogleNavigation;
- 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.