Перейти к основному содержимому

Начало работы

Инициализация SDK

  1. Обратитесь в службу поддержки 2ГИС для получения ключа доступа. Обязательно укажите appId приложения, для которого будет создан ключ. Подробнее см. в разделе Получение ключей доступа.

  2. Создайте специальный объект 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 может быть создан только в единственном экземпляре.

  3. Дополнительно вы можете указать настройки журналирования (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.

  1. Добавьте файл в формате VendorConfig в бандл при сборке приложения и создайте экземпляр класса File.

    Для файла, добавленного в корень бандла и имеющего имя vendor-config.json, код будет выглядеть так:

    let vendorConfigFile = Bundle.main.path(forResource: "vendor-config", ofType: "jsonx").map {
    VendorConfig.fromFile(VendorConfigFromFile(path: $0))
    }
  2. Передайте созданную переменную в качестве значения параметра vendorConfigFile при инициализации Container:

    let sdk = DGis.Container(
    keySource: key,
    logOptions: logOptions,
    httpOptions: httpOptions,
    vendorConfigFile: vendorConfigFile ?? .none
    )

Работа с офлайн-данными

Мобильный SDK (версия Full) позволяет работать с данными карты, справочника и навигатора офлайн из предзагруженных пакетов. Это может быть полезно в условиях плохой связи или при её полном отсутствии.

Чтобы настроить работу в режиме офлайн:

  1. Убедитесь, что ваш ключ доступа содержит необходимые права для работы с офлайн-данными. Вы можете запросить права на офлайн-данные всех компонентов (карта, справочник, построение маршрутов) или выбрать только необходимые.

  2. Скачайте файлы с данными для территорий, где необходима офлайн-работа приложения, через TerritoryManager.

    См. пример кода для загрузки территорий.

  3. Настройте компоненты SDK для работы с предзагруженными данными:

Язык приложения

Чтобы установить язык приложения, передайте список локалей (Locale) в методе overrideLocales() класса LocaleManager.

В зависимости от выбранной локали меняется язык звуковых оповещений в навигаторе.

Пример установки англоязычной локали:

// Создание объекта Locale с указанием языка и региона
let locale = Locale(language: "en", region: "EN")

// Установка локали для приложения
getLocaleManager(context: sdkContext).overrideLocales(locales: [locale])

Доступные значения языков (параметры language и region соответственно):

  • ru-RU — русский;
  • en-EN — английский;
  • ar-AE — арабский.