<?xml version="1.0"?>
<rss version="2.0"><channel><title>Made with FGX Native</title><link>https://forum.fgx-native.com/blogs/blog/4-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D0%BD%D0%BE-%D0%BD%D0%B0-fgx-native/</link><description></description><language>en</language><item><title>iDRIVE &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x430; &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x43D;&#x433;&#x430; &#x413;&#x41B;&#x41E;&#x41D;&#x410;&#x421;&#x421; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;</title><link>https://forum.fgx-native.com/blogs/entry/48-idrive-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0-%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3%D0%B0-%D0%B3%D0%BB%D0%BE%D0%BD%D0%B0%D1%81%D1%81-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2/</link><description><![CDATA[<p>
	Доброго дня, уважаемые пользователи <strong>FGX Native</strong>.
</p>

<p>
	Наши клиенты делают интересные проекты на базе нашего продукта, однако, к сожалению, об этом знаю только я в результате получения обратной связи по <strong>FGX Native</strong>. Мне кажется, что всем было бы интересно узнать о таких приложениях, о применяемых возможностях <strong>FGX Native</strong> и об использованных технических решениях. Сегодня я начну с обзора приложения, которое первоначально задумывалось, как приложения для каршеринга. Однако, в ходе разработки, области применения гораздо расширились за счет универсальности разработанного решения. Но обо всем по порядку.
</p>

<p>
	<img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3643" data-unique="xsyp3724p" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.3d934ba469f88a268ae8272d914d04b0.png" loading="lazy" height="730.08"> <img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3645" data-unique="5f3wdkef1" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.7a1f1674ca47d45ef542307e1aa5f7d3.png" loading="lazy" height="730.08"> <img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3646" data-unique="jrxsr9l9s" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.5af06c3ac6b85ad910d8735876fd4571.png" loading="lazy" height="730.08"> <img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3647" data-unique="mn4rga545" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.f989638f35cbb490cef2edbd820a9030.png" loading="lazy" height="730.08"></p>

<hr><p>
	<span style="font-size:16px;"><span style="color:#e74c3c;"><strong>Далее приведен текст автора <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.fgx-native.com/profile/69-r3h0soft/?do=hovercard" data-mentionid="69" href="https://forum.fgx-native.com/profile/69-r3h0soft/" rel="">@r3h0soft</a>.</strong></span></span>
</p>

<p>
	Перед нами стояла задача реализовать программный комплекс мониторинга за <strong>ГЛОНАСС</strong> устройствами, который бы включал возможности:
</p>

<ul><li>
		Отслеживание местоположения устройств
	</li>
	<li>
		Мониторинг телеметрии
	</li>
	<li>
		Формирование различных отчётов за выбранный период времени
	</li>
	<li>
		И т.д.
	</li>
</ul><p style="text-align: justify;">
	В комплекс входило так же и мобильная разработка, при которой стоило преимущественно выбрать среду разработки с лаконичными и понятным кодом имеющим в комплекте кроссплатформенной реализации. Выбор остался за <strong>Delphi</strong>. Мобильное приложение должно было отвечать всем требованиям на текущий момент что касаемо UI, отзывчивый интерфейс, анимации, поддержкой API и т.д.  Но если с реализацией бэкенд всё было прозрачно, то неотъемлемой частью разработки UI было не всё гладко с использованием <strong>FireMonkey</strong>. Выбор пал на <strong>FGX Native</strong>, который предлагает все инструменты для простой и лёгкой разработки и решению поставленных задач.
</p>

<p style="text-align: justify;">
	В <strong>FGX Native</strong> реализовано собственное уникальное решение реализации UI, за основу взята система позиционирования <strong>FlexBox</strong>. С его помощью можно на лету, только через свойства компонента, реализовать UI любой сложности, которое будет одинаково выглядеть при любом разрешении устройств без единой строчки кода. Этот подход значительно ускорил процесс разработки и позволил сосредоточится на построении логики приложения, не загромождая код, вычислениями позиционирования элементов интерфейса.
</p>

<p style="text-align: justify;">
	<strong><span style="font-size:22px;">Карты</span></strong>
</p>

<p>
	Данный проект сложно представить без отражения мониторинга в режиме реального времени. За основу мы взяли компонент карт <strong>TfgMap </strong>с возможностью отображать маркеры, полигоны, географические зоны, строить маршруты, используя линии с большим количеством объектов. Удивила скорость работы компонента и его плавность. Одной из приятных функций для нашего проекта оказалась стилизация карт. Это позволило нам настроить внешний вид карты, чтобы он не выбивался из общего дизайна интерфейса. Одной из задач при использовании карт было построение маршрута, реализовав парсер точек по заданному диапазону времени с необходимой информацией о состоянии объекта и его положении <strong>GPS</strong>, используя фильтр настойки для разграничения маршрута использовали состояния "простоя" объекта, и иные события при которых объект не выполнял движения. Так мы получили точный список точек перемещения и реализовали отображение через поли линии. Через свойства реализации в <strong>FGX Native</strong>, мы смогли стилизовать под свои нужды, зная определенные участки состояния объекта смогли через маркеры объектов вывести определенные состояния (к примеру, участки превышения скорости). Хорошим моментом послужило что точками можно взаимодействовать присвоив им ID, так можно получить дополнительную информацию в любом участке трекера просто выбрав точку на карте. Конечно, в будущем очень хотелось бы использовать некую сущность для маркера имеющую стиль, для наполнения его своими объектами как в TfgCollectionView и отображения определенных маркеров при определенных состояниях.
</p>

<p>
	Сами маркеры добавляются легко через менеджер объектов.
</p>

<p>
	<img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3643" data-unique="z6xd1tcx3" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.3d934ba469f88a268ae8272d914d04b0.png" loading="lazy" height="730.08"> <img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3645" data-unique="jzlxuiqpe" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.7a1f1674ca47d45ef542307e1aa5f7d3.png" loading="lazy" height="730.08"> <img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3648" data-unique="jsaley6d3" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.227350f14f753d1905c534658e225ca4.png" loading="lazy" height="730.08"></p>

<p>
	<strong><span style="font-size:22px;">Списки</span></strong>
</p>

<p>
	Не обошлось и без списков, следовало подгружать объекты в стилизованные карточки одного списка, не нагружая при этом систему, с плавность отрисовки и высокой скоростью. Для решения данной задачи взят <strong>TfgCollectionView</strong>. Этот компонент отвечает всем требованиям и прост как и все другие решения библиотеки в освоении.  Мы использовали списки, как для формирования меню навигации, так и для отображения маршрутов, истории поездок и т.д. Чтобы не нагружать приложение разными формами, мы использовали выдвигаемые панели сбоку <strong>TfgDrawerLayout</strong> и снизу <strong>TfgBottomSheetLayout</strong>. С помощью этих компонентов решена задача быстрого доступа к данным истории телеметрии при этом не нагружая интерфейс и проект дополнительными формами.
</p>

<p>
	 
</p>

<p>
	Не обошлось и без списков, следовало подгружать объекты в стилизованные карточки одного списка, не нагружая при этом систему, с плавность отрисовки и высокой скоростью. Для решения данной задачи взят <strong>TfgCollectionView</strong>. В списках мы добавили нужные нам стили объектов списка, что позволило генерировать нужный по событию изменяя только имя стиля, это удобно. Единственное чего не хватило, так это свайпа по элементам списка (лево/право). В общем и целом, этот компонент отвечает всем требованиям и прост как и все другие решения библиотеки в освоении.  Мы использовали списки, как для формирования меню навигации, так и для отображения маршрутов, истории поездок и т.д.
</p>

<p>
	Чтобы не нагружать приложение формами, мы использовали выдвигаемые панели сбоку <strong>TfgDrawerLayout</strong> и снизу <strong>TfgBottomSheetLayout</strong>. С помощью этих компонентов решена задача быстрого доступа к данным истории телеметрии при этом не нагружая интерфейс и проект дополнительными формами.
</p>

<p>
	<img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3649" data-unique="o1ko1n2wv" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.703781075c3e35deaa17891ffe759e01.png" loading="lazy" height="730.08"> <img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3650" data-unique="757k265ta" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.6988218714f2bc07a7122ee76552008f.png" loading="lazy" height="730.08"> <img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3651" data-unique="69bfxiwqi" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.b8286bda53d7f6cf8083f912f19bdd62.png" loading="lazy" height="730.08"><br>
	 
</p>

<p>
	<span style="font-size:22px;"><strong>Анимация</strong></span>
</p>

<p>
	Чтобы оживить интерфейс и порадовать пользователя внешним видом было принято решение встроить готовые сценарии анимации. В одном из обновлений FGX Native появилась поддержка продвинутых анимаций <a href="https://forum.fgx-native.com/blogs/entry/39-%D0%B0%D0%BD%D0%BE%D0%BD%D1%81-11350-%D0%B8-lottie-%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F/" rel="">Lottie</a>. Мы нашли готовые примеры анимации и просто встроили их в пару кликов. Таким образом получился такой вот симпатичный экран:
</p>

<p>
	<video class="ipsEmbeddedVideo" controls="" data-fileid="3652" data-unique="q0967fziz" id="ips_uid_9211_6" src="https://forum.fgx-native.com/uploads/monthly_2022_09/AddingDriver.mp4.c193ed45bcc8eacfaaf26818cb7c2965.mp4" style="max-width:320px" data-controller="core.global.core.embeddedvideo" preload="metadata"><source type="video/mp4" src="https://forum.fgx-native.com/uploads/monthly_2022_09/AddingDriver.mp4.c193ed45bcc8eacfaaf26818cb7c2965.mp4"><a class="ipsAttachLink" data-fileext="mp4" data-fileid="3652" href="https://forum.fgx-native.com/applications/core/interface/file/attachment.php?id=3652&amp;key=793fb5442a03319579a89f90c941935c" rel="">AddingDriver.mp4</a>
	</source></video></p>

<p>
	Так же имеется и конструктор анимации для самих компонентов, мы использовали анимацию тряски для неправильного ввода пароля и анимацию появления для уведомлений.
</p>

<p>
	<strong><span style="font-size:22px;">Сканер штрих кодов</span></strong>
</p>

<p>
	В ходе работы с приложением, пользователю необходимо выполнить регистрацию <strong>ГЛОНАСС </strong>устройства. Можно было бы ограничится вводом в ручную серийного номера, указанного на устройстве. Однако, мы воспользовались готовым сканером штрих кодов <strong>TfgBarcodeScanner</strong> и камерой <strong>TfgCamera</strong> и сделали эту процедуру автоматической.
</p>

<p>
	<img alt="image.png" class="ipsImage ipsImage_thumbnailed" data-fileid="3647" data-unique="udamwjuwj" style="height: auto;" width="338" src="https://forum.fgx-native.com/uploads/monthly_2022_09/image.png.f989638f35cbb490cef2edbd820a9030.png" loading="lazy" height="730.08"></p>

<p>
	<strong><span style="font-size:22px;">Уведомления и монетизация</span></strong>
</p>

<p style="text-align: justify;">
	Любое приложение каршеринга - это контроль за местоположением транспортного средства. И в нашем случае это не исключение. Нам нужно было уведомлять пользователя при определенных событиях телеметрии устройства (вход/выход из геозоны, состояния устройства, ДТП, включения зажигания). Для этого мы использовали локальные уведомления. А вот для системных уведомлений, таких как "обновление приложения" или "необходимости оплаты" легко реализованы с помощью Push уведомлений на базе <strong>FGX</strong> и <strong>Firebase</strong>.
</p>

<p style="text-align: justify;">
	Кстати, среди поставляемых примеров, вы найдете много готовых решений и примеров возможностей библиотеки.
</p>

<p style="text-align: justify;">
	Хотите иметь возможность монетизации в приложении будь то подписка или продажа, для этого есть готовые компоненты оплаты, как для Android так и iOS.
</p>

<p>
	<strong><span style="font-size:22px;">Реализация авторизации</span></strong>
</p>

<p>
	Как и любое приложение, работающее с пользователя, нам необходимо было организовать процесс авторизации. Мы использовали <strong>Firebase</strong>, реализация выполнена с помощью <strong><a href="https://github.com/SchneiderInfosystems/FB4D" rel="external nofollow">FB4D</a></strong> библиотеки, в <strong>FGX </strong>имеется возможность легко реализовать авторизацию и с помощью <strong>Google Sign</strong>, <strong>Facebook</strong>, <strong>VK</strong>, <strong>AppleID</strong>, что не может не радовать. Основная база крутится на <strong>PostgreSQL</strong>, используя штатные компоненты <strong>FireDAC</strong>. Общение построено с использованием <strong>REST API</strong>, чьим ответственным выступил <a href="https://github.com/danieleteti/delphimvcframework" rel="external nofollow">DelphiMVCFramework </a> фреймворк. Как видно, <strong>FGX Native</strong> не конфликтует с различными сторонними решениями, что позволяет расширять возможности разработки приложений любой сложности и поставленных задач.
</p>

<p>
	<strong><span style="font-size:22px;">Bluetooth</span></strong>
</p>

<p>
	Не обошлось и без штатных задач управления устройством с помощью <strong>Bluetooth </strong>, мы использовали стандартные средства <strong>Delphi RTL</strong> для синхронизации и управления модулем через <strong>Bluetooth</strong>.
</p>

<p>
	<span style="font-size:22px;"><strong>Итог</strong></span>
</p>

<p>
	Это лишь малая часть которой хотел поделиться, возможности <strong>FGX Native</strong> для нас очень обширны, мы реализовали разные сложные проекты с его помощью, о которых я расскажу напишу в следующих статьях. Среди таких:
</p>

<ul><li>
		Мониторинг за сотрудниками (курьерами, работниками, водителям где устройством мониторинга выступает мобильное приложение на FGX с использованием сервисов фоновой локации и состоянием устройства, мониторинга задач и управления через Bitrix),
	</li>
	<li>
		личный кабинета клиента микрофинансовой компании,
	</li>
	<li>
		личный кабинет клиентов интернет провайдера,
	</li>
	<li>
		управление модулем автопилота для лодок fishboat по Bluetooth и многое другое.
	</li>
</ul><p>
	<strong>FGX Native</strong> - это лучшее решение для нас!
</p>
]]></description><guid isPermaLink="false">48</guid><pubDate>Thu, 10 Nov 2022 21:23:00 +0000</pubDate></item><item><title>&#x41F;&#x43E;&#x431;&#x435;&#x434;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; Welcome &#x432; &#x435;&#x436;&#x435;&#x43C;&#x435;&#x441;&#x44F;&#x447;&#x43D;&#x43E;&#x43C; &#x43A;&#x43E;&#x43D;&#x43A;&#x443;&#x440;&#x441;&#x435; Embarcadero</title><link>https://forum.fgx-native.com/blogs/entry/28-%D0%BF%D0%BE%D0%B1%D0%B5%D0%B4%D0%B0-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-welcome-%D0%B2-%D0%B5%D0%B6%D0%B5%D0%BC%D0%B5%D1%81%D1%8F%D1%87%D0%BD%D0%BE%D0%BC-%D0%BA%D0%BE%D0%BD%D0%BA%D1%83%D1%80%D1%81%D0%B5-embarcadero/</link><description><![CDATA[<p>
	Нам очень приятно поделиться с вами этой новостью. Одно из приложений, написанных на <strong>FGX Native, </strong>победило в ежемесячном конкурсе <strong>Delphi</strong> приложений от <strong>Embarcadero</strong>. Это приложение -  аудио-гид по достопримечательностям разных городов с поддержкой нескольких языков.
</p>

<p>
	Поздравляем Романа с успехом и желаем ему не останавливаться на достигнутом!
</p>

<blockquote class="ipsQuote" data-gramm="false" data-ipsquote="">
	<div class="ipsQuote_citation">
		Цитата
	</div>

	<div class="ipsQuote_contents ipsClearfix" data-gramm="false">
		<p>
			Welcome - тысячи аудио прогулок и экскурсий по городам и музеям всего мира, составленные местными жителями и профессионалами-экскурсоводами
		</p>

		<p>
			С нашим приложением ты можешь узнать много интересных историй даже не выходя из дома
		</p>

		<p>
			Удивительные рассказы и виртуальные прогулки в твоем телефоне. Устраивайся поудобнее и выбирай интересное тебе место
		</p>
	</div>
</blockquote>

<ul><li>
		<strong>Приложение в Play Market</strong>: <a href="https://play.google.com/store/apps/details?id=ru.wc2.welcome&amp;hl=ru&amp;gl=US" ipsnoembed="true" rel="external nofollow">https://play.google.com/store/apps/details?id=ru.wc2.welcome&amp;hl=ru&amp;gl=US</a>
	</li>
	<li>
		<strong>Ссылка на конкурс Embarcadero</strong>: <a href="https://delphi.embarcadero.com/delphi26th-welcome-a-spectacular-mobile-app-for-travelers-made-in-delphi/" ipsnoembed="true" rel="external nofollow">https://delphi.embarcadero.com/delphi26th-welcome-a-spectacular-mobile-app-for-travelers-made-in-delphi/</a>
	</li>
	<li>
		<strong>Автор:</strong> <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.fgx-native.com/profile/73-roman/?do=hovercard" data-mentionid="73" href="https://forum.fgx-native.com/profile/73-roman/" id="ips_uid_910_6" rel="">@Roman</a>
	</li>
</ul><p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="2450" href="https://forum.fgx-native.com/uploads/monthly_2021_05/photo_2021-05-24_00-12-09.jpg.b633190d26f7c813e52e52ab60fc7050.jpg" rel=""><img alt="photo_2021-05-24_00-12-09.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="2450" data-unique="bx19fqeq2" style="width: 250px; height: auto;" width="337" src="https://forum.fgx-native.com/uploads/monthly_2021_05/photo_2021-05-24_00-12-09.thumb.jpg.47b785b631310dc2635e3663c970e038.jpg" loading="lazy" height="748.14"></a><a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="2451" href="https://forum.fgx-native.com/uploads/monthly_2021_05/photo_2021-05-24_00-12-10.jpg.7962ce4db590527e5c16cb23189c78f1.jpg" rel=""><img alt="photo_2021-05-24_00-12-10.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="2451" data-unique="ji4e8j0cs" style="width: 250px; height: auto;" width="337" src="https://forum.fgx-native.com/uploads/monthly_2021_05/photo_2021-05-24_00-12-10.thumb.jpg.a123c7d5a1341ecd3ad04ec9f92eb091.jpg" loading="lazy" height="748.14"></a><a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="2452" href="https://forum.fgx-native.com/uploads/monthly_2021_05/photo_2021-05-24_00-12-12.jpg.302c0b090d9b768a95d5b34a8c62c33d.jpg" rel=""><img alt="photo_2021-05-24_00-12-12.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="2452" data-unique="r9sq5g9nm" style="width: 250px; height: auto;" width="337" src="https://forum.fgx-native.com/uploads/monthly_2021_05/photo_2021-05-24_00-12-12.thumb.jpg.ca7c6bef09cd507847f0d018d833f528.jpg" loading="lazy" height="748.14"></a><a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="2453" href="https://forum.fgx-native.com/uploads/monthly_2021_05/photo_2021-05-24_00-12-14.jpg.d26ca9e08b2ac1b95e722003b3125d7d.jpg" rel=""><img alt="photo_2021-05-24_00-12-14.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="2453" data-unique="cwbvzloaj" style="width: 250px; height: auto;" width="337" src="https://forum.fgx-native.com/uploads/monthly_2021_05/photo_2021-05-24_00-12-14.thumb.jpg.39b4513c54b6ecee8ce03f408d15abb6.jpg" loading="lazy" height="748.14"></a>
</p>]]></description><guid isPermaLink="false">28</guid><pubDate>Sun, 23 May 2021 21:13:00 +0000</pubDate></item></channel></rss>
