Как добавить в carplay «яндекс.навигатор»: возможные способы

CarPlay это что, типа iPhone в машине

Нет, это не iPhone. Это даже не полноценная операционная система вроде iOS.

Фактически, CarPlay – этот как AirPlay. То есть это система передачи и отображения данных с вашего гаджета на внешнем дисплее. В данном случае автомобильном.

CarPlay транслирует адаптированные версии приложений с iPhone. Вы не найдёте здесь Clash of Clans или Instagram. Купертиновцы в первую очередь думали о безопасности участников движения, и платформа очень ограничена в возможностях.

Но даже этих минимальных функций вполне достаточно.

Важный факт: CarPlay не работает без iPhone. Поэтому он всегда является лишь частью медиасистемы автомобиля. У меня, например, можно вывести музыку через старый добрый AUX, послушать радио, включить CarPlay или запустить похожее решение для Android. У водителя всегда есть выбор.

В моей комплектации Tiguan установлена консоль с проводным CarPlay
. Беспроводной CarPlay — не такая уж редкость, просто у меня так получилось.

Но! Автомобилисты, обратите внимание. Проводной CarPlay предпочтительнее беспроводного, потому что последний насильно включает на iPhone режим модема – и это нещадно тратит батарею, что в итоге заставляет вас всё равно держать смартфон на зарядке. Не продумали

Не продумали.

The best framework we ever made

В конце концов, когда всё собралось на реальное устройство, стало понятно, что фиче «2ГИС под CarPlay» точно быть. Настало время делать по красоте.

Проблемы с вьюпортом

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

А так:

Я рассчитывал, что получу какой-нибудь layoutGuide с текущей видимой областью. Чтобы он учитывал и navigationBar, и вьюшку с маршрутом, и контролы на карте. На деле я не получил ничего. До сих пор непонятно, как настраивать вьюпорт, поэтому у нас в коде есть хардкод типа:

Построение проезда не только между двумя точками

В первый релиз мы решили взять наш рубрикатор, сделанный через CPGridTemplate:

Избранное и Дом/Работа через CPListTemplate.

И клавиатурный поиск через CPSearchTemplate:

Код я показывать про темплейты не буду, так как он простой и про него хорошо написана документация (хоть про что-то).

Тестирование и баги

Тестированием занимался artemenko-a-a. Один из первых багов, который он нашёл, мы до сих пор не можем починить.

Дело в том, что при отсоединении телефона от CarPlay-магнитолы спорадически нас прибивает Watchdog — без объяснении причины. Даже syslogs открывали, ничего не понятно. Так что если есть идея, как починить или понять причину, то велкам в комменты.

Следующий баг был в этом же месте, но с особенным поведением. Я писал выше, что метод didDisconnect у CPApplicationDelegate вызывается в момент отсоединения телефона от CarPlay. И в этом методе мы возвращаем карту с экрана магнитолы обратно в основное приложение. Представьте себе, сколько бы мы словили проблем, если бы этот метод не вызывался хотя бы раз из пяти.

Стало понятно, что это проблема iOS, а не конкретно нашего приложения, так как вся система считала, что она подключена к CarPlay.

Я даже зарепортил это как radar (как и все остальные баги). Меня попросили скинуть логи с таким-то профилем, но я не мог ответить поддержке в течение некоторого времени, поэтому они закрыли radar.

Раз Apple делать ничего не планировала, проблему пришлось обходить самостоятельно, так как воспроизводилась она достаточно часто.

И тут я вспомнил, что львиная доля подключений к CarPlay идёт через Lightning. Это значит, что телефон в момент подключения заряжается, а в момент отключения заряжаться перестаёт. А если так, то можно подписаться на состояние батареи и точно узнать, когда телефон перестал заряжаться и отключился от CarPlay.

Схема хиленькая, но выбора у нас не было. Мы пошли этим путём, и всё сработало!

К счастью, этот костыль из кода давно уже удалён: разработчики Apple починили всё в одном из релизов iOS.

Зачем нужен CarPlay

Как видим, обновление вышло масштабным, но решило ли оно те проблемы, с которыми сталкивается рядовой автолюбитель? Конечно, и светлая тема оформления, и новый интерфейс главного экрана разнообразили наш опыт общения со смартфоном в автомобиле. Но на новую панель виджетов невозможно вывести ни одно стороннее приложение, что в принципе сводит на нет всю прелесть ее появления в CarPlay. Для меня, например, было бы удобно иметь полную интеграцию с картами от другого поставщика, но Apple не позволит это кастомизировать. Второй обидный момент связан с невозможностью использования в системе от яблочной компании самого популярного картографического сервиса: Яндекс карт и Яндекс навигатора.

Но проблема здесь не в Apple, которая скорее всего пропустила бы соответствующее приложение, как сделала это с Google maps и Wase, а в самом Яндексе, который активно продвигает свое решение под названием Яндекс Авто и поэтому не спешит реализовывать интеграцию в CarPlay. Недавно разработчики нашли в iOS 13.4 отсылку к возможности бесключевого доступа к автомобилю при помощи NFC в iPhone, а как хотелось бы, чтобы CarPlay позволяла с помощью Siri менять установки климат-контроля, переключать режимы вождения, например с эко на спорт, выполняла автоматическую парковку, включала и отключала адаптивный круиз-контроль и т.д. Учитывая основной тренд последних лет в автомобилестроении – повсеместный переход на электрокары, все перечисленное вполне перспективно.

Справедливости ради отметим, что конкурент от «корпорации добра», появившийся год спустя, также далеко не идеален. Интерфейс Android Auto отвратительно убогий по сравнению с CarPlay. До версии Android 10 просто соединить автомагнитолу со смартфоном по USB было недостаточно, нужно было ещё скачать приложение из Google Play, и само подключение выполнялось проблемнее. Правда Android Auto раньше, чем CarPlay научился заводиться беспроводным способом. И на этой платформе сегодня поддерживается значительно больше сторонних приложений. Но вот по навигации выбора нет. Только карты Google – такова политика компании.

А как вы думаете, есть ли будущее у CarPlay? Какие функции должна реализовать Apple в грядущих обновлениях? Расскажите в нашем Telegram-чате.

О Carplay

Система Carplay — это современный и безопасный способ использования смартфоном бренда Apple в автомобиле во время его движения. Технология Carplay поддерживается многими автопроизводителями, однако не все приложения, доступные в App Store, совместимы с Carplay

Компания Apple щепетильно относится к данной технологии, так как она подразумевает осторожное обращение с технологической инфраструктурой и необходимость избегать чрезмерного отвлечения внимания водителя на управление системой

В частности, стандартным способом навигации в системе Carplay являются фирменные карты от Apple, однако большинству непривычен их интерфейс, а также качество навигации. Именно поэтому многие пользователи задаются вопросом, как добавить в Carplay «Яндекс.Навигатор». К большому сожалению многих пользователей, это было невозможно сделать до сентября 2018 года.

CarPlay разработана в компании Apple специально для удобства водителей. Программа поддерживает интуитивное голосовое управление ботом Siri. Система Carplay также управляется элементами самого автомобиля: ручками, кнопками, тачпадом и сенсорным экраном.

Как подключить Эппл КарПлей к Айфону

Разработчики софта сделали все возможное, чтобы пользователи программы не испытывали трудностей при коммутации оборудования. Даже скачивать приложение на смартфон не нужно. При этом существует два варианта, как подключить Apple CarPlay на BMW, Audi или машинах иных марок — с помощью USB-кабеля или по беспроводной связи. Подробнее рассмотрим каждый из вариантов.

Через кабель

Самый простой способ, как подключить Апл Кар Плей — воспользоваться USB-кабелем. Для этого сделайте следующие шаги:

Заведите машину и убедитесь, что голосовое управление с помощью Сири активно.

Подключите Айфон с Apple CarPlay к головному устройству с помощью кабеля

Обратите внимание, чтобы на шнуре был значок Кар Плей или изображение телефона

Дождитесь соединения с оборудованием и пользуйтесь возможностями приложения.

Беспроводное подключение

Не менее важный вопрос — как подключить Apple CarPlay к Kia Rio 2019 или другой модели с помощью беспроводного соединения. Сразу отметим, что такая функция поддерживается не на всех автомобилях и смартфонах (на этом мы еще остановимся ниже).

Чтобы подключить Кар Плей, сделайте следующее:

Жмите и удерживайте кнопку подачи голосовой команды на рулевом колесе.

  • Дождитесь перехода в режим беспроводной связи или Блютуз, чтобы начать настройку Apple CarPlay.
  • Включите Айфон и перейдите в раздел Настройки.
  • Войдите в Общие/Основные, а далее КарПлей.

Жмите на Доступные автомобили и выберите машину.

Дополнительную информацию по подключению Apple CarPlay можно найти в инструкции к своему авто

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

Как появился CarPlay

Но висящий в не совсем подобающем месте смартфон может либо просто мозолить глаза, либо, откровенно говоря, портить вообще весь внешний вид панели приборов. И ещё один немаловажный аспект — отвлекать водителя от дорожной обстановки. Вот поэтому и Apple, и Google начали разрабатывать свои варианты решения эстетических и практических проблем использования смартфонов в автомобилях. Конечно, появление CarPlay и Android Auto произошло не на ровном месте. Уже до этого и iPhone и Android телефоны сопрягались с автомагнитолами по Bluetooth, и водитель мог принимать входящие звонки, набирать номера, запускать музыку с телефона. Задачей технологических гигантов было реализовать использование самых востребованных функций смартфона в пути и удобное голосовое управление с помощью ассистентов, на головном устройстве автомобиля таким образом, чтобы максимально не отвлекать водителя от вождения.

Apple CarPlay был представлен вместе выходом iOS 7.1 в 2014 г. и довольно продолжительное время был достаточно беден в функциональном плане. По сути это было зеркалирование интерфейса избранных приложений iPhone на экран мультимедийного устройства авто. Но и работа этих избранных приложений также была урезана. Например, в сообщениях никакого ручного набора текста, только диктовка голосом, естественно, никаких эмодзи, никаких вложенных фото и файлов; в Apple Music отсутствовала вкладка «Поиск». В общем, все было сделано так, чтобы максимально не беспокоить водителя во время управления транспортным средством. Кстати, при подключении lightning кабеля от USB авто к смартфону последний благополучно блокировался в режиме CarPlay.

Управление музыкой в CarPlay

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

Экран «Сейчас играет» («Now Playing») оснащен крупными сенсорными кнопками, позволяющими ставить песни на паузу и перелистывать плейлисты.

Многие люди согласятся с тем, что нынешнее поколение молодёжи не хочет ездить; эти ребята хотят, чтобы автомобили ездили вместо них. Они не хотят покупать собственную машину, фактически, они вообще не хотят автомобилей, им нужны смартфоны. Эту тенденцию явно замечают автопроизводители и разработчики современной техники. Так, ещё в 2014 году на выставке Consumer Electronics было представлено множество технологических разработок, среди которых и Apple CarPlay.

Компания Apple явно не хочет стоять в стороне и планирует получить немалый кусочек этого пирога. Показ предварительной версии «Эппл Кар Плей» состоялся ещё в 2013 году, но уже в Женеве в 2014 году был организован официальный дебют новой системы Apple CarPlay. Как и у многих современных автомобильных систем связи, принцип работы CarPlay состоит в том, чтобы позволить водителю делать все что угодно, не отвлекаясь от управления.

Практическая часть Apple CarPlay достаточно проста, и это огромная заслуга разработчиков. Именно за простоту и логичность ценят технику Apple. Вам надо просто взять ваш «яблочный» смартфон или планшет, подключить его к автомобильному интерфейсу и всё готово! Автомобиль превращается в смартфон, чего и ожидалось. Наступил 21-й век. Автомобильный компьютер не способен на то, что позволяет делать iOS. Фактически, у него есть другие задачи, такие как считывание данных со всевозможных датчиков.

Это значит, что приложения должны быть установлены на вашем мобильном устройстве, чтобы увидеть их на дисплее, расположенном на центральной консоли автомобиля. Сенсорная панель работает так же, как сенсор на телефоне, поэтому разобраться под силу даже новичку. По сути, происходит полная синхронизация автомобильной системы с iPhone или iPad.

Не все приложения могут работать на CarPlay. Разработчики постарались сохранить высокий показатель безопасности. Идея «Эппл Кар Плей», как и у всех других развлекательных и информационных автомобильных систем, состоит в том, чтобы свести к минимуму отвлекающие факторы. По крайней мере, об этом говорят все технические специалисты.

Если вы влюбились в голосового помощника Siri и не можете жить без ее голоса, система Apple CarPlay сделает ваши мечты реальностью. Сири поговорит с вами прямо через автомобильный интерфейс. Она проверит ваш календарь и электронную почту, а также расскажет вам о запланированных деловых встречах прямо во время движения. Она прочитает ваши текстовые сообщения и предоставит возможность продиктовать свой ответ, который она затем отправит адресату. Также она поможет вам совершать звонки через громкую связь.

К сожалению, система не позволяет использовать «Карты Google» для навигации. Вам придётся использовать Карты Apple с CarPlay. Разработчики обещают, что вам понравится, но на самом деле, всё не так гладко.

Когда Apple презентовала CarPlay на Женевском автосалоне 2014 года, компания подтвердила, что она сотрудничает с десятком производителей, включая Ferrari, Honda, Hyundai, Jaguar, Mercedes-Benz и Volvo. Это довольно большой ценовой диапазон, поэтому, даже если Ferrari вам не по карману, вы, вероятно, сможете найти автомобиль, оборудованный CarPlay, который вы действительно можете себе позволить.

Технологии активно проникают практически во все сферы жизни человека от умных часов на руке до умного дома, но если отбросить пока что нишевый бизнес электромобилей, то в целом автомобильная индустрия выглядит довольно консервативно. Отчасти это продиктовано повышенными требованиями к безопасности пассажирского транспорта, поэтому принцип «работает — не трогай» здесь исповедуется десятилетиями. Но по странным стечениям обстоятельств прогресс часто обходит стороной информационно-развлекательные системы в автомобилях. Даже в дорогих моделях иногда встречаются очень простые экраны с графикой, которую рисовали лет 20 назад. Поэтому не удивительно, что в 2014 году компании Apple и Google анонсировали собственные интерфейсы для автомобильных систем. Ещё недавно производители продавали их в качестве довольно дорогостоящих опций, но сегодня они всё чаще поставляются вместе со стандартным мультимедийным центром в машине. Поэтому мы решили детальнее взглянуть на то, что могут предложить пользователям Android Auto и Apple CarPlay. И для этого использовали автомобиль , который как раз поддерживает обе системы.

Безопасность в приоритете

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

Среди наиболее интересных фишек стоит отметить:

  • Адаптивный круиз-контроль (обеспечивает соблюдение дистанции до движущегося впереди автомобиля).
  • Контроль полосы движения (при наличии хорошей дорожной разметки может корректировать движение и предупреждать водителя, если тот начал терять бдительность).
  • Систему мониторинга «слепых» зон.
  • Камеру кругового обзора (взгляд на автомобиль «с высоты птичьего полета» облегчает парковку и маневрирование в условиях ограниченного пространства).
  • Защиту пешеходов и велосипедистов (обнаруживает граждан рядом с автомобилем и позволяет избежать столкновения).
  • Предупреждение о фронтальном столкновении (сканируются все предметы на расстоянии до 150 метров впереди по ходу движения, и если есть опасность столкновения, водитель предупреждается, плюс повышается давление в тормозной системе для более быстрого торможения).

Разработка беты

Перейдём уже к написанию кода. Первое, что необходимо сделать, — реализовать парочку обязательных методов CPApplicationDelegate в файле ApplicationDelegate.

Давайте рассмотрим сигнатуру:

С UIApplication всё понятно.
CPWindow — наследник UIWindow, окно для внешнего дисплея головного устройства магнитолы.
CPInterfaceController — что-то типа аналога UINavigationController’а, только из CarPlay.framework.

Теперь перейдём непосредственно к реализации метода.

В didConnect необходимо написать код, похожий на тот, который мы привыкли видеть в didFinishLaunching. CarMapViewController — это base view (контроллер на самом деле, но ладно), как по документации.

Вот такую картинку в итоге я получил:

Где-то в это время до меня дошло, что в новом Xcode new build system включена по умолчанию и, скорее всего, из-за этого 2ГИС не собирается.

Я открыл Xcode, поставил legacy (а точнее stable, давайте называть вещи своими именами) build system, и моя теория подтвердилась: 2ГИС собрался.

Выставив тот самый capability-ключ, я запустил 2ГИС под CarPlay и не увидел логов о переходе приложения в режим background. Стало ещё непонятнее, ведь инженеры Apple со сцены сказали про background-режим, но, с другой стороны, нам обещали contentView у UIAlertView, а в итоге UIAlertView стал deprecated.

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

Первая палка в колёса

Работа приложения в background’е нас разочаровала. На это было две причины:

  1. Мы не работаем в background’е. Когда-то оставили это ограничение по техническим причинам и ради энергосбережения.
  2. Наша карта написана на OpenGL (да, deprecated, да, не Metal, мы всё это знаем), а OpenGL в background state’е не работает. В лучшем случае вы получите чёрную вьюху, а в худшем — краш.

С работой в background’е ещё можно было справиться, но с картой определённо нужно было что-то решать. Тогда-то и пришла идея сделать её через стандартную MKMapView. Пока вы не начали закидывать нас камнями за идею использовать стандартные карты Apple, объясню: мы собирались использовать MKMapView, но не карты Apple.

Дело в том, что MKMapView умеет в загрузку сторонних тайлов. Тайлы — это специальные прямоугольные контейнеры для текстур. У нас как раз оказался сервачок, который умеет отдавать тайлы. На GitHub есть код с реализацией.

Google Maps

Рассматривая навигаторы с поддержкой Apple CarPlay, нельзя забывать и о продукте Google — Гугл Карты. В сентябре 2018 года появилась новость, что известное приложение все-таки получило поддержку Кар Плей. Для получения такой опции на автомобиле необходимо обновить телефон до версии iOS 12 и выше, а сам Google Maps до версии 5.0. Минус в том, что управление навигацией Сири в этом случае будет недоступно.

Чтобы включить лучший навигатор, сделайте следующее:

  1. Убедитесь в соответствии Айфона заявленным требованиям.
  2. Установите приложение Гугл Карты на телефон.
  3. Войдите в Настройки, а после жмите Основные, а далее CarPlay;
  4. Кликните на название машины.
  5. Вверху в списке иконок перелистните второй экран, где находится символ Google Maps, а после переместите его на первый экран CarPlay

Приложение доступно более чем в 200 странах, и этот список постоянно расширяется. Информация о GPS-навигации поступает на смартфон в режиме реального времени. При этом пользователи дополнительно получают следующие опции:

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

Важно учесть, что некоторые функции Гугл Maps для Apple CarPlay доступны не во всех странах. Тем не менее, для многих это лучший навигатор с позиции информативности и функционала

Как запустить Яндекс на CarPlay

Оставляя в стороне суть противоречий, не позволяющих двум компаниям создать столь желаемый автомобилистами продукт – Яндекс.Навигатор для iOS, совместимый с Carplay – можно лишь констатировать факт: вопрос не сдвигается в положительную сторону уже не один год.

Существует не совсем полноценное и нелегальное решение проблемы. Это взлом iOS, в следствие которого устройство лишится гарантии. Обходной путь также требует, чтобы операционная система iPhone была не старше 12 версии. Те кто владеет не новым телефоном с истекшим сроком гарантии – почти ничем не рискует и может сделать снятие ограничений операционной системы самостоятельно. Вот как добавить Яндекс.Навигатор в Carplay:

  1. Нужно скачать специальный инструмент для того чтобы помирить джейлбрек с iOS.
  2. Также понадобится джейлбрейк — программа для получения доступа к файловой системе iPhone. Наиболее подходящими будут Electra для версии операционной системы от 11 и  Meridian, DoubleH3lix или g0blin.
  3. Затем на официальном сайте Apple нужно создать пароль, в секции «Пароли приложений«.
  4. С помощью Cydia Impactor, запущенного на компьютере, файл джейлбрейка переносится на подключенный кабелем телефон. На этой стадии вводится Apple ID и созданный ранее пароль и нажимается кнопка «Start«.
  5. Когда в группе приложений в iPhone появится ярлык джейлбрейка, нужно зайти в раздел «Настройки«, выбрать пункт «Основные«, затем – «Профили и управление устройством«, вставить идентификатор из предыдущей операции, нажать — «Доверять разработчику«.
  6. Теперь можно запускать джейлбрейк. Если система зависает или взлома не происходит потребуется выполнить сброс. Джейлбркейк Electra запускается трижды. После чего появляется иконка альтернативного электронного магазина приложений под названием Cydia.
  7. Понадобиться также утилита-твик CarBridge, которую можно приобрести за 5 долларов на официальном сайте. С ее помощью добавляются нужные приложения.
  8. Чтобы Яндекс.Навигатор отслеживал спутники и не вылетал после блокировки нужно с помощью файл-менеджера внести в файл Info.plist, расположенный по пути var/containers/Bundle/Application/Навигатор/YandexNavigator.app небольшие изменения. Добавить строчки <key>NSLocationAlwaysUsageDescription</key> <string>Give access to your location to get the right directions.</string> перед и после строк <key>NSLocationWhenInUseUsageDescription</key> <string>Give access to your location to get the right directions.</string>. И далее после перезапуска Яндекс.Навигатора потребуется активировать настройку «Всегда» в пункте «Геолокация«.

К сожалению, без джейлбрейка – так называется процедура взлома iOS – внедрить навигационный проект Яндекса в Carplay не получится. Владельцам новых гаджетов лучше присмотреться к альтернативным вариантам, например, 2ГИС или Google Maps. Apple Carplay удобная технология, которая облегчает жизнь водителю, но имеет существенный недостаток: малое количество доступных приложений и отсутствие ряда популярных сервисов, ярким примером которых является Яндекс.Навигатор.

История двух реджектов

Первый реджект был связан с метадатой. В тексте реджекта говорилось, что у нас в описании (не release notes) не сказано о том, что мы поддерживаем CarPlay. Как вы можете догадаться, ни в review guideline’ах, ни у того же Google Maps такого не было. Мы не стали спорить (потому что это обычно дольше, чем править метадату), скопировали строчку из Release Notes в Description и стали ждали нового ревью.

Второй реджект случился из-за списка городов. У 2ГИСа есть очень крутая фича — полный офлайн-режим работы. Эта фича стрельнула нам в ногу.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector