Apple carplay и яндекс навигатор

Лучшие навигаторы для iPhone

Следует сказать, что за последние десять лет в App Store для iPhone и в Google Play для смартфонов на Android появилось довольно большое количество всевозможных бесплатных и платных решений. Практически все они выполняют сходные функции: позволяют находить на карте искомый адрес, прокладывают один или несколько вариантов маршрута, выводят голосовые подсказки, когда перестроиться и куда повернуть.

Но при этом каждое приложение имеет свой дизайн оформления и какие-то свои особые функции, например дополнительные слои на карте с сообщениями о пробках, постах ГИБДД, участках дорог, где идет ремонт и т.д. Самыми популярными платными приложениями для iPhone являются Навител, Sygic, City Guide и ПроГород. Несколько лет назад актуальным также был iGo, но сегодня он совершенно не подходит для России и стран СНГ.

Карты Apple можно нормально использовать для навигации только в США

Отличными бесплатными решениями являются Google Maps, Waze, Яндекс Навигатор, 2ГИС и maps.me. Кроме того в iOS также присутствуют встроенные карты от Apple, однако на постсоветском пространстве они сильно уступают по детализации перечисленным аналогам и поэтому ими пользуется сравнительно малое количество автолюбителей и путешественников.

То, о чём нельзя говорить

Перемещение карты жестами

Примерно в это же время вышел навигатор под CarPlay от Google Maps — и там можно было передвигать карту жестами по экрану. Приватные API, подумал я, это очевидно! Ребята из Google просто пришли из соседнего здания и сказали, что им надо. Ведь документация гласит:

Однако я всё-таки решил убедиться и полез гуглить, хоть это и было почти бессмысленно, ведь никаких технических статей про CarPlay Navigation Apps не было. Однако я умудрился найти что-то полезное и, ВНЕЗАПНО, на сайте Apple.

В гайдлайнах я нашел видео, которое говорит, что документация нагло врёт. На видео видно, как карту всё-таки можно перетаскивать жестами. Я понял, что ничего не понял, и единственное, что мне оставалось, — открыть CarPlay.framework и пересмотреть все .h файлы.

И о чудо! Я нахожу в CPMapTemplate’е его делегат CPMapTemplateDelegate, в котором есть 3 метода, которые как будто кричат о том, что если их реализовать, то можно будет получить управление жестами картой.

Я реализовал их и запустил приложение на симуляторе — ничего не сработало. Не успев расстроиться, я понял, что симулятор может быть такого же качества, как и документация, и собрал на девайс. Всё завелось, счастью не было предела!

Забавный факт: CarPlay-магнитоле необходима четверть экрана, чтобы понять, что начался pan-жест. Хочу заметить, что UIPanGestureRecognizer’у нужно всего 10 поинтов.

Неодинаковость UI на разных магнитолах

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

И это совсем отличается от UI CPSearchTemplate, который я показывал выше. И это нужно учитывать при разработке, хоть и никак нельзя понять, сколько ячеек в табличке внизу может вместиться в экран.

Контрол ограничения скорости

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

Вопрос номер один: где размещать?

Пошарив снова по .h файлам в CPWindow, я нашел любопытный layoutGuide:
var mapButtonSafeAreaLayoutGuide: UILayoutGuide

И это оказалось тем, что нужно. Наш контрол отлично туда вписался:

Вопрос номер два: это, вообще, законно?

Дело в том, что технически контрол находится на base view. А base view по документации не может содержать в себе ничего, кроме карты:

Но ревьюверы пропустили нас в AppStore, а значит контролы, которые касаются навигации, встраивать всё-таки можно.

Голосовой поиск

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

Проблема первая: анимации. Дело в том, что в CPVoiceControlTemplate нет возможности сделать стандартные анимации. Анимацию для распознавания речи и поиска пришлось собирать покадрово из картинок и указывать, сколько они идут по времени.

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

Проблема вторая: доступы. Алерты на доступ к микрофону и распознаванию речи появляются на дисплее телефона. Пришлось писать на дисплее магнитолы, что пользователю необходимо взять телефон в руки, дать разрешение и только потом пользоваться навигатором на магнитоле. Очень удобно!

Праворульные автомобили.

Нам прислали скриншот, в котором UI всего приложения был перевёрнут!

И, естественно, вьюпорт карты оставался таким, как мы его захардкодили, ведь никто не ожидал, что есть отдельная настройка для праворульных автомобилей. Как «правильно» это обойти, я не нашёл, но заметил, что, поскольку наш контрол ограничения скорости лежит в layoutGuide’е для контролов карты, он переместился в левую сторону.

Ультрафикс не заставил себя ждать. Сделали грубо, но это работает.

Очень надеюсь, что есть правильное решение, и я просто не дочитал.

На этом у меня всё. Если вдруг соберётесь делать свой навигатор под CarPlay, учтите, что документация и фреймворк несовершенны. Платформа абсолютно новая, никто ничего не знает, а Apple делиться знаниями не торопятся.

Нужно ли скачивание приложения на Айфон

Компания Apple предложила систему для автомобилей даже раньше, чем главный конкурент Гугл. При этом производители сделали программу одним из элементов iOS, а не в качестве отдельного софта. Это означает, что вопрос, где скачать приложение Apple CarPlay бесплатно для Айфона, не актуален. Покупатель имеет возможность подключить мобильный телефон к головному устройству авто сразу после покупки.

Суть системы состоит в передаче изображения с экрана Айфона на дисплей магнитолы. И если до 10 версии пользователи Андроид должны скачать Android Auto, то Apple CarPlay на Айфоне идет в комплекте и не имеет ограничений по региону, как это происходит у конкурента.

Минус в том, что режим Кар Плей доступен не на всех мобильных устройствах. Его поддерживают следующие модели:

  1. Phone 11, Pro, Pro Max
  2. iPhone XSiPhone ten s, XS MaxiPhone ten s Max, XRiPhone ten r
  3. iPhone X
  4. iPhone 8, 8 Plus
  5. iPhone 7, 7 Plus
  6. iPhone 6s, 6s Plus, 6, 6 Plus, SE
  7. iPhone 5s, 5c, 5.

В более старых устройствах рассматриваемая опция не поддерживается. При этом скачать Эппл Кар Плей на Айфон бесплатно не получится, ведь устройство не сможет с ним работать. Кроме того, функция не предусмотрена для iPod Touch и iPad. Иными словами, она работает только на совместимых мобильных устройствах и не нуждается в дополнительных программах. Зато с указанными выше смартфонами проблемы возникают крайне редко (например, на экране иногда возникает надпись «Соединение с Apple CarPlay разорвано«), но большую часть из них вы сможете решить сами.

Чтобы пользоваться Apple CarPlay, необходимо активировать опцию голосового помощника Сири, в том числе в настройках смартфона.

При этом приложения, которые запускаются в Apple CarPlay, все-таки придется скачать из магазина AppStore. Список доступных программ постоянно расширяется, но их доступность зависит от страны, где проживает пользователь. К примеру, В России перечень поддерживаемого софта меньше, чем в Германии или Соединенных Штатах.

При желании можно скачать, а потом управлять дополнительными приложениями на Apple CarPlay. Здесь алгоритм действий имеет следующий вид:

Войдите в Настройки смартфона, а далее — Общие (Основные).

Жмите на Apple CarPlay.

  • Выберите свою машину и жмите Настроить.
  • Добавьте или удалите программу с помощью специальной кнопки «плюс» или «минус».

Для изменения порядка размещения программ перемещайте их путем перетаскивания с помощью пальца.

При очередном подключении Айфона к Apple CarPlay порядок приложений обновляется. При этом скачать их придется заранее (если они не были установлены).

Основное меню Кар Плей, которое появляется на дисплее при запуске — это, по сути, программы по умолчанию, выбранные Эппл. Значки имеют крупные размеры. Что облегчает использование

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

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

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

Какие приложения поддерживают мультимедийную систему Apple?

Самые популярные приложения, которые доступны Apple СarPlay:

  • Podcast – создание видео и аудиофайлов;
  • Apple Maps – сервис с навигационной системой от компании Apple;
  • MLB At Bat – доступны трансляции спортивных матчей и радио;
  • Phone – приложение Apple для вызовов;
  • Messages – отправка и получение сообщений;
  • Music – сервис с прослушиванием музыки;
  • Waze – навигация со службой отслеживания дорожных ситуаций;
  • VOX – плейер с любимой музыкой для iOS;
  • Google карты – российское картографическое приложение;
  • 2 ГИС – российский сервис для уточнения местонахождения;
  • Overcast – загрузка и воспроизведение подкастов;

С 17 сентября 2018 года в CarPlay стал доступен Яндекс-Навигатор, благодаря новой программе для айфонов iOS 12 и симбиозу двух крупных компаний.

Яндекс Навигатор

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

Автомобилистами отмечаются очевидные преимущества слияния Яндекс Навигатора и Карплея:

  • карты полностью на русском языке;
  • более детальная прорисовка местности;
  • Яндекс Навигатор точнее находит нужный адрес в отличие от других приложений;
  • намного быстрее прокладывает нужный маршрут, предлагая сразу несколько вариантов;

На фото можно увидеть насколько удобным стало меню – под Главным экраном теперь есть раздел «Избранное», где зафиксированы все любимые маршруты пользователя CarPlay.

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

 Яндекс Карты

Благодаря услуге Яндекс.Карты и новой программе iOS 12, владелец автомобиля может с помощью голосового помощника, выбрать сразу несколько маршрутов. При этом Яндекс Карты сразу же покажут самый короткий и безопасный путь. В данном пакете присутствует детальная информация о дорожных ситуациях, а также 3D функции.

Программа Яндекс Карты способна работать в режиме офлайн. Для её необходимо обновить до версии Apple Store (iOS) в магазине Google Play. Если обновлённый маршрут есть в базе данных программы, это позволит сэкономить время и доехать до места назначения не включая гаджет.

Для того чтобы приложения Яндекс Навигатор и Яндекс.Карты были установлены в Carplay российского автолюбителя, нужен гаджет с операционной системой iOS 12.

Какие новые функции стоит ждать в перспективе от CarPlay?

Бесключевой доступ в авто и запуск двигателя с помощью iPhone. Сомнительная функция. Не первый год у многих автомобилей есть дополнительная опция – бесключевой доступ. Достаточно подойти к машине с брелоком. Запуск двигателя производится с кнопки автомобиля.

Передача управлением авто на расстоянии с помощью iPhone. Производители автомобилей выдают 2 комплекта брелоков, подразумевая вас и супругу. Кому вы ещё готовы одолжить свою машину?

Кроме имиджа ГУ с CarPlay больше нет ничего. Говорить о каком-либо новом комфорте или удобстве не приходится. Скорее мы теряем, нежели приобретаем. Похоже, это первый проект из Купертино, который пока для меня сыроват.

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

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

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

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

Лучшие приложения для подкастов и аудиокниг, совместимые с Apple CarPlay

1. Пасмурно

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

Скачать: бесплатно, с покупками в приложении

2. Карманные броски

Мое любимое приложение для подкастов — Pocket Casts, и я использую его с Android-дней. Это одно из первых приложений, которое я устанавливаю на свой новый смартфон, и я люблю его до смерти. Он содержит множество функций, таких как переменные скорости, возможность удалять молчание, создавать списки воспроизведения и многое другое . Благодаря поддержке Pocket Casts для Apple CarPlay вы сможете слушать любимые подкасты за рулем.

Загрузить: $ 3.99

3. Аудиокниги iBook

Подкасты хороши для ежедневных поездок на работу, но аудиокниги лучше, если вы отправляетесь в долгожданное путешествие по пересеченной местности или любое другое долгое путешествие. Аудиокниги позволяют вам погрузиться в историю и сделать даже самое длинное путешествие легко переносимым. Поскольку аудиокниги iBook принадлежат Apple, у вас есть не только большой выбор аудиокниг на выбор, но и плавная интеграция с Siri, что позволяет легко воспроизводить, приостанавливать и перематывать только своим голосом .

Поставляется предустановленным

4. Звуковой

Хотя iBook Audiobooks великолепен, нет лучшего сервиса для покупки и прослушивания аудиокниг, чем Audible, и, к счастью, он также поддерживает CarPlay. Благодаря подписке на 14, 95 долларов в месяц вы можете выбрать одну бесплатную аудиокнигу в месяц . Даже если вы не подписаны на услугу, вы всегда можете купить аудиокниги по их цене, и есть из чего выбрать. На самом деле, Audible содержит самую большую библиотеку аудиокниг и даже выпускает свои собственные серии подкастов, которые действительно хороши. Благодаря поддержке CarPlay от Audible вы можете слушать любимые книги и оригинальные подкасты Audible за рулем.

Загрузка: $ 14, 95 / месяц (доступна бесплатная пробная версия)

Второй способ – использование сторонних сервисов

Добавить Яндекс.Навигатор в CarPlay можно также при помощи программы CarBridge. К сожалению, она не бесплатна – оплату допускается производить посредством PayPal. Отметим, что для установки приложения необходимо сделать джейлбрейк.

Неопытному пользователю iPhone может быть трудно выполнить все эти махинации – за помощью можно обратиться в сервисный центр по ремонту Apple «Service-King»:

Простая инструкция по активации джейлбрейка:

устанавливаем на компьютер iTunes и обновляем его до последней версии;
деактивируем защиту дисплея путем ввода пароля (перед этим желательно сделать резервную копию данных);
выключаем опцию «Найти айфон» и активируем «Режим полета»;
скачиваем на ПК программу «Pangu 9»;
устанавливаем ее и запускаем от имени администратора;
подсоединяем к компьютеру смартфон, ждем, когда система его обнаружит и нажимаем «Старт»;
через несколько секунд должна высветиться надпись «Already backup» – кликаем на нее;
дожидаемся завершения установки (внимание, на 70% загрузки айфон будет перезагружен, после этого необходимо снова активировать «Режим полета»);
после окончания установки нужно открыть программу, предварительно предоставив ей все необходимые разрешения.

Далее все просто:

  • скачиваем CarBridge;
  • открываем;
  • дожидаемся полной установки;
  • проверяем наличие программы в настройках устройства.

Затем открываем приложение уже через настройки, принимаем пользовательское соглашение и во вкладку «Активированные приложения» добавляем Яндекс.Навигатор. Также с помощью CarBridge можно удалить ненужные программы и более удобно расположить иконки приложений.

Одна из основных проблем Яндекс.Навигатора – постоянные сбои в работе (вылеты, невозможность обнаружить спутник и т.д.). Однако все это подлежит устранению.

Кто впереди планеты всей по интеграции CarPlay

На самом деле заинтересованных в CarPlay автоконцернов много и о причине упоминалось в начале статьи. Это отличное решение для фактически бесплатной поддержки программной начинки автомобиля в актуальном состоянии силами Apple (или Google в случае с Android Auto).

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

А можно использовать другой путь и изначально адаптировать интерфейс под взаимодействие с CarPlay. Пока в этом отличилась лишь Volvo, что наглядно видно в видеоролике ниже:

Более того, это не просто какой-то там концепт, а уже коммерческий продукт, в полной степени реализованный в Volvo XC90.

Естественно, традиция будет продолжена и в других автомобилях компании, но, что самое интересное, на этом шведский производитель легковых автомобилей не остановился… Что за шум в зале? Читатель волнуется, что Volvo Cars — это уже не шведская компания, а китайская? Ок, давайте вначале закроем этот вопрос, а потом вернемся к инновациям.

Как запустить Яндекс на 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 удобная технология, которая облегчает жизнь водителю, но имеет существенный недостаток: малое количество доступных приложений и отсутствие ряда популярных сервисов, ярким примером которых является Яндекс.Навигатор.

Что умеет CarPlay в 2016 году

Главная идея CarPlay — получить знакомый iOS-интерфейс на дисплее информационно-развлекательной системы автомобиля и управлять им, используя все доступные внутри опции.

Среди функций стоит выделить следующие:

  • Навигация с использованием актуальных карт Apple.
  • Голосовые звонки (прием, отбой, набор нужного абонента).
  • Чтение и отправка текстовых сообщений.
  • Воспроизведение музыки из медиатеки iPhone и управление плеером (есть все знакомые по iPhone фишки, включая работу с плейлистами).
  • Прослушивание подкастов и аудиокниг.
  • Использование сторонних приложений.

О последних стоит поговорить подробнее. Apple не позволяет кому попало шлепать программы для CarPlay. Все дело в очень жестких требованиях касательно интерфейса и логики работы приложений. Они НЕ ДОЛЖНЫ отвлекать от дороги. Так что не стоит рассчитывать на просмотр сериальчиков или игрушечки.

Вот, что в текущий момент доступно среди приложений для CarPlay:

  • Podcasts — слушаем любимые подкасты.
  • Audiobooks – нет времени на чтение книг? Тогда их можно слушать в дороге.
  • iHeartRadio – стриминг любимых онлайновых радиостанций.
  • Spotify – главная альтернатива Apple Music.
  • Stitcher – клиент популярного радиосервиса.
  • Overcast – простой плеер подкастов.
  • Audiobooks.com – клиент популярного сервиса с бесплатными аудиокнигами (более 65 тыс. произведений).
  • Pandora – еще одна альтернатива Apple Music, бесплатная.
  • Slacker Radio – больше онлайнового радио! Но в данном случае кураторы — живые люди.
  • Vox — плеер для аудиофилов. FLAC и вот это все, плюс стриминг Hi-Res Audio из облака.

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

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.

Контролы на карте

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

Начнём с зума и текущего местоположения, ведь эти контролы находятся на самой карте и это не обычные UIControl. Как я писал выше, на base view находится только карта.

Для того, что бы поместить эти контролы на карту, пришлось снова лезть в документацию и sample-приложение. Там я вычитал про первый темплейт — CPMapTemplate.

CPMapTemplate — прозрачный темплейт для отображения некоторых контролов на карте и аналога navigationBar’а. Создаётся и выставляется он так:

Далее необходимо создать эти контролы и положить их на карту.

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

Дальше я полез смотреть, как мне заставить двигаться карту, и нашёл в документации вот такое:

Странно, подумал я, и полез смотреть, как это сделано в sample-приложении CountryRoads. Ответ — через вот такой интерфейс:

Не очень удобно, но по-другому никак, документация же не будет врать, верно?

Поскольку место для контролов на карте у нас закончилось, необходимо было сделать кнопку для перевода карты в режим «таскания» в этом аналоге navigationBar’а.

Но вот массивы leadingNavigationBarButtons и trailingNavigationBarButtons тоже оказались не без прикола: сколько элементов в них ни пихай, они возьмут только первые два. Тоже без ошибок в логе и ассертов.

А для активации и деактивации режима перетаскивания карты необходимо написать:

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

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

Adblock
detector