9 способов как улучшить iOS приложение
Apple первая на рынке мобильных телефонов не только потому что делает отличные телефоны, но также потому что уделяет внимание мелочам. Другие компании не делают такие мелочи по разным причинам, я сейчас не буду углубляться в эту тему. Я Вам расскажу про то, как можно сделать приложение в духе Apple. В этой статье не будут описаны сложные механизмы, тут будет рассказано как с помощью пару строчек кода можно преобразить ваше приложение. Никаких костылей, никаких сторонних библиотек. Вам все дала Apple - пользуйтесь.
1. Taptic engine
Taptic engine - “новая” вибрация от Apple. Это решение было впервые интегрировано в iPhone 6S. В чем суть? Это маленький вибромоторчик, который может выдавать различные вибрации. Самое приятное - это то, что Apple разрешила разработчикам взаимодействовать с ним.
Сценарии использования:
- При нажатии на кнопку. Ваша приложение станет гораздо привлекательнее, если оно будет отвечать пользователю не только изменением контента на экране, но также и отвечать физически.
- При скролле контента. Многие из вас являются обладателем часов на запястье. Вам нравится звук и легкое щелканье во время подкручивания часов? Так почему это не добавить в ваше приложение? Такой механизм позволяет окунуть пользователя в контент, ему становится интереснее листать ленту, тем самым мы задерживаем пользователя на более длительный период в приложении.
- При возникновении ошибки. Всегда нужно прикладывать усилия, чтобы избежать появления ошибок в программе. НО есть такие ситуации, когда на них напрямую влияет пользователь. Например, юзер ввел неправильный пароль. Конечно, мы покажем поп-ап, в котором об этом скажем, но кроме визуального сообщения можно это сделать и с помощью нашего “моторчика”.
Taptic engine позволяет добавить ту самую магию Apple, за которую любят эту компанию.
Реализация:
let mediumGenerator = UIImpactFeedbackGenerator(style: .medium)
mediumGenerator.impactOccurred()
2. Spotlight Indexing
Какой объем памяти на вашем iOS устройстве? 128 гб, 256 гб? А возможно даже больше. Сколько в вашем смартфоне приложений? 50, 100? А представляете сколько данных содержится в вашем телефоне? И чтобы юзер не потерялся в этом море информации Apple добавила Spotlight.
Spotlight - это механизм, который позволяет найти данные в вашем устройстве под управлением MacOs, iOS, iPadOS. К сожалению, этот механизм позволяет только найти ваше приложение, но не данные внутри него. НО в iOS 9 добавили возможность проиндексировать данные в приложениях.
Если разработчик проиндексирует данные, то Spotlight найдет данные и внутри приложения. К сожалению, не все приложения проиндексированы, поэтому давайте будем первыми, чтобы опередить конкурентов.
Ваше приложение является почтовым агрегатором? Давайте сделаем поиск по письмам. Сценариев использования уйма, главное сделать акцент на основной задаче приложения.
Реализация:
3. Анимация при нажатии
Анимация при нажатии, которую предлагает Apple, минимальна.
Я же предлагаю ее немного улучшить. Зачем? Гораздо приятнее для пользователя, когда он своим касанием немного меняет форму предмета. Создается связь между приложением и пользователем.
Реализация:
И не забудьте про пункт 1 из статьи. Комбинация анимации с taptic engine просто великолепна.
4. Запрос на разрешение
Никто не любит делиться своей геопозицией, но все равно приходится, иначе карты не будут работать.
А теперь давайте рассмотрим ситуацию: ваше приложение взаимодействует с камерой, микрофоном, геопозицией, фотопленкой и контактами. Когда спросить разрешения у пользователя?
Плохое решение:
При первом запуске программы сделать запрос всего.
Относительно быстрая реализация
— Негативное отношение пользователя к такому приложению, пользователю непонятно зачем от него требуется столько всего.
— Разработчику придется все равно проверять разрешение перед непосредственным использованием модуля
Оптимальное решение:
Сделать запрос на разрешение перед непосредственным использованием.
+ Доверие пользователя не подорвано
+ Программист не делает двойную работу
Продвинутое решение:
Онбординг, где четко объясняется как и зачем будет использоваться тот или иной модуль телефона.
+ Пользователь четко понимает зачем у него запрашивают разрешение
+ Программа становится более юзер френдли
— Долгое время разработки
— Программист делает двойную работу, так как ему придется все равно проверять разрешение перед непосредственным использованием модуля
Итог: На мой взгляд лучше использовать Оптимальное решение.
5. Home Screen Quick Actions
В iPhone есть такая функция как 3D Touch или в более современных моделях Haptic Engine. Грубо говоря, эти технологии позволяют определить силу нажатия на экран. Это можно интегрировать в самом приложении, например при сильном нажатии на элемент происходит какое-либо действие, но это не получило широкого распространения. Лично я связываю это с тем, что юзеру приходится самому догадываться есть ли у кнопки скрытый функционал или нет. Поэтому, на мой взгляд, эта функция не является обязательной к интеграции в первую очередь.
А вот с экраном “Home” все иначе. У всех иконок есть “сильное” нажатие. Если программист не реализовал ничего, то там будет следующий функционал:
- изменить экран “Домой”
- поделиться приложением
- удалить приложение
Начиная с iOS 12 этот функционал можно расширить. Добавить действия, которые Вы хотите. Как правило, туда добавляют функционал основных фич. Например Instagram добавил следующее:
- новая публикация
- посмотреть действия
- Direct
Нажав на одно из них Вы окажитесь именно в этом месте программы.
Ниже привожу ссылку на документацию Apple как это сделать, на первый взгляд кода там много, но поверьте реализация не займет много времени.
6. Dark Mode
Поклонники iOS ждали темную тему несколько лет. Разработчики ее не ждали.
Как работает Dark Mode в iOS. Начиная с iOS 13, у самого телефона есть два режима - светлый и темный. Переключите режим в настройках - изменится и интерфейс всех приложений. Грубо говоря, если тема светлая и цвет кнопки синий, то в темной теме кнопка будет красной.
Лично я очень часто переключаю системную тему в своем iPhone, а когда вижу, что приложение само перекрасилось, то получаю удовольствие. Видно, что разработчики запарились и сделали эту функцию, мелочь, а приятно.
Рассмотрим работу этого механизма в приложении Instagram. Кстати, подписывайтесь на инсту.
В своем новом проекте я решил иначе работать с цветами. Раньше, как правило, все создавали отдельный файл со всеми цветами в приложении. Я же создал Color Set. Сейчас в приложении поддерживается только одна тема - темная, но если будет необходимость добавить светлую, то у меня займет это максимум 30 минут. Главное знать, на какой цвет меняется в светлой теме.
То есть сейчас независимо от темы всегда будет красный, но если в светлой теме вместо красного будет желтый, то мне стоит только поменять цвет тут. В коде ничего делать не нужно.
Такая реализация увеличила время на разработку на 30 мин, но если будет темная тема, то мы сэкономим часов 20.
7. iOS Modal Sheets
В iOS существует два способа перехода на новое окно, когда новое окно появляется справа и когда снизу.
Первый способ:
Второй способ:
Сейчас пойдет речь о втором. До iOS 13 этот способ работал следующим образом - новое окно появлялось снизу и перекрывало предыдущее окно полностью. Начиная с iOS 13, по умолчанию работает иначе:
На гифке видно, что новое окно открывается поверх предыдущего, но при этом не на весь экран. Как раз такой стиль открытия называется Modal Sheets. Летом 2019 года все разработчики стали это срочно фиксить, все стали добавлять атрибут:
vc.modalPresentationStyle = .fullScreen. Такой трюк позволил вернуться к открытию как показано на второй гифке.
Это позволило открывать новое окно на весь экран. Это был быстрый фикс, чтобы избежать багов. А с чем это связано? Связано это с тем, что при fullScreen нужно самому добавлять кнопку закрытия окна и нажатие на нее легко обработать. При Modal Sheets окно можно просто потянуть вниз и iOS сама закроет окно и удалит его из памяти. Но в связи с этим могут возникать баги, а именно неконтролируемое поведение.
Такое закрытие можно тоже контролировать, это делается в делегате:
Именно тут следует добавить логику, можно точно такую же, которая была на кнопке “закрыть”.
Давайте использовать Modal Sheets, избегайте fullScreen без крайней необходимости. Использование Modal Sheets делает приложение свежее, современнее, а главное приложение становится схожим по UX с приложениями от Apple.
8. Системный размер шрифта
Вы знали, что в iOS можно изменить размер шрифта? Если Вы плохо видите мелкие предметы, то это функция специально для Вас. Во всех системных приложениях размер шрифта изменится на тот, который установите.
Но на этом не все. Можно настроить размер шрифта в своем приложении таким образом, чтобы он зависел от системного. Такая мелочь улучшает взаимодействие с приложением, особенно если у Вас много текстовой информации в приложении.
Вы спросите, а не проще просто сразу же сделать большой шрифт? Нет, не проще, например я, не люблю большой размер шрифта. В моих настройках стоит минимальный размер. Давайте думать о всех пользователях, тогда их станет еще больше у нас.
Приведу описание этой технологии из официальной документация:
9. Password AutoFill and Strong Password
Почему я никогда не перейду на Android? В моей связке паролей хранится более 300 учетных записей. Думаю, что у вас тоже их там прилично. Не нужно больше вопросов. Просто добавляем и все. Это удобно и точка.
Ну а кто не в курсе что это такое, поясню - ваш логин и пароль хранится в защищенном месте. Почему они защищенное? Лучше всего Вам это объяснит Apple
Вам не нужно больше записывать пароли на бумажке (да простит меня мой дедушка), вам не нужно придумывать самому пароли. Вы используете один пароль везде? Поздравляю Вы в зоне риска. Этот механизм генерирует Вам сложный пароль и автоматически заносит его в Keychain. При следующем логине программа предложит Вам именно этот пароль для авторизации.
Для работы этого механизма нужно на сервер добавить Associated Domains и также указать его в приложении в Capabilities
Не забудьте указать type у поля ввода в iOS приложении.
Заключение
В статье было рассмотрено как с помощью маленьких фич можно сделать приложение гораздо привлекательнее. Не забывайте про мелочи и тогда у Вас будет “Большое” приложение.
С вами был Михаил, iOS Developer Fora Soft.
