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

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

Коротко

  • 01
    Клиент

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

  • 02
    Задача

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

  • 03
    Решение

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

  • 04
    Результаты
    • Сделали фреймворк на Objective-C для нативной разработки под iOS
    • Выпустили демоприложение, чтобы компания могла показывать возможности SDK клиентам
    • Задействовали команду из 6 человек, проект занял около 4 месяцев

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

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

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

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

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

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

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

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

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

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

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

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

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

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

За разработкой 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 могут добавить в приложение интеграцию с любыми сторонними сервисами. Например, в оригинальном навигационном приложении компании есть интеграция с платежными системами, магазинами, заправками, порталом с отзывами на местные кафе и рестораны. Водитель может найти поблизости кофейню с лучшим эспрессо, заказать пиццу не отрываясь от вождения или оплатить бензин не выходя из машины.

В чем бы вы ни нуждались, мы можем помочь!

Расскажите нам, с какими проблемами вы сталкиваетесь в своем бизнесе. Мы с нетерпением ждем вашего ответа.

Получите ответ по смс

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