Как мы создавали OneLimit: пет-проект разработчика и папы
OneLimit Team
Любой пет-проект начинается с проблемы, о которой невозможно перестать думать. Для OneLimit проблема была такой: у моих детей были дневные лимиты экранного времени. Они их соблюдали. И при этом проводили за экранами куда больше, чем мне хотелось бы.
Мне неловко признаться, сколько времени ушло на то, чтобы понять причину. У них было 90 минут на Switch. Час на PS5. Полтора часа на iPhone. Ещё час на Xbox. И ещё время на Windows PC. Пять отдельных лимитов, пять отдельных систем - всё настроено, всё работает ровно так, как задумано. А суммарно получалось намного больше, чем я планировал. Я сам всё это настроил. Просто ни разу не сложил цифры.
В тот момент OneLimit и появился как идея. Чтобы превратиться в приложение, понадобился ещё год.
То, что я искал и не находил
Первой мыслью было, что кто-то наверняка уже решил эту задачу. Я разработчик - искать я умею. Несколько вечеров подряд я пытался найти приложение, которое позволило бы установить один дневной лимит экранного времени сразу на несколько устройств и платформ. Я находил множество инструментов для одной платформы. Находил приложения для мониторинга, которые давали отчёты, но ничего не ограничивали. Находил аппаратные решения, которые были явным перебором для нашей ситуации.
А вот чего я найти не мог, так это чего-то простого: одна цифра, все экраны, автоматическое соблюдение. Казалось бы, очевидная вещь, которую хочется иметь. Её не существовало.
И я задумался, смогу ли создать её сам.
Что оказалось технически сложным
Первым делом нужно было понять, почему этого никто ещё не сделал. Ответ: каждая платформа прячет данные родительского контроля за собственными API, со своей моделью аутентификации и своим набором ограничений на то, что вообще разрешено сторонним приложениям.
Apple ScreenTimeKit - самый мощный, но и самый закрытый. Это собственный фреймворк Apple, который даёт приложениям легальные возможности управлять экранным временем на уровне ОС. Чтобы использовать его, приложению нужны правильные права доступа (entitlements), а их не выдают автоматически - Apple проверяет, как именно вы собираетесь их применять. Контроль реальный: он работает на уровне ОС, и обойти его по-настоящему трудно.
PlayStation Family Management предоставляет API через PlayStation Network, который позволяет авторизованным приложениям читать данные о времени игры и управлять семейными аккаунтами. Sony строила его прежде всего под собственное приложение, но API доступен. Сложность в том, чтобы построить надёжную интеграцию с регулярным опросом, которая держит данные в синхронизации и при этом не перегружает endpoint.
Nintendo Switch Online аналогичным образом отдаёт данные аккаунта и родительского контроля через API, которым пользуется официальное приложение Parental Controls. Разобраться, как это устроено (законно, наблюдая за трафиком официального приложения), было одной из самых интересных задач.
Microsoft Family Safety предоставляет API для управления экранным временем на Xbox и Windows PC. Из всех консольных интеграций интеграция Microsoft самая структурированная - это документированный API с нормальным OAuth, и он покрывает и консоли Xbox, и компьютеры Windows через один аккаунт.
Ни один из этих API не был рассчитан на то, чтобы общаться с остальными. У них разные схемы аутентификации, разные форматы данных, разные ограничения на частоту запросов. Создать OneLimit означало стать мостом между ними - вытягивать данные о времени из каждого, поддерживать единое состояние бюджета и передавать действия по ограничению обратно на каждую платформу.
Что меня удивило
Я ожидал, что работа с API будет сложной. Я не ожидал, что UX окажется ещё сложнее.
Техническая интеграция действительно непростая, но когда она заработала - она работает. А вот интерфейс - то, как на самом деле донести до 9-летнего ребёнка мысль "у тебя осталось 45 минут на всех устройствах сразу" так, чтобы это было понятно и не казалось несправедливым, - потребовал куда больше итераций, чем я предполагал.
Ранние версии приложения были слишком техническими. Слишком много цифр, слишком много деталей. Дети смотрели на это и пожимали плечами. Версия, которая реально изменила поведение, оказалась гораздо проще: кольцо бюджета в детском приложении, которое показывает оставшееся время в виде визуального обратного отсчёта. Зелёный - времени много. Жёлтый - подходит к концу. Красный - почти всё. Вот и всё. Дети понимают это мгновенно.
Ещё одним сюрпризом стало то, насколько важен сам момент срабатывания ограничения. Что происходит, когда время заканчивается? И как ребёнок узнаёт об этом заранее? Правильно выстроить эти переходы - предупредить заранее, чтобы можно было спокойно завершить дело, аккуратно заблокировать, дать понятное объяснение - вот куда ушла большая часть работы над дизайном.
Функции, родившиеся из реальных родительских ситуаций
Запрос дополнительного времени появился из конкретного торга: "Можно ещё немного времени?" Вместо того чтобы родитель каждый раз решал это спонтанно, OneLimit позволяет детям отправить запрос прямо со своего устройства. Родитель одним нажатием одобряет или отклоняет. Это убирает спор из комнаты.
Серии (streaks) родились из желания сделать самоконтроль приятным. Дети, которые укладываются в дневной бюджет, набирают серию. Простой стимул, но он превращает лимит из навязанного в заработанный.
Экстренная блокировка появилась из ситуации, которая, подозреваю, знакома многим родителям: момент, когда ребёнок впадает в истерику из-за проигрыша в игре, и каждая лишняя минута за экраном только усугубляет всё. Возможность мгновенно заблокировать все устройства со своего телефона - без необходимости физически вмешиваться и что-то отбирать - оказалась действительно полезной.
Обратный отсчёт перед сном даёт детям понятный, видимый период, чтобы свернуться перед тем, как экраны заблокируются на ночь. Никакого резкого отключения - они видят, что время приближается, и могут спокойно закончить.
Расписания появились из реальности будней и выходных. Правильный лимит во вторник - это не то же самое, что правильный лимит в субботу. OneLimit позволяет задавать разные бюджеты на разные дни, чтобы на выходных было больше свободы, но без того, чтобы это становилось нормой каждый день.
Что мы сделали неправильно (и исправили)
Первая версия пыталась делать слишком много. Аналитика использования устройств, подробная разбивка по приложениям, отчёты о трендах во времени. Всё это интересные данные, но это не то, что нужно большинству родителей в моменте. Родителю нужно знать: сколько времени осталось и не обернётся ли это проблемой сегодня вечером? Всё остальное - шум.
Мы многое из этого убрали. Нынешнее приложение проще ранних версий. И это было правильное решение.
Поначалу мы также сделали слишком сложным предоставление разового дополнительного времени. Система была жёсткой так, что это ощущалось как наказание - и для ребёнка, и для нас. Реальная жизнь не жёсткая. Некоторые дни заслуживают большей гибкости. Возможность легко делать одноразовые исключения на один день (не разрушая при этом всю структуру) оказалась важной.
Где OneLimit сейчас
OneLimit - это реальное приложение в App Store. Оно поддерживает iPhone, PS5, Nintendo Switch, Xbox и Windows PC. Есть бесплатный уровень для одного ребёнка и одного устройства - достаточно, чтобы попробовать и понять, подходит ли сама идея вашей семье. Тариф Pro снимает ограничения; актуальная цена указана в App Store.
Это по-прежнему небольшая команда. Нас немного, и мы создаём то, что нужно было нам самим, для проблемы, с которой, как нам кажется, сталкиваются многие семьи. Слоган - "Один бюджет. Все экраны." - это именно то, что мы собирались построить, и именно это приложение и делает.
Если вы родитель, который управляет несколькими устройствами и устал от трения, которое создают лимиты по каждому устройству отдельно, мы будем рады, если вы попробуете. А если у вас есть обратная связь - что-то не работает, какие-то функции были бы полезны, где-то мы ошиблись - мы её действительно читаем, и она действительно влияет на то, что мы делаем дальше.
Эта часть жизни маленькой команды не так уж и плоха.
OneLimit доступен на iOS с поддержкой iPhone, PS5, Nintendo Switch, Xbox и Windows PC. Начните на onelimit.app.