Главная

C чего начинать разработку нового приложения?

Список обязательных компонентов современного приложения.

Поделиться:
 

14+

Геолокация

Реализовать геолокацию на телефоне нетрудно, даже несмотря на то, что телефон может предоставить только координаты. При обработке информации о геолокации на сервере помните, что для реализации может потребоваться обратное геокодирование. Это можно сделать с помощью Google Maps API, но, очевидно, запросы к API являются платными.
Еще есть один момент, который следует учитывать, — должно ли приложение отслеживать местоположение пользователя все время или только, когда оно запущено. Имейте в виду, что для постоянного отслеживания местоположения пользователя вам нужна очень веская причина, иначе приложение может быть не одобрено Apple Review.

Всплывающие напоминания

Реализация данного процесса не так проста, ни на стороне приложения, ни на стороне сервера.
На Android необходимо интегрировать Firebase для FCM (Firebase Cloud Messaging  отвечает за получение уведомлений в Android). Это означает, что в консоли Firebase должен быть создан смежный проект, загружен и добавлен в файл google-services.json, а также объявлены зависимости для его работы.
IOS немного проще при условии, что есть учетная запись разработчика с необходимым доступом к сертификатам и профилям. Нет необходимости регистрировать ваш проект на сторонней платформе (например, Firebase). Однако необходимо добавить код в AppDelegate.m или AppDelegate.swift, дабы отслеживать новые уведомления.
Обратите внимание, что уведомления для Android и iOS не всегда попадают в центр. Это происходит только тогда, когда приложение закрыто или находится в фоновом режиме. Если приложение, получившее новое уведомление, находится на переднем плане, указанное уведомление не будет отображаться в центре. Это нужно реализовывать вручную.
После того, как мы настроили Firebase для Android и включили функцию всплывающих уведомлений на iOS, нам нужно запросить у операционной системы уникальный идентификатор, на который мы сможем отправлять уведомления. Таким образом, у нас появится маркер, который каким-то образом будет генерироваться системой и идентифицировать наше приложение на определенном устройстве. Нам нужно будет отправить этот токен(уникальный идентификатор) на наш сервер и связывать его с пользователем.
Есть две сторонние интеграции, то есть Firebase и APNS (Apple Push Notification Service), на которые нужно отправлять различные данные, чтобы они, в свою очередь, могли переслать уведомление на устройство.
Вместо того чтобы реализовывать эти интеграции самостоятельно, необходимо рассмотреть несколько вариантов шлюза. Одним из таких является Firebase Admin SDK, для которого нам нужен ключ, чтобы наш сервер мог запрашивать Google API. Нам нужно получить ключ от console.cloud.google.com для GCM API.
Есть еще другой способ — PubNub. Однако он не является бесплатным, и в какой-то момент, во время разработки, появляются уведомления с 3-часовой задержкой.
И последнее, о чем стоит упомянуть, — это SNS от AWS. Он достаточно надежный и имеет единственный недостаток по сравнению с Firebase. Он не бесплатный.

Отчеты о сбоях и статистика пользователей

Отчеты о сбоях и пользовательская аналитика очень важны для поддержки приложений. Большинство компаний пользуются услугами Firebase для этих целей. Причины очень просты. Большинство компаний уже используют Google Analytics для своих вебсайтов, поэтому добавление мобильных пользователей в одну учетную запись Google Analytics – неплохая идея. Есть еще одна причина, и она состоит в том, что если у вас есть всплывающие уведомления на Android, то Firebase уже есть в вашем приложении. (не работает в случае с IOS, но это не так трудно интегрировать.)
Я бы рекомендовал Firebase Analytics для ведения статистики пользователей и Firebase Crashlytics для отчетов о сбоях. Не забудьте добавить архив dSYMs в Firebase для проекта iOS. Это необходимо для того, чтобы в случае сбоя Firebase Crashlytics явно указывать на ошибку в коде.
dSYMs можно найти в iTunes Connect после загрузки сборки для вашего приложения. Обязательно разрешите использование символов в настройках сборки XCode.

Встроенные функции (BLE, Airdrop, Touch ID, Face ID, Fingerprint)

Реализация этих функций очень усложняет процесс разработки.
Давайте реализуем биометрическую аутентификацию в приложении. Обычно это выглядит вот так: при первом открытии приложения вам необходимо либо зарегистрироваться, либо войти в систему, если у вас уже есть учетная запись. Сразу после входа в приложение, приложение обычно должно спросить, хотите ли вы активировать биометрическую аутентификацию или нет. После активации вы также сможете управлять этим параметром, поэтому в меню настроек нужно сделать кнопку деактивации.
Также нужно реализовать выход пользователя из приложения. Обычно выход из системы отправляет пользователя обратно на экран входа в систему. Когда пользователь попадает на экран входа в систему, автоматически запрашивается биометрическая аутентификация.Не очень хорошо попросить пользователя войти сразу после того, как он вышел из приложения, поэтому нужно просто добавить кнопку под полем с вводом пароля: “Войти в систему с помощью Touch ID?” — которая, в свою очередь, активирует процесс биометрической аутентификации.

Аутентификация

Очевидно, что аутентификация зависит от реализации API сервера. Наиболее распространенными решениями являются аутентификация на основе файлов cookieoAuth или токенов.
Некоторые компании могут использовать разные формы аутентификации, такие как LDAP или использовать Amazon Cognito. Другие используют методы “социальной аутентификации” — с помощью GoogleFacebookInstagramLinkedIn или других. Это также означает, что нам нужно сохранять некоторую информацию в приложении, в большинстве случаев, сразу после входа в систему. Таким образом, Redux и ReduxPersist должны быть интегрированы в проект. Это добавляет сложности как с точки зрения дизайна, так и читабельности исходного кода.
Если приложение использует RNN (реакционно-нативная навигация) вместо реакционной навигации, то добавление Redux становится еще более сложным.
TouchIDFaceID и идентификация по отпечатку пальца также являются очень важными функциями. Особенно в приложениях с конфиденциальной информацией. Существуют кроссплатформенные решения, которые обрабатывают данные функции.
Как и в веб-разработке, хорошим тоном является унифицированная стилизация. В кроссплатформенных средах обычно есть css-подобный файл конфигурации, который затем можно использовать для визуальных компонентов.

Фоновые сервисы

Иногда фоновые сервисы необходимы для работы приложения. Отслеживание геолокации в фоновом режиме, получение уведомления и так далее. Однако существуют некоторые ограничения для фоновых сервисов. Особенно на iOS. На самом деле, реализация фоновых сервисов на IOS задача не из легких. Идея заключается в том, чтобы отправлять и получать Intents между основным потоком и фоновыми сервисами. Вам нужно хорошо изучить API!
На iOS фоновые сервисы имеют ограниченный срок службы. В основном они используются для завершения задач, запущенных во время работы приложения и на переднем плане. Приложение будет закрыто операционной системой, если оно слишком долго оставалось в фоновом режиме. Время, отведенное для фонового сервиса, зависит от доступных ресурсов и версии вашей системы.
Также обратите внимание, что некоторые методы жизненного цикла не будут вызываться, если фоновые службы были зарегистрированы в вашем приложении.

I18n

Не забывайте об интернационализации при разработке приложений. Фреймворки для нативных и кроссплатформенных приложений предлагают простые способы поддержки i18n. Однако использование этого функционала и проверка того, что каждый ярлык переведен, требует немного времени и усилий.
Также могут возникнуть неожиданные проблемы. Вот например, одна проблема, с которой я недавно столкнулся, заключалась в использовании языкового стандарта для телефона ( «en-GB»). По какой-то неизвестной причине приложение зависало в продакшене. Но проблему я решил. Языковые стандарты того времени были строчными, поэтому нужно было загружать его не как «en-GB», а «en-gb».

Оффлайн

Сегодня практически каждое приложение нуждается в интернет-соединении. Но что происходит, когда теряется соединение? Это следует учесть. Приложение должно локально кэшировать некоторые данные, включить навигацию к нескольким автономным представлениям, быть в состоянии представить то, что уже было сохранено локально, и как-то объяснить пользователю с помощью уведомлений, что некое представление ограничено из-за отсутствия соединения.

Анимация

Анимация это как глазурь на торте. Библиотека, которую я предлагаю, сделает все проще — Lottie из AirBnb. Ее можно использовать на AndroidiOS, на ReactNative или на любом другом устройстве. Ее можно использовать для отображения небольших анимированных представлений в приложении.
Другие анимации, интегрированные в приложение, могут быть реализованы с использованием собственных библиотек анимации для iOS и Android. Расширенными и очень полезными библиотеками являются Facebook / Pop и Facebook Rebound для iOS и Android соответственно.

Заключение

При разработке нового приложения большинство из нас совершает ошибку, думая об этом очень поверхностно. Многие функции, которые мы видим в каждом приложении и считаем неотъемлемой частью приложения, не учитываются при планировании приложения. Понятно, что за исключением одного или двух компонентов, описанных выше, все остальные являются обязательными компонентами современного приложения. Очевидно, что качество разработки также зависит от используемой платформы / технологии.

Applications
Поделиться:
14+