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:
- Jeśli nie masz jeszcze projektu Xcode, utwórz go teraz i zapisz na komputerze lokalnym. Jeśli dopiero zaczynasz tworzyć aplikacje na iOS:
- Utwórz nowy projekt.
- Wybierz szablon iOS > Aplikacja.
- Na ekranie opcji projektu:
- Wpisz nazwę projektu.
- Zapisz wartość w polu Identyfikator pakietu. Możesz użyć tej wartości, aby ograniczyć swój klucz interfejsu API poniżej.
- Ustaw Interfejs w projekcie na Scenorys.
- Ustaw Język na Swift lub Objective-C.
- Utwórz w katalogu projektu plik o nazwie
Podfile
. Ten plik określa zależności w projekcie. - 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ę. - 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 określonych wPodfile
oraz wszystkich zależności.pod install
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:
- Otwórz terminal i przejdź do katalogu projektu zawierającego
Podfile
. - Uruchom polecenie
pod update
. Spowoduje to zaktualizowanie do najnowszej wersji wszystkich interfejsów API określonych wPodfile
.
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:
- Pobierz XCFrameworks, wykonując te czynności:
- 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.
- Przejdź do katalogu z najnowszą wersją.
- Otwórz plik
GoogleNavigation.podspec.json
iGoogleMaps.podspec.json
. - Na dole plików JSON odszukaj pole o nazwie
source
i pole w nim o nazwiehttp
. - Wartością tego pola jest link do pobierania CocoaPoda. Pobierz i rozpakuj go lokalnie.
- Aby skorzystać z nawigacji Google, znajdź
GoogleNavigation.xcframework
w katalogu Frameworks. - W przypadku Map Google znajdź
GoogleMapsBase.xcframework
w kataloguBase/Frameworks
, aGoogleMapsCore.xcframework
iGoogleMaps.xcframework
w kataloguMaps/Frameworks
. - 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.
- Usuń z projektu wszystkie istniejące odwołania do Map, Nawigacji i Miejsca.
- 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
- Kliknij prawym przyciskiem myszy
GoogleMaps.xcframework
w projekcie i wybierz Pokaż w Finderze. - Przeciągnij
GoogleMaps.bundle
z folderuios-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. - Powtórz 2 poprzednie kroki, aby dodać plik
GoogleNavigation.bundle
z folderuios-arm64/GoogleNavigation.framework/Resources
. - Wybierz projekt w usłudze Project Navigator i wskaż miejsce docelowe aplikacji.
- 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
- 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
- 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. - 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”.
- Klucz:
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:
- Dodaj te instrukcje importu:
import GoogleMaps import GoogleNavigation
- 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:
- Dodaj te instrukcje importu:
@import GoogleMaps; @import GoogleNavigation;
- 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.