Следуйте этому руководству, чтобы интегрировать Navigation SDK для iOS в приложение iOS.
Предварительные условия
- Прежде чем вы начнете использовать Navigation SDK для iOS, вам понадобится проект с платежным аккаунтом и включенным Maps SDK для iOS. Мы рекомендуем создать несколько владельцев проектов и администраторов по выставлению счетов, чтобы в вашей команде всегда был кто-то с этими ролями. Дополнительную информацию см. в разделе Настройка проекта Google Cloud .
- Чтобы создать проект с использованием Navigation SDK для iOS, вам потребуется версия Xcode 13.0 или более поздняя.
- Минимальная целевая версия iOS для навигационного SDK — 13.0.
Установка SDK
Используйте CocoaPods
Навигационный SDK для iOS доступен в виде модуля CocoaPods . CocoaPods — это менеджер зависимостей с открытым исходным кодом для проектов Swift и Objective-C Cocoa.
Если у вас еще нет инструмента CocoaPods, установите его в macOS, выполнив следующую команду из терминала. Подробности см. в руководстве по началу работы с CocoaPods .
sudo gem install cocoapods
Создайте Podfile
для навигационного SDK для iOS и используйте его для установки API и его зависимостей:
- Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на своем локальном компьютере. Если вы новичок в разработке для iOS:
- Создайте новый проект.
- Выберите iOS > Шаблон приложения .
- На экране опций проекта:
- Введите название проекта .
- Запишите значение поля идентификатора пакета . Вы можете использовать это значение, чтобы ограничить свой ключ API ниже.
- Установите для интерфейса проекта значение Storyboard .
- Установите язык Swift или Objective-C .
- Создайте файл с именем
Podfile
в каталоге вашего проекта. Этот файл определяет зависимости вашего проекта. - Отредактируйте
Podfile
и добавьте свои зависимости вместе с их версиями . Вот пример, который включает зависимость, необходимую для навигационного SDK для 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
Обязательно регулярно запускайтеpod outdated
для обнаружения новых версий. При необходимости обновитесь до последней версии . - Сохраните
Podfile
. Откройте терминал и перейдите в каталог, содержащий
Podfile
:cd <path-to-project>
Запустите команду
pod install
. При этом будут установлены API, указанные вPodfile
, вместе со всеми зависимостями.pod install
Закройте Xcode, а затем откройте (дважды щелкните) файл
.xcworkspace
вашего проекта, чтобы запустить Xcode. С этого момента вы должны использовать файл.xcworkspace
для открытия проекта.
Чтобы обновить API для существующего проекта, выполните следующие действия:
- Откройте терминал и перейдите в каталог проекта, содержащий
Podfile
. - Запустите команду
pod update
. При этом все API, указанные вPodfile
обновляются до последней версии.
Установить вручную
В этом руководстве показано, как вручную добавить XCFrameworks, содержащий Navigation SDK для iOS и Maps SDK для iOS, в ваш проект и настроить параметры сборки в Xcode. XCFramework — это двоичный пакет, который можно использовать на нескольких платформах, включая машины с набором микросхем M1.
Выполните следующие действия, чтобы установить XCFrameworks для Navigation SDK для iOS и Maps SDK для iOS:
- Загрузите XCFrameworks, выполнив следующие действия:
- Найдите последнюю версию файла Podspec Navigation SDK на странице спецификаций CocoaPods для Google Navigation и последнюю версию файла Podspec Maps SDK на странице спецификаций CocoaPods для Google Maps .
- Перейдите в каталог последней версии.
- Откройте файлы
GoogleNavigation.podspec.json
иGoogleMaps.podspec.json
. - Перейдите в конец файлов JSON и найдите поле с именем
source
и поле внутри него с именемhttp
. - Значением этого поля является ссылка для скачивания CocoaPod. Загрузите и распакуйте это локально.
- Для GoogleNavigation найдите
GoogleNavigation.xcframework
в каталоге Frameworks. - Для GoogleMaps найдите
GoogleMapsBase.xcframework
в каталогеBase/Frameworks
и найдитеGoogleMapsCore.xcframework
иGoogleMaps.xcframework
в каталогеMaps/Frameworks
. - Запустите Xcode и либо откройте существующий проект, либо создайте новый проект. Если вы новичок в iOS, создайте новый проект и выберите шаблон приложения iOS .
- Удалите из проекта все существующие ссылки на карты, навигацию и места.
- Перетащите следующие файлы XCFrameworks в свой проект в разделе «Платформы, библиотеки и встроенный контент», чтобы установить SDK «Карты» и «Навигация» (при появлении запроса выберите «Копировать элементы, если необходимо »):
-
GoogleMapsBase.xcframework
-
GoogleMaps.xcframework
-
GoogleMapsCore.xcframework
-
GoogleNavigation.xcframework
-
- Щелкните правой кнопкой мыши
GoogleMaps.xcframework
в своем проекте и выберите «Показать в Finder» . - Перетащите файл
GoogleMaps.bundle
из папкиios-arm64/GoogleMaps.framework/Resources
в каталог верхнего уровня вашего проекта Xcode. При появлении запроса убедитесь, что флажок «Копировать элементы при необходимости» не выбран. - Повторите два предыдущих шага, чтобы добавить
GoogleNavigation.bundle
из папкиios-arm64/GoogleNavigation.framework/Resources
. - Выберите свой проект в Навигаторе проектов и выберите цель своего приложения.
- Откройте вкладку «Фазы сборки » и в разделе «Связывание двоичных файлов с библиотеками» добавьте следующие платформы и библиотеки:
-
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
-
- В целевом приложении выберите вкладку «Возможности» , включите «Фоновые режимы» и включите следующие режимы:
- Аудио, AirPlay и картинка в картинке
- Обновления местоположения
- Выберите свой проект, а не конкретную цель, и откройте вкладку «Настройки сборки» . В разделе «Другие флаги компоновщика» добавьте
‑ObjC
как для отладки , так и для выпуска . Если эти настройки не отображаются, измените фильтр на панели «Настройки сборки» с «Базовый» на «Все» . - Откройте
Info.plist
и добавьте следующие пары ключ-значение:- Ключ:
NSLocationWhenInUseUsageDescription
( Конфиденциальность — местоположение при использовании, описание использования )
Значение: «Этому приложению требуется разрешение на использование вашего местоположения для пошаговой навигации». - Ключ:
NSLocationAlwaysAndWhenInUseUsageDescription
( Конфиденциальность — описание местоположения всегда и при использовании ).
Значение: «Этому приложению требуется разрешение на использование вашего местоположения для пошаговой навигации».
- Ключ:
Добавьте ключ API в свой проект
В следующих примерах показано, как добавить ключ API в ваш проект в Xcode:
Быстрый
Добавьте свой ключ API в AppDelegate.swift
следующим образом:
- Добавьте следующие операторы импорта:
import GoogleMaps import GoogleNavigation
- Добавьте в свой
application(_:didFinishLaunchingWithOptions:)
следующее:GMSServices.provideAPIKey("YOUR_API_KEY")
Цель-C
Добавьте свой ключ API в свой AppDelegate.m
следующим образом:
- Добавьте следующие операторы импорта:
@import GoogleMaps; @import GoogleNavigation;
- Добавьте в свое
application:didFinishLaunchingWithOptions:
метод:[GMSServices provideAPIKey:@"YOUR_API_KEY"];
Добавить карту
Этот код демонстрирует, как добавить простую карту к существующему ViewController
, включая некоторые начальные настройки навигации.
Прежде чем включить навигацию, пользователь должен согласиться с условиями. Чтобы запросить у пользователя запрос, вызовите GMSNavigationServices.showTermsAndConditionsDialogIfNeeded()
, а затем проверьте, были ли приняты условия. Если пользователь отклоняет условия, mapView.isNavigationEnabled = true
не имеет никакого эффекта, а mapView.navigator
равен нулю.
Быстрый
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.
}
Цель-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
Запустите ваше приложение. Вы должны увидеть карту с центром в Киркленде, штат Вашингтон. Если карта не отображается, убедитесь, что вы указали правильный ключ API.
Если вы являетесь клиентом мобильных услуг
Если вы являетесь клиентом мобильных услуг, узнайте о выставлении счетов в документации по мобильности. Дополнительную информацию о записи транзакций см. в разделе Настройка выставления счетов . Чтобы узнать, как добавить идентификаторы транзакций в реализацию Navigation SDK, см. раздел «Связывание использования службы с транзакциями мобильности» .