Экран мигнул.
Мелочь, конечно. Экраны E-ink мигают при каждой перерисовке: быстро перебирают цвета, прежде чем проявится новая картинка. Только в этот раз мигание запустил мой собственный код, отправленный с iPhone в чехол, у которого нет батарейки. Через несколько секунд весь экран залило ровным красным цветом, чуть матовым, как бумага. И больше ничего. Просто красный.
За много лет я сделал немало функций для NFC, и момент с этим простым красным прямоугольником до сих пор один из моих самых любимых.
Экран, которому не нужна батарейка
Если ты ещё не видел такие чехлы: снаружи обычный чехол для телефона, только большую часть задней стороны занимает экран E-ink, такой же, как в электронных книгах. Мой рисует четырьмя цветами: чёрным, белым, красным и жёлтым.
Батарейки внутри нет, разъёма для зарядки тоже. Питание чехол берёт из NFC-поля телефона, того самого, которое будит NFC-наклейку, когда ты её считываешь. Пока телефон прижат к чехлу, поле питает маленький чип и микроконтроллер, а они перерисовывают экран. Когда картинка готова, экрану E-ink больше не нужна энергия, чтобы её удерживать. Она просто остаётся на месте: на разряженном телефоне, в ящике стола, где угодно.
Я представляю себе такой чехол как «Волшебный экран», детскую доску для рисования, которую стирают встряхиванием. Разница одна: встряхнуть его умеет только твой телефон. Пока снова не поднесёшь телефон, ничего не изменится.
Продают такие чехлы под множеством названий, и почти у каждого бренда своё приложение. Мой шёл в комплекте с приложением DeerPhoneCase. Об остальных расскажу ниже.
Чем меня не устроило родное приложение
Я попробовал со своим чехлом целую кучу приложений от производителей, и многие из них работают. Но пользоваться ими всеми откровенно неприятно. Ни одно из них не написано как нативное приложение для iPhone, почти всё в них доступно только после входа в аккаунт, и в итоге ничего, кроме картинки, они толком делать не хотят.
Глядя на экран на задней стороне телефона, я видел не фоторамку. Я видел маленький дисплей, который всегда включён и не расходует батарею. Лучшего места для следующей встречи, плана на день или QR-кода, который кто-нибудь отсканирует прямо с моего телефона, не придумать. Родное приложение ничего такого не умело, а я как раз делаю приложение, целиком посвящённое NFC. Так что я решил сам научить NFC.cool разговаривать с чехлом.
Разбираем протокол
Я занимался этим вместе с Claude, ИИ-моделью от Anthropic. В чтении декомпилированного кода Claude оказался на редкость терпеливым напарником.
Первая мысль была очевидной: посмотреть, как с чехлом общается официальное приложение для iPhone. Ничего не вышло. Приложения из App Store зашифрованы, и прочитать там было нечего.
С версией для Android всё оказалось иначе. Чехол выпускают под разными брендами, поэтому приложение того же производителя лежит в Google Play под своим названием, а приложения для Android можно декомпилировать. Мы разобрали его по косточкам, и из этого кода и того, что удалось найти в интернете о чипе внутри (NFC-чип Fudan, за которым стоит микроконтроллер), сложился весь разговор телефона с чехлом:
Телефон и чехол обмениваются коротким приветствием с авторизацией, чтобы чехол знал, что с ним говорит настоящее приложение.
После этого все команды идут в зашифрованном виде.
Картинка передаётся в 139 пакетах с сырыми пикселями. На каждый пиксель уходит два бита, ровно столько, сколько нужно для четырёх цветов.
Телефон велит чехлу перерисовать экран, а потом каждую секунду спрашивает, готово ли.
Мой первый тест не делал ничего хитрого: он просто заливал весь экран одним цветом. Так и появился тот красный прямоугольник.
Подвох на двадцатой секунде
Потом я взялся за настоящие картинки, и они выходили испорченными. Полосы через весь экран, не те цвета, половина фотографии.
Перерисовка занимает около 18 секунд, а соединение раз за разом обрывалось как раз в районе двадцатой. Claude был уверен, что iOS просто завершает любой сеанс NFC через 20 секунд и с этим ничего не поделать. Мне в это не верилось: у официального приложения на том же самом iPhone всё получалось.
Тогда я подключил iPhone к Mac и записал системный журнал, пока официальное приложение рисовало картинку. Там и обнаружился трюк: iOS ограничивает примерно 20 секундами каждое соединение с меткой, а не весь сеанс. Сразу после отправки картинки официальное приложение разрывает соединение, примерно через десятую долю секунды подключается снова и даёт чехлу перерисовать экран уже на свежем соединении, где в запасе целых 20 секунд.
Как только я научил NFC.cool делать так же, картинки стали выходить чистыми. Признаюсь, в этот раз мне было приятно оказаться правым.
Что NFC.cool умеет выводить на чехол
Функция находится в NFC.cool Tools 7.2.0, в разделе «Приложения для NFC», и называется Чехол с E-ink. Выбираешь макет и сразу видишь в превью, как именно его покажет чехол. Потом снимаешь чехол с телефона и прижимаешь iPhone к его задней стороне, пока не закроется окно NFC.
Фото: любой снимок из медиатеки, обрезанный под экран. Этот вариант бесплатный. Приложение переводит снимок в четыре цвета экрана, умеет усиливать цвет («Стандартное», «Насыщенное» или «Макс.») и делать картинку чёрно-белой.
Вырезка: приложение вырезает с фотографии человека, питомца или предмет и помещает его на фон одного из четырёх цветов.
QR-код: любой QR-код, сохранённый в NFC.cool, с его собственным оформлением, или новый, который ты введёшь сам. Код можно инвертировать, а если текст слишком длинный и на маленьком экране код станет плохо читаться, приложение предупредит.
Следующее событие или Выбранное событие из календаря.
План на сегодня: всё, что стоит в календаре на сегодняшний день.
Напоминания: незавершённые напоминания из одного списка, с тремя размерами текста на выбор.
Макеты с календарём и напоминаниями работают как моментальный снимок. Чехол показывает то, что было верно в момент записи, и так до следующей записи. Обновиться сам, без телефона, он не может, и такова цена того, что заряжать его не нужно никогда.
Что стоит знать
Дай чехлу отдохнуть между записями. Если вывести два макета подряд, второй получится бледным и сероватым. Между перерисовками чехлу нужно немного прийти в себя. Официальное приложение просит подождать минуту, и для NFC.cool этот совет тоже хорош.
Не двигай телефон. Весь процесс занимает какое-то время, и большая его часть уходит на саму перерисовку. Если убрать телефон раньше, приложение об этом скажет, и можно просто попробовать ещё раз.
Пока только на iPhone. Функция есть в приложении для iPhone, а в приложении для Android её пока нет.
Какие чехлы работают. Большинство таких чехлов идёт от одного разработчика, который выпускает отдельное приложение почти под каждый бренд. Я проверил со своим чехлом все, какие смог найти:
DeerPhoneCase, KAZAVA, Novixand и TYOHINN работают с моим чехлом, и NFC.cool с ним тоже работает. Если твой чехол шёл с одним из этих приложений, NFC.cool должен с ним работать.
Bestie e-INK и KINGZER с моим не работают. Картинка по NFC передаётся без проблем, но когда чехол должен перерисовать экран, ничего не происходит.
SpaceInk+ от другого разработчика с моим чехлом не работает совсем. Приложение пишет только «device channel information mismatch».
Это не значит, что NFC.cool не справится с чехлами для Bestie e-INK, KINGZER или SpaceInk+. Возможно, они просто немного отличаются от моего, а проверить их я не могу. Если у тебя такой чехол, напиши мне, работает с ним NFC.cool или нет. Если твой чехол работает с каким-то другим приложением, NFC.cool сообщит, что он пока не поддерживается, и предложит кнопку Отправить данные чехла. Отправляются только технические сведения о чипе, без всего, по чему можно узнать тебя или твой чехол. Так я вижу, какие чехлы у людей на руках, и могу добавить их поддержку.
Где взять такой. На Amazon эти чехлы продаются под кучей брендов, порой довольно загадочных, но за ними стоят одни и те же чехлы. Вот поиск по ним на Amazon (партнёрская ссылка). У моего чехла внутри напечатано DIY, и у некоторых объявлений DIY есть в названии, так что по этому слову удобно искать. Если в объявлении указано приложение, с которым работает чехол, ищи DeerPhoneCase, KAZAVA, Novixand или TYOHINN.
Итог
Если у тебя где-то лежит такой чехол и на нём до сих пор та же картинка, что и в первый день, дай ему показать что-нибудь полезнее. NFC.cool Tools есть в App Store.
А если ты ещё ни разу не видел, как экран E-ink мигает и проявляет картинку, которую ты сам ему отправил, очень советую. Несколько секунд чистого удовольствия.