Главная страница \ Статьи \ Автомобили \ Genesis Coupe (2010) \ iPhone/iPod/iPad Initialization error

iPhone/iPod/iPad Initialization error

Russian | English

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

Итак, в процессе разработки собственного аудио-плеера для iOS я столкнулся с проблемой подключения его к головному устройству моего Genesis Coupe.

Выглядит проблема крайне странно. Телефон подключается только один раз: либо при включении головного устройства, либо после перевого Initialization Error, переключения на радио, а потом выбора Aux. Третий и последующие разы, при этом, стабильно Initialization Error.

Я потратил почти пол года вновь и вновь возвращаясь к этой проблеме.

Также нашёл тему раз и тему два на форумах автовладельцев, но и там не оказалось решения.

Перепробовав массу вариантов мне всё же удалось найти и решить проблему!

Проблема оказалась, с одной стороны, элементарна, с другой стороны, крайне тяжело идентифицируема.

Итак. Вся проблема в MPRemoteCommandCenter.shared().changeShuffleModeCommand ! Дело в том, что этот API появился начиная с iOS 10.0. Т.е. до этого его официально не было. Если учесть, что авто начали выпускать в 2009 году, то головное устройство было разработано ещё раньше.

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

И стоило мне только отключить эти команды в моём приложении - и вуаля! Теперь мой плеер успешно подключается к головному устройству каждый раз!

Итак, чтобы иметь возможность корректно работать с нашим головным устройством, приложение должно НЕ поддерживать (или отключать) команду changeShuffleModeCommand перед подключением к головному устройству.

В общем, чтобы решить проблему - достаточно использовать приложение из AppStore, которое не умеет changeShuffleModeCommand. К сожалению, все стандартные приложения умеют работать changeShuffleModeCommand о чём радостно рапортуют головному устройству, приводя его в нерабочее состояние. Могу порекомендовать использовать JetAudio для воспроизведения музыки.

P.S. Пока что автоматическое включение/выключение придумать не удалось.

English version

When I was working on my audio player for iOS I faced with an issue. After a connection of an iPhone to a car's audio I received "Initialization Error". It was very interesting, because I may get correct connection only on first or on second time. After that car's audio told me every time Initialization Error and switched on Radio.

I spent about half of a year to check different solutions. I found two similar issues on forums: subject 1 раз and subject 2, but there were no descriptions and/or solutions.

And finally I found an issue and a solution!

Problem causes by wrong implementation of changeShuffleModeCommand from car's audio system side.

If this feature is enabled by application - connection will always fail. But if it is disabled - everything will be OK.

So, if you want to play music from your iPhone/iPod/iPad you need to find an application in AppStore which doesn't support changeShuffleModeCommand. Unfortunatelly, even default applications can work with changeShuffleModeCommand and report about that. And break a car's audio.

I could recommend JetAudio as a media player which doesn't support (don't know why) it isn't implemented.

Powered by Elise