Начало работы
1. Получение ключа доступа
Чтобы подключиться к серверам 2ГИС, получать геоданные и включить возможности SDK, получите файл ключа доступа dgissdk.key:
- Зарегистрируйтесь в личном кабинете Менеджер Платформы.
- Купите подписку для доступа к необходимым API. Набор API зависит от необходимых функциональностей и версии SDK. См. подробнее в разделе API для работы SDK.
- Создайте ключ доступа или настройте существующий ключ для работы с мобильным SDK.
- Скачайте файл ключа
dgissdk.key.
Работать с ключами можно в Менеджере Платформы: подробнее см. в документации личного кабинета.
Требования к работе с ключами
- При работе с SDK версии 13.3.0 и выше указание App ID при создании ключа необязательно. Укажите App ID, только если вы используете SDK более низких версий или планируете работать с офлайн-данными.
- Если в ключе указан App ID, вы можете использовать этот ключ только для одного приложения. Отдельные ключи требуются в следующих случаях:
- Если приложение доступно для разных операционных систем.
- Если у приложения есть несколько вариантов для одной ОС (например, приложение для водителя и приложение для пассажира).
- Если используются разные версии SDK (Full и Map).
- Изменение файла ключа во время работы приложения не поддерживается. Так как выбор файла ключа происходит при инициализации SDK, вы можете задать им разные названия (по умолчанию используется
dgissdk.key): для этого передайте ключ с другим названием через параметрkeySourceвDGis.Container.
2. Установка SDK
Swift Package Manager
Чтобы установить iOS SDK через Swift Package Manager, добавьте в проект пакетную зависимость. См. инструкции по установке Swift-пакетов в документации Apple.
Для подключения SDK укажите URL в зависимости от версии:
https://github.com/2gis/mobile-sdk-full-swift-package— для версии SDK Full.https://github.com/2gis/mobile-sdk-map-swift-package— для версии SDK Map.
CocoaPods
Чтобы установить iOS SDK через CocoaPods, добавьте зависимость DGisMobileSDK.
Используйте версионирование из Swift Package Manager, при этом добавьте постфикс -full или -map в зависимости от необходимой версии SDK.
Спецификацию пода вы можете посмотреть по одному из следующих URL:
https://github.com/2gis/mobile-sdk-full-swift-package/blob/master/DGisMobileSDK.podspec— для версии SDK Full.https://github.com/2gis/mobile-sdk-map-swift-package/blob/master/DGisMobileSDK.podspec— для версии SDK Map.
Бинарный артефакт
Вы можете загрузить фреймворки напрямую, не используя пакетные менеджеры. Для этого обратитесь к репозиторию, содержащему спецификацию пакетов для CocoaPods или Swift Package Manager:
https://github.com/2gis/mobile-sdk-full-swift-package— для версии SDK Full.https://github.com/2gis/mobile-sdk-map-swift-package— для версии SDK Map.
В файле Package.swift будет указан URL, ведущий на загрузку архива с SDK по прямой ссылке. Для навигации по версиям используйте теги git.
3. Инициализация SDK
-
Создайте специальный объект Container, который будет хранить все сущности, связанные с картой. При создании объекта укажите путь до полученного файла ключа
dgissdk.keyодним из способов:-
Из
Bundle.mainприложения с помощью метода fromAsset() (способ по умолчанию). Ключ должен быть прикреплён к корню приложения:// Получение файла ключа
let key = KeySource.fromAsset(KeyFromAsset(path: "dgissdk.key"))
// Создание контейнера
let sdk = DGis.Container(keySource: key) -
C указанием абсолютного пути до файла ключа с помощью метода fromFile():
// Получение файла ключа
let key = Bundle.main.path(forResource: "dgissdk", ofType: "key").map {
KeySource.fromFile(KeyFromFile(path: $0))
}
// Создание контейнера
let sdk = DGis.Container(keySource: key) -
С указанием строки для получения файла ключа с помощью метода fromString():
// Получение файла ключа
let key = KeySource.fromString(KeyFromString(contents: "some content"))
// Создание контейнера
let sdk = DGis.Container(keySource: key)
предупреждениеDGis.Containerможет быть создан в единственном экземпляре. Вы можете его пересоздать, чтобы освободить неиспользуемые ресурсы (например, кеш после первого создания карты). -
-
Дополнительно вы можете указать настройки журналирования (LogOptions) и настройки HTTP-клиента (HTTPOptions), такие как время ожидания ответа и кеширование.
// Настройки журналирования
let logOptions = LogOptions(systemLevel: .info)
// Настройки HTTP-клиента
let httpOptions = HttpOptions.init()
// Настройки сбора анонимной статистики использования
let personalDataCollectionOptions = PersonalDataCollectionOptions(personalDataCollectionConsent: .granted)
// Создание контейнера
let sdk = DGis.Container(
keySource: key,
logOptions: logOptions,
httpOptions: httpOptions,
personalDataCollectionOptions: personalDataCollectionOptions
)
Дополнительные настройки
Vendor Config
Для переопределения некоторых настроек работы SDK используется файл в формате VendorConfig, который передается при инициализации контейнера SDK.
-
Добавьте файл в формате
VendorConfigв бандл при сборке приложения и создайте экземпляр класса File.Для файла, добавленного в корень бандла и имеющего имя
vendor-config.json, код будет выглядеть так:let vendorConfigFile = Bundle.main.path(forResource: "vendor-config", ofType: "jsonx").map {
VendorConfig.fromFile(VendorConfigFromFile(path: $0))
} -
Передайте созданную переменную в качестве значения параметра
vendorConfigFileпри инициализации Container:let sdk = DGis.Container(
keySource: key,
logOptions: logOptions,
httpOptions: httpOptions,
vendorConfigFile: vendorConfigFile ?? .none
)
Работа с офлайн-данными
Мобильный SDK (версия Full) позволяет работать с данными карты, справочника и навигатора офлайн из предзагруженных пакетов. Это может быть полезно в условиях плохой связи или при её отсутствии.
Чтобы настроить работу в режиме офлайн:
-
Обратитесь в поддержку 2ГИС, чтобы получить права на работу с офлайн-данными. Вы можете запросить права на офлайн-данные всех компонентов (карта, справочник, построение маршрутов) или выбрать только необходимые.
-
Скачайте файлы с данными для территорий, где необходима офлайн-работа приложения, через TerritoryManager.
См. пример кода для загрузки территории:
-
Настройте компоненты SDK для работы с предзагруженными данными:
- Карта: создайте источник данных и укажите нужный режим работы.
- Справочник: используйте нужный метод для создания справочника объектов.
- Построение маршрутов: по умолчанию настроен гибридный режим. Подробнее см. документацию о маршрутах.
Язык приложения
Чтобы установить язык приложения, передайте список локалей (Locale) в методе overrideLocales() класса LocaleManager.
В зависимости от выбранной локали меняется язык звуковых оповещений в навигаторе.
Пример установки англоязычной локали:
- Для версии SDK 13.0.0 и выше
- Для версии SDK 12.x
// Создание объекта Locale с указанием языка и региона
let locale = Locale(language: "en", region: "EN")
// Установка локали для приложения
LocaleManager.instance(context: sdkContext).overrideLocales(locales: [locale])
// Создание объекта Locale с указанием языка и региона
let locale = Locale(language: "en", region: "EN")
// Установка локали для приложения
getLocaleManager(context: sdkContext).overrideLocales(locales: [locale])
Доступные значения языков (параметры language и region соответственно):
ru-RU— русский;en-EN— английский;ar-AE— арабский.