«По душе» на iPhone

Дорога до TestFlight

План работы со статусами. Я обновляю эту страницу по ходу работы.

Обновлено 25 сентября, 22:14 по Москве

Сейчас

Шаг 4 из 6. Части для iPhone и первая сборка

Готово 5 частей из 6. Сейчас: iPhone 0.2.0 (260925.2150) в TestFlight и Android 0.2.0-260925.2156 на стенде — в них все 32 правки по вашему списку от 25 сентября. Дальше — личный чат и подписка на человека (DUSHA-163, DUSHA-164), потом ручная проверка iPhone и сверка экранов на iPhone (шаг 5); этап 3 ускорения — только после вашего «да».

Помощники

  • Пульт для симулятора iPhone шаг 4

    Делает способ нажимать на экран симулятора iPhone из скрипта, чтобы я мог пройти приложение руками: нажатия, прокрутка, ввод текста.

  • Тексты, картинки, шрифты шаг 3, готово

    Готово и влито: 619 из 623 экранов бит в бит, у 4 — только системная полоса жеста; QR-рамку исправил.

  • Связь с сервером шаг 3, готово

    Готово и влито: вход, афиша, запись, чат с фото, профиль и селфи проверены руками на стенде.

  • Даты и мелочи шаг 3, готово

    Готово и влито: 141 кадр с датами бит в бит, тексты по-русски те же буква в букву.

  • Новый движок шаг 2, готово

    Готово и влито: 610 из 623 экранов бит в бит; у 12 экранов фильтров отличается сглаживание края тонкой рамки мини-карты — решу отдельно.

  • Готово раньше шаг 4

    Рисование, карта, камера селфи и оболочка приложения для iPhone сделаны и подключены.

  1. 1Подготовка кода
  2. 2Новый движок
  3. 3Общий проект
  4. 4Части для iPhone и первая сборка
  5. 5Сверка на iPhone
  6. 6Финальная сборка в TestFlight
Первая сборка в TestFlight
24 сентября — в TestFlight, обновление 21:30
Сборка, сверенная по всем экранам
около 13–15 октября
Моей работы всего
70–95 часов

Работа идёт в отдельной ветке поверх сборки 22 сентября, поэтому Android-сборки для тестировщиков это не задевает. Правки соседей по Android сюда пока не входят: по вашему решению добавим их после того, как вы посмотрите iPhone. В конце Android и iPhone собираются из одного кода.

План

  1. Подготовка кода

    Идёт

    Отделяю в коде всё, что умеет только Android. Внешне Android не меняется, и я проверяю это после каждой части: снимаю экраны старой и новой сборкой и сравниваю их попиксельно.

    Оценка моей работы: 25–30 ч

    Части шага · готово 11 из 12

    • Готово

      Рисование: тени, свечения, размытия

      Проверено: 38 экранов совпали со старой сборкой бит в бит.

    • Готово

      Хранение входа и настроек

      Проверено: после обновления поверх старой версии вход и настройки сохраняются.

    • Готово

      Разрешения, фото, камера, селфи, геопозиция

      Проверено руками на эмуляторе со стендом. Фото на сервере стоят ровно.

    • Готово

      Отправка ошибок приложения на сервер

      Проверено: сборка и тесты, приложение запускается. Правила текста журнала общие для Android и iPhone.

    • Идёт

      Размер экрана и отступы

      Окно диалогов разделено на Android и iPhone; отступы на iPhone проверю на симуляторе.

    • Готово

      Карта

      Проверено руками: карта афиши, кнопки масштаба, «к моей локации», радиус «Рядом», смена города, карта события, выбор места в форме, мини-карты.

    • Готово

      «Поделиться» и открытие приложения по ссылке

      «Поделиться», «в картах» и копирование ссылки идут через общий код; проверено руками. Ссылки podushe:// — при переезде навигации в общую часть.

    • Готово

      Служебный журнал для разработчика

      Сделано при переносе экранов: журнал разработчика общий, на iPhone пишет в консоль Xcode.

    • Готово

      Шрифты, тексты и картинки

      Сделал помощник: 619 из 623 экранов бит в бит со старой сборкой, у 4 отличается только системная полоса жеста; QR-рамку исправил.

    • Готово

      Даты и время

      Сделал помощник: общий код, те же тексты по-русски; 141 кадр с датами бит в бит.

    • Готово

      Связь с сервером, загрузка картинок, QR-код

      Сделал помощник: проверено руками на стенде — вход, афиша, запись, чат с фото, профиль, селфи; QR клетка в клетку.

    • Готово

      Мелкие доработки

      Сделано вместе с датами, связью с сервером и переносом экранов.

  2. Новый движок

    Готово

    Делает: помощник

    Перевожу Android на версию движка, которая работает и на iPhone. После этого перепроверяю все 623 экрана с Figma.

    Оценка моей работы: 8–10 ч

  3. Общий проект

    Готово

    Делает: я

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

    Оценка моей работы: 5–8 ч

  4. Части для iPhone и первая сборка

    Идёт

    Делает: два помощника и я, заранее

    Дописываю то, что на iPhone устроено иначе: карту, камеру, фото, геопозицию, разрешения. Уже готовы и собираются под iPhone мои черновики настроек стенда, хранилищ, разрешений, выбора фото и камеры, подготовки снимков и геопозиции; помощники делают рисование и оболочку приложения. Запускаю на симуляторе iPhone. В конце шага выкладываю первую сборку в TestFlight. Настоящего iPhone у меня нет, поэтому карту и камеру на телефоне проверите вы или тестировщики.

    Оценка моей работы: 20–25 ч

    Части шага · готово 5 из 6

    • Готово

      Рисование, карта, камера селфи, фото и разрешения для iPhone

      Сделали помощники; рисование и карта сверены с Android — разница глазом не видна.

    • Готово

      Все экраны — в общей части для Android и iPhone

      172 файла; код собирается под обе платформы без ошибок.

    • Готово

      Первый запуск на симуляторе iPhone

      Открывается приветственный экран с фото, значками и кнопкой «Войти».

    • Готово

      Проверка, что Android не изменился

      Все 623 экрана сняты новой сборкой: 615 совпали со старой бит в бит, у 8 отличается только системная полоса жеста внизу (её рисует Android, не приложение). Кадры, которые под нагрузкой снялись чёрными или недорисованными, пересняты — совпали.

    • Идёт

      Ручная проверка на симуляторе iPhone

      Пройдены руками: вход по номеру, афиша на карте и списком, событие, фильтры, профиль, карточки свайпом, создание события, избранные, чаты. Исправлено по ходу: нижние кнопки стояли на 10 pt выше макета; приложение закрывалось при ошибке сети. Дальше — запись на событие, чат, редактирование профиля, селфи.

    • Готово

      Пробная сборка в TestFlight

      Сборка 0.2.0 (260924.1919) обработана Apple и доступна во внутреннем тестировании; приглашение отправлено Николаю на nikolayyy05@icloud.com.

  5. Сверка на iPhone

    Впереди

    Сравниваю все 623 экрана iPhone с Figma тем же способом, что и Android, и правлю расхождения.

    Оценка моей работы: 12–18 ч

  6. Финальная сборка в TestFlight

    Впереди

    Выкладываю сверенную сборку и подключаю тестировщиков. Вы ставите на iPhone приложение TestFlight, открываете приглашение из почты и нажимаете «Установить».

    Оценка моей работы: 2–4 ч

Что понадобится от вас

Журнал

  1. В TestFlight сборка 0.2.0 (260925.2150), на стенде Android 0.2.0-260925.2156: все 32 правки по вашему списку от 25 сентября. По ходу финальной проверки на iPhone нашёл и исправил выбор места булавкой: адрес теперь виден сразу.

  2. Вечерние сборки: iPhone 0.2.0 (260925.1609) — в TestFlight, Android 0.2.0-260925.1606 на стенде. Внутри — правки по ручной проверке ускорения (помощники прошли обе сборки, поломок нет): страница события открывается сразу, профиль и чат больше не мигают пустым состоянием. На Android при возврате на «Афишу» карта больше не мелькает пустым полем: до первого кадра поверх лежит её снимок — те же пиксели (проверено записью экрана по кадрам, и со вкладок, и со страницы события). Пустая карточка ленты — цвет карточки вместо круглого силуэта с чёрными углами, в шапке — ваше фото. Тесты: 318 из 318.

  3. Ускорение без изменения дизайна, этапы 1 и 2 (Android и iPhone). Переходы между экранами — как в прототипе Figma: 0,1–0,3 с вместо 0,7 с. Экраны не грузят лишнего: «Чаты» и «Профиль» больше не заводят свою копию афиши, ответы сервера разбираются в фоне, одинаковые одновременные запросы идут одним, списки городов и тем приложение помнит 10 минут, а только что виденное событие открывается сразу. Карта берёт плитки с копии на нашем стенде в России (сервер карт режется у российских провайдеров) и хранит на телефоне до 300 МБ. Лента подгружает следующие карточки заранее. Сверка 623 экранов со сборкой 1816 — как и раньше: 611 совпадают точно, у остальных едва заметен край рамки мини-карты. Сборки: iPhone 0.2.0 (260925.1437) — в TestFlight, Android 0.2.0-260925.1444 на стенде.

  4. По замечанию Николая карта афиши больше не создаётся заново при каждом возврате: одна карта живёт всё время работы приложения, и после «Избранных» или страницы события она на месте сразу — с тем же масштабом и маркерами (Android и iPhone; было и в сборке 1816). На iPhone во время перехода карта больше не пропадает белым полем; касание по маркеру рядом с группой открывает событие, а не приближает карту. Новые сборки: iPhone 0.2.0 (260925.1206) — доступна в TestFlight, Android 0.2.0-260925.1213 на стенде.

  5. Ручной проход Android закончен: помощник прошёл сборку 1816 и новую рядом, экран за экраном — регистрация, профиль, афиша, фильтры, поиск, событие, создание и правка события, запись и отмена, чат события с фото, поддержка, уведомления, настройки, выход и вход. Поломок из-за нового ядра нет; в двух местах новая лучше (касание пустого места прячет клавиатуру, шторка фильтров не закрывается от короткого движения). Кадр календаря переснят — совпал со сборкой 1816 точка в точку: из 623 экранов 611 совпадают точно, у 11 едва заметен край рамки мини-карты, 1 — незаметная разница. Найдены старые ошибки, которые есть и в 1816, — список в разделе «Что нашёл по дороге».

  6. Apple обработала сборку iPhone 0.2.0 (260925.0947) — она доступна в TestFlight группе «Тестируем «По душе»»: открыть TestFlight на iPhone и нажать «Обновить».

  7. Сверка кода со сборкой 1816 (два помощника, каждый файл) и исправления: селфи снова уходит в прежнем размере (было в полтора раза тяжелее); фото из галереи iPhone в формате HEIC теперь видно в кружке профиля (раньше оставался пустым, хотя фото отправлялось); на карте для города без известного центра события снова встают между шапкой и низом; фото для отправки читаются в фоне; на Android удаляется старый кэш картинок до 250 МБ. Новые сборки: iPhone 0.2.0 (260925.0947) в TestFlight и Android 0.2.0-260925.0954 на стенде — обе из одного кода, 316 тестов зелёные.

  8. По замечаниям Николая: на iPhone экраны больше не выезжают справа — плавно проявляются, как на Android; маркеры афиши с фото появляются сразу при каждом возвращении на карту (раньше дорисовывались 2–4 секунды); фильтры на обоих телефонах закрываются свайпом вниз. Селфи больше не уходит дважды при повторном нажатии.

  9. Профиль и статус не сохранялись из-за ошибки сервера на стенде dusha, а не из-за iPhone: если селфи подтверждали несколько раз, сервер падал на чтении профиля. Исправлены и код сервера, и данные на стенде. Новые сборки: iPhone 0.2.0 (260925.0857) в TestFlight и Android 0.2.0-260925.0904 на стенде.

  10. По просьбе Николая: iOS-ветка запушена в git (feature/ios-cmp); в неё влиты сегодняшние правки соседей по Android (чат события, DUSHA-101…113, правки против нагрева, кнопки над навигацией) — переведены на общий код, чтобы работали и на iPhone. Клавиатура при регистрации теперь убирается касанием пустого места, клавишей ввода и нажатием на дату рождения. Обновление 0.2.0 (260924.2123) загружено в TestFlight и обработано Apple.

  11. Apple обработала первую сборку для iPhone — она доступна во внутреннем тестировании TestFlight. Приглашение отправлено Николаю на nikolayyy05@icloud.com: открыть письмо на iPhone и нажать «Начать тестирование».

  12. Первая сборка «По душе» для iPhone загружена в TestFlight: версия 0.2.0, номер 260924.1919, стенд dusha. Администратор создал карточку «По душе iCloud», я открыл Николаю Добросоцкому доступ к приложению и добавил его во внутреннюю группу тестировщиков. Apple обрабатывает сборку, после этого придёт приглашение в TestFlight.

  13. Николай попросил выложить текущую сборку в TestFlight. Сделано: идентификатор «По душе», новый сертификат подписи команды и профиль — по вашему разрешению; сборка для iPhone собрана и подписана. Не хватает только карточки приложения в App Store Connect: её может создать только администратор команды. Проверка Android после переноса закончена: все 623 экрана совпали со старой сборкой, кроме системной полосы жеста на 8 из них.

  14. На симуляторе iPhone приложение входит на тестовый стенд по номеру телефона и показывает живые данные: афишу Москвы на карте и списком, события, фильтры, профиль, карточки, создание события, избранные и чаты. По ходу исправил две мои ошибки: нижние кнопки на iPhone стояли на 10 точек выше макета, и приложение закрывалось, если сервер не ответил. Снимки экранов — в разделе «Как это выглядит на iPhone».

  15. Помощник по картинкам закончил проверку: 619 из 623 экранов Android совпали со старой сборкой бит в бит, у 4 отличается только системная полоса жеста внизу. Нашёл и исправил одно настоящее расхождение: у 5 экранов с QR-кодом край рамки отличался на несколько оттенков — теперь совпадает.

  16. Первый запуск на симуляторе iPhone: приложение открылось и показало приветственный экран «Реальные встречи рядом с тобой» с фото, объёмными значками и кнопкой «Войти». Перед этим весь интерфейс — 172 файла экранов, кнопок и логики — переехал в общую часть, и код впервые целиком собрался и под Android, и под iPhone.

  17. Влита работа помощника по текстам, картинкам и шрифтам: они теперь общие для Android и iPhone. Сборки Android и iPhone проходят, 280 тестов зелёные.

  18. Помощник по связи с сервером закончил: запросы к серверу, чат, загрузка фото, картинки и QR-код теперь на общем коде. Руками на стенде проверены вход, афиша, запись на событие, чат с фото, профиль и селфи; QR совпал со старым клетка в клетку. Его работа влита.

  19. Помощник закончил даты: всё время и даты теперь на общем для Android и iPhone коде, тексты по-русски те же буква в букву, все 141 кадр с датами совпали со старой сборкой бит в бит. Его работа влита в мою ветку, идёт общая сборка.

  20. Вы уточнили: в App Store ничего не выкладываем, только TestFlight. Значит, проверка Apple и требования к публикации (удаление аккаунта, демо-номер для проверяющего, юрист по селфи) сейчас не нужны. Тестирование — внутреннее, для людей из команды в App Store Connect.

  21. Готовые части для iPhone подключены к общему проекту, и фреймворк приложения для iPhone уже собирается. Навигация Android больше не зовёт Android напрямую для карт, «поделиться», копирования ссылки и разрешений. Проверка: 38 экранов после переноса совпали с экранами до переноса; руками проверил карту афиши, радиус, смену города, карту события, «поделиться», «в картах» и копирование ссылки.

  22. Модуль приложения переведён на общий проект для Android и iPhone: Android собирается, все 259 тестов зелёные. Запустил трёх новых помощников на большие переделки, без которых экраны не переедут в общую часть: тексты, картинки и шрифты; связь с сервером; даты. Каждый сверяет свою часть попиксельно или руками.

  23. Вы решили: iPhone делаю поверх сборки 22 сентября, правки соседей добавим после того, как посмотрите iPhone. Это сняло ожидание. Сразу начал перенос в общий проект: модуль приложения теперь общий для Android и iPhone, код пока целиком в Android-части. Соседей предупредил, что ждать меня им не нужно.

  24. Помощник закончил карту для iPhone. На симуляторе iPhone и на Android сняли одни и те же сцены с 98 событиями Москвы: подложка, русские подписи, цвета, группы и «+ ещё N» совпадают, камера встаёт в те же координаты до цифры. Одно отличие в пользу iPhone: подписи маркеров там шрифтом SF Pro, как в макете, а на Android сейчас системным. Жесты пальцем проверим на живом телефоне.

  25. Сосед по нагреву телефонов передал ваше решение: исправления всех выйдут одной общей сборкой, когда закончат. Мой перенос на iPhone пойдёт поверх этой общей сборки, поэтому отдельной версии приложения не будет. Пока жду, дописал для iPhone журнал ошибок и служебный журнал, оба собираются.

  26. Готов черновик камеры селфи для iPhone: превью фронтальной камеры, спуск, переворот, вспышка экраном и фонарь. Он собирается под iPhone; проверить его можно только на живом телефоне. Запустил помощника на карту для iPhone: без неё главный экран на iPhone был бы пустым.

  27. Помощник закончил рисование для iPhone. Сравнил попиксельно 11 сцен на Android и на симуляторе iPhone: на свечениях первого экрана и кольцах «Профиль подтверждён» разница не больше 3 уровней яркости из 255, глазом не видна. Работа обоих помощников по iPhone влита в мою ветку.

  28. Помощник закончил оболочку iPhone-приложения: заглушка запускается на симуляторе, настройки стенда читаются, скрипты загрузки в TestFlight готовы. Проверил аккаунт Apple только чтением: сертификаты действуют до марта 2027, карточки «По душе» пока нет. Появились три просьбы к вам, они вверху раздела «Что понадобится от вас».

  29. Пока соседи правят общие файлы Android, начал части для iPhone: настройки стенда, хранилища, разрешения, выбор фото и камера, подготовка снимков, геопозиция. Всё это уже собирается компилятором под iPhone. На симуляторе проверю, когда помощник закончит оболочку приложения.

  30. Половина части «Карта» готова: общий способ управлять картой для Android и iPhone, правила подложки и мини-карт. Проверил руками: карта афиши, выбор места в форме события и мини-карта города работают как раньше. Вторую половину сделаю, когда соседи закончат правки в файле навигации.

  31. Готова четвёртая часть: отправка ошибок приложения на сервер. Правила текста журнала теперь одни для Android и iPhone. Сборка, тесты и запуск на эмуляторе в порядке.

  32. Вы попросили ускориться. Запустил трёх помощников на части, которые не мешают друг другу и соседям: новый движок (шаг 2), рисование для iPhone и проект iPhone с загрузкой в TestFlight (подготовка шагов 4–6). Сам продолжаю шаг 1 и собираю их работу в одну ветку.

  33. Сделал эту страницу. Обновляю её после каждой части работы.

  34. Проверил новую сборку руками на эмуляторе со стендом. Обновление поверх старой версии сохраняет вход. Геопозиция, фото из галереи и с камеры, селфи, уведомления, переход в настройки и история поиска работают.

  35. Первые три части готовы. Проверка поймала две мои ошибки: тени и свечения рисовались чуть иначе, чем раньше. Обе исправлены до того, как куда-то попали. Итог: 38 экранов совпали со старой сборкой бит в бит.

  36. Разбор и пробы. Выбран способ, при котором iPhone-версия собирается из того же кода, что Android: только так экраны на обоих телефонах будут одинаковыми. Сделана резервная копия всего кода. Начат шаг 1.

Найдено попутно

Всё это есть и в сборке 1816 — новое ядро ни при чём: помощник прошёл обе сборки рядом, экран за экраном. Я это не чинил: скажите, что чинить мне, а что завести карточками для команды.