Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Работая над разнообразными бизнес-задачами с помощью Flutter, мы часто сталкиваемся с отсутствием готовых решений. Поэтому команда Mad Brains создает собственные и делится ими с ИТ-сообществом. В этом материале мы рассказываем, как наши библиотеки помогают Flutter-разработчикам и бизнесу.
Статья вышла в свет благодаря ведущему разработчику Flutter-направления Mad Brains Ильнару. Он и его коллеги создали и поддерживают библиотеки, о которых пойдет речь.
AppMetrica‑Push‑Flutter
Клиенту нужен был российский сервис пуш-уведомлений с поддержкой Android, iOS, Huawei. Из всего списка, что мы им представили, больше всего подошел Яндекс AppMetrica: в нем была как аналитика, так и нужные для заказчика пуши.
На этапе анализа разных сервисов мы знали, что у AppMetrica есть SDK под Flutter на pub.dev. Она состоит из двух частей:
AppMetrica SDK — ядро, включающее в себя аналитику и связь с сервером AppMetrica;
AppMetrica Push SDK — включает обработку пушей и интеграцию с ядром.
Проблема была в том, что плагин ядра под Flutter был хоть немного актуальным, а AppMetrica Push SDK под Flutter — нет: не поддерживался ряд возможностей, которые есть в нативном SDK и не поддерживался Huawei.
В итоге мы сделали свой плагин на основе нативных AppMetrica Push SDK с полной поддержкой всего, что возможно, и поддержкой Huawei. Оно также требует ядро AppMetrica SDK для своей работы, поэтому мы интегрировали его с готовым плагином от Яндекса AppMetrica.
Наш плагин заточен чисто под работу с пуш-кампанией Яндекса AppMetrica:
получение и отображение Push-уведомлений;
получение Silent Push-уведомлений (и автоматическое обновление токенов через Silent Push);
обработка payload из уведомлений;
отображение изображений в уведомлениях;
поддержка действия deeplink при открытии уведомления;
поддержка действия URL при открытии уведомления.
Про интеграции можно прочитать тут — https://appmetrica.yandex.ru/about/.
Для любителей видео-контента — ролики по теме на нашем YouTube-канале:
Настройка пушей в Firebase+Flutter
Кастомизация пушей в Android
Настройка пушей в iOS
Кастомизация пушей в iOS
Недавно AppMetrica Push SDK для Flutter от Яндекса обновился, но там все еще нет ряда возможностей, которые есть в нашей библиотеке, и пока нет поддержки Huawei.
Tinkoff Acquiring
В одном из проектов нам требовалось реализовать оплату товаров с помощью банковской карты, Google Pay, Apple Pay и обязательно через российский банк. Готовых решений для Flutter не было. Поэтому мы разработали первую открытую библиотеку Тинькофф для Flutter-разработчиков.
Функционал библиотеки:
проведение платежей, в том числе рекуррентных;
сохранение банковских карт клиента;
получение информации о клиенте и сохраненных картах;
управление сохраненными картами;
интеграция с онлайн-кассами;
оплата через Систему быстрых платежей (СБП), QR-ссылки.
Об этом SDK мы подробно писали на Хабр. Правда, с момента выхода статьи значительная часть кодовой базы обновилась.
А как создать Package, рассказываем в этом видео.
Sberbank Acquiring
Функционал похож на библиотеку Tinkoff Acquiring. История похожа: других библиотек для СберБанка на Flutter не было, поэтому написали свою. Был один нюанс — оплата у Сбера происходит только через их сайт, мы открываем окно оплаты в WebView.
Возможности созданного решения:
проведение платежей, в том числе рекуррентных;
проведение платежей через Apple Pay или Google Pay;
связанные платежи;
интеграция с онлайн-кассами.
Подробно про работу Системы быстрых платежей рассказываем тут.
Yandex Geocoder
В разработке приложения для сети химчисток BIANCA нам понадобилось определять координаты по адресу, который вводит пользователь, отображать их на карте и передавать на сервер. Так как у нас уже были планы использовать карты от Яндекса, то и сервис геокодирования решили взять от него. К сожалению, готового плагина на pub.dev не было, но зато было открытое API от Яндекса. Поэтому мы создали плагин и выложили его на pub.dev, так как мы понимали что это еще понадобится в будущем.
Геокодер позволяет по названию адреса или объекта получить точные координаты, это прямое геокодирование. Также реализовано и обратное геокодирование путем ввода координат. Кроме того, в нем присутствуют подсказки при вводе адреса или объекта, что удобно для пользователей. Есть выбор топонима (когда вводят географическое название, например, города), а также возможность ограничить поиск указанной областью.
Важное преимущество: геокодер от Яндекса умеет работать с русским языком и полностью совместим с Яндекс.Картами.
Здесь работу с геолокацией и местоположением разбираем очень подробно.
App Runner
App Runner был написан спонтанно из-за большого количества проектов и постоянной переноски шаблонного кода для старта нового проекта. Изначально мы решали эту проблему, но со временем шаблон начал развиваться и перерос в нечто большее.
App Runner реализует правильный запуск Flutter-приложения, убирая задержку первой прорисовки виджета и показывая заставку, во время которой происходит инициализация всего приложения. Также в нем реализован перехват необработанных ошибок (от Dart и Flutter), конфигурирование WidgetsBinding и Zone, переопределение экрана ошибки, возможность перезагружать дерево виджетов.
Про App Runner с подробной демонстрацией мы записали видео.
Mad Pay
Для приложения сети кинотеатров Мираж мы реализовывали покупку билетов через Apple Pay и Google Pay. Взяли единственную на тот момент библиотеку, но оказалось, что в ней есть некоторые недочеты. Сначала мы решили их поправить, и Ильнар отправил pull request (слияние моих изменений с изменениями автора). Время шло, автор не отвечал, мы начали создавать библиотеку с нуля.
Mad Pay — это библиотека для мобильной оплаты через Apple Pay и Google Pay. Она вызывает нативное окно оплаты, в котором видно информацию о заказе и можно выбрать карту. После выбора карты и нажатия «оплатить» формируется токен, который нужно передать в банк интернет-эквайринга, в котором происходит оплата.
Немного обидный момент: в 2021 году, Google сделал похожую библиотеку. Как вы понимаете, конкурировать с Google по популярности и поддержке сложно. Но наше решение по-прежнему работает и поддерживается, поэтому можете им пользоваться.
Для тех, кто хочет посмотреть подробные разборы о Mad Pay:
Как сделать оплату Apple Pay и Google Pay
Покупки в приложениях
Разбор платежных систем для Android-устройств
Такой обзор получился от Flutter-команды Mad Brains. Рады, если наша работа облегчит жизнь другим разработчикам. Пишите в комментариях, помогли ли вам эти библиотеки, задавайте вопросы или расскажите, каких плагинов для Flutter вам не хватает.