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

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

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

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

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

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

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

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

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

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

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

Решение: сделать 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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Начать дискуссию