Проекты

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 и продавать как отдельный продукт: фреймворк для разработки мобильных и веб-приложений на основе этих систем.

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

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

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

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

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

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

Перезвонить вам, чтобы ответить на вопросы?

Когда с вами связаться?

Связаться по телефону:+7 499 321-59-32

Нажимая на кнопку, я принимаю условия политики и пользовательского соглашения

Фото эксперта
Дмитрий

Проектный менеджер

Получите ответ на ваш вопрос в любимом мессенджере

Выберите удобный мессенджер и начните диалог прямо сейчас

Telegram WhatsApp

Рассчитать стоимость проекта

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

Напишите ваше имя
Укажите ваш email

Выберите удобный для вас способ связи

Мы сразу получим ваш запрос и поможем в решении проблемы

Написать в Telegram

Написать в WhatsApp

Позвонить нам