{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

SDK помогает компании повторно зарабатывать на своем продукте

Компания зарабатывает на картах и навигации

Американская компания разрабатывает сервисы для автомобильной навигации. Ее навигационную систему устанавливают на бортовые компьютеры выпускаемых в США автомобилей Ford, Chrysler, Dodge, Jeep, Toyota и других.

Навигационная система помогает водителю в пути:

  • получает данные со спутника GPS и отрисовывает карту местности в реальном времени;
  • определяет местоположение автомобиля и направление движения;
  • помогает найти кафе, магазин или заправку и прокладывает оптимальный маршрут с учетом пробок, дорожных работ и платных дорог;
  • ведет по маршруту: показывает расстояние до пункта назначения, текущую скорость, предупреждает о ситуации на дороге, скоростных ограничениях, подсказывает, когда нужно перестроиться в другой ряд или повернуть;
  • имеет голосового помощника, который озвучивает навигационные инструкции: например, говорит «через 300 метров поверните налево» или «ограничение скорости 40 км/ч».

В дополнение к бортовой навигационной системе компания выпустила пользовательское приложение. Если в машине нет встроенного навигатора, водитель скачивает приложение и пользуется навигационными сервисами на смартфоне. Или подключает приложение через интернет к мультимедийной системе в автомобиле и выводит навигатор на ее экран.

Сервисы компании: карта, маршруты, навигация

Задача: получать дополнительную прибыль с продукта

Компания хочет получать дополнительный доход, продавая карту и навигационные сервисы другим компаниям. Например, таксопарку нужно приложение для таксистов. В нем должна быть карта и навигатор, чтобы таксисты не терялись в городе и выбирали оптимальные маршруты. Таксопарку невыгодно разрабатывать карту самостоятетельно. дешевле и проще купить готовую и интегрировать ее в приложение.

Решение: сделать SDK для внедрения карты в мобильные приложения

Чтобы карту было удобно интегрировать, ее нужно упаковать в SDK. Это набор библиотек и документация, где описано, как встроить их в код. SDK экономит ресурсы: программистам не надо разрабатывать с нуля, можно вставить готовый код — и в приложении появятся карта и навигационные сервисы.

Разработка SDK может понадобиться любым компаниям, у которых есть системы со сложной логикой вроде карты. Например, система учета продаж, управления промышленным оборудованием, регистрации страховых случаев. Их тоже можно упаковать в готовый к использованию набор и продавать как основу для разработки приложений.

Чтобы встроить SDK в приложение, нужно:

  • Оплатить ключ, получить документацию. В ней по шагам описано, как подключить SDK, активировать и настроить функции: отображение самой карты, построение маршрута, автомобильную навигацию.
  • Подключить SDK к приложению. В iOS для этого нужно прописать версию SDK в podfile и добавить ключи в. plist file.
  • Следуя инструкциям из документации, вставить в код приложения библиотеки — готовый код каждой функции. Их можно подключать по отдельности: сервису такси, например, понадобятся все, а приложению сети кофеен маршруты и навигатор не нужны. В таком приложении можно будет посмотреть кофейни на карте, а проложить маршрут и получать указания в пути будет нельзя.
  • Настроить индивидуальный стиль карты. Например, можно выбрать цвет дорог, зданий, нанести на карту заправки, автомойки.

За разработкой SDK под iOS компания обратилась в OrbitSoft. Заказчик сформулировал техническое задание. Нам предстояло адаптировать код оригинальной карты для программирования под iOS, чтобы программисты могли легко перенести навигационные сервисы в приложения.

Проектом занималась команда из 6 человек: 3 разработчика, QA, он же тимлид, архитектор и проджект-менеджер. Разработка заняла около 4 месяцев.

Разработали фреймворк на Objective-C для внедрения карты в iOS-приложения

Оригинальная карта написана на С++. Это универсальный, высокопроизводительный язык, который подходит для сложных, нагруженных систем, таких как нейронные сети, браузеры, видеоигры. Но С++ не подходит для нативной мобильной разработки.

Нативные приложения пишут на родном языке платформы: тогда они выглядят привычно для пользователей и получают доступ к таким функциям, как управление камерой, сенсорными жестами. Для iOS родные языки — это Swift и Objective-C.

Если в нативное iOS-приложение внедрить SDK на С++, оно его просто не увидит — карта не будет работать. Чтобы приложение понимало карту, ее нужно перевести на его язык. Для этого есть два способа:

  • полностью переписать SDK на языке платформы;
  • обернуть С++ в нативный код.

Переписывать все функции карты — это долго и дорого. Поэтому мы выбрали второй вариант: для библиотеки на С++ написали интерфейс на Objective-C. Приложение «общается» с оболочкой на Objective-C, а внутри идет вызов методов C++. Благодаря обертке мы сэкономили время на разработку и сделали карту понятной для нативных приложений.

Язык большинства современных iOS-приложений — это Swift. Поэтому мы предусмотрели встроенную конвертацию. Пользователь SDK не видит С++, он выбирает для интеграции тот язык, на котором пишет приложение: Objective-C или Swift.

При переводе функций карты на язык платформы мы учитывали особенности реализации. Например:

  • В iOS используется инструмент UIView. Это прямоугольная область на экране, которая служит для отрисовки карты и обработки жестов — движений пальцев пользователя на сенсорном экране. Каждый жест нужно отдельно подтянуть в карту и обработать. В других операционных системах для этого существуют другие инструменты.
  • В карте есть озвучка дорожных событий: например, голосовой помощник сообщает пользователю «через 200 метров поверните направо». Мы использовали встроенный в iOS синтезатор речи, но сначала настроили его неправильно: создавали объект заново для каждого сообщения. Во время тестирования оказалось, что сообщения, идущие подряд, накладываются друг на друга, сливаясь в непонятную кашу.

У нас было много идей, как решить проблему. Например, создать очередь событий для сообщений. В итоге оказалось достаточно хранить в памяти объект синтезатора все время работы программы, не пересоздавая его. Он сам умеет произносить сообщения последовательно. Нам пришлось поискать ответ, но мы решили проблему.

Особенности платформы нужно знать и использовать по максимуму, чтобы раскрыть все ее возможности и избежать костылей. Тогда в продукте не будет багов, а пользователям будет удобно с ним работать.

Выпустили приложение для демонстрации возможностей SDK

Мы сделали демонстрационное приложение, чтобы компания могла показать потенциальным клиентам возможности библиотек. Клиент может запустить его и посмотреть, как выглядит карта, какие есть функции, как работает навигация. Демоприложение позволяет клиентам «пощупать» сложный продукт, понять его ценность и принять решение о покупке, а разработчикам — заглянуть в реализацию и понять, как она работает.

Возможности SDK:

  • Реалистичная отрисовка карты. При большом приближении видно, как течет вода в реках, можно рассмотреть отдельные улицы, дома и достопримечательности. Визуальные эффекты плавно уходят в туман за пределами видимого участка карты.

3D-рендеринг достопримечательностей

Параметры визуального отображения карты. Можно настроить внешний вид дорог, зданий, автомобильного трафика, проложенного маршрута, условных обозначений на карте и тысячи других параметров.

Поиск объектов. Благодаря интеграции с поисковым модулем на карте можно искать кафе, магазины, парковки, заправки, банкоматы — более 10 категорий объектов. При поиске по категориям поверх карты рисуются отметки — аннотации. Их внешний вид можно настроить, можно их закрепить — например, отметить на карте рестораны своей сети.

Объекты категории «Кофе» поблизости

  • Построение маршрута. Система просчитывает все возможные варианты и предлагает до четырех подходящих маршрутов. Для каждого рассчитывается время в пути и стоимость. Можно применить фильтры, чтобы отсеять нежелательные варианты — например, грунтовые или платные дороги.
  • Навигация:информация о дорожной ситуации в реальном времени: подсказывает разрешенный скоростной режим, населенный пункт и трассу, по которой движется автомобиль, где пробка или дорожные работы;пошаговое сопровождение на выбранном маршруте: расстояние до поворота, название следующей улицы, выход со скоростной магистрали — больше 20 типов маневров с озвучкой на более чем 20 языках.

В демоприложении системные сообщения выводятся поверх карты. Пользователь SDK может установить свой синтезатор голоса, настроить удобное графическое отображение подсказок и уведомлений.

Запущена навигация на выбранном маршруте

Технические параметры. Разработчик может отрегулировать параметры карты по умолчанию: какой участок карты будет открыт при загрузке приложения, какой будет наклон карты, направление камеры, масштаб.

Часть доступных для настройки технических параметров карты

Интеграция с сервисами. Пользователи SDK могут добавить в приложение интеграцию с любыми сторонними сервисами. Например, в оригинальном навигационном приложении компании есть интеграция с платежными системами, магазинами, заправками, порталом с отзывами на местные кафе и рестораны. Водитель может найти поблизости кофейню с лучшим эспрессо, заказать пиццу не отрываясь от вождения или оплатить бензин не выходя из машины.

0
Комментарии
-3 комментариев
Раскрывать всегда