Væksten i mobile IoT-apps
IoT-industrien (Internet of Things) har oplevet en massiv vækst i de seneste år takket være fremskridtene inden for teknologi. Industrier som sundhedspleje, bilproduktion, smarte hjem har vedtaget denne nye tendens med sammenkoblede systemer. Skiftet til, at hverdagens enheder blev smartere, introducerede nødvendigheden af en grænseflade til at „kommunikere“ mellem den menneskelige faktor og selve enheden. Hvad er det nemmeste tilgængelige værktøj, der kan udføre dette job? Smartphonen!
Hvis du vil udvikle en mobilapplikation i denne nye IoT-verden, undrer du dig måske over, hvilket er det mest effektive værktøj til dette job? Selvom der ikke er nogen klar vinder her, vil jeg i denne artikel gerne kaste lys over en tværplatformsløsning - Flutter, og hvorfor det kan være en god løsning til din næste idé. (Hvis du vil læse mere om fordelene ved Flutter og cross-platform framework, kan du læse mere om det i vores tidligere artikel).
Brug af Flutter i smart-home-industrien
Jeg kan huske, da Ioana, min nuværende manager, sendte en besked til mig på Slack og bad om et opkald for at give mig en mulighed for at arbejde på en ny mobil IoT-applikation i smart home-branchen. Som mobilsoftwareingeniør var jeg begejstret for at kunne opleve, hvordan software på en smartphone interagerer med en fysisk enhed, så jeg har accepteret udfordringen med det samme.
Efter at den oprindelige hype forsvandt, begyndte vi at tale mere om projektet, så et af mine første spørgsmål var:
Luci: „Okay, så vi har brug for to separate applikationer: en til Android ved hjælp af Kotlin/Java og en til iOS ved hjælp af Swift/Objective-C, ikke?“.
Ioana: „Nej, Luci, bare en til begge operativsystemer. Med Flutter og Dart“
Hvad fanden Flutter?!
Flutter-udviklingsbegrænsninger
Selvom jeg altid har været en Flutter-entusiast, havde jeg mine egne indledende tvivl. Indtil da var mit sind bestemt på, at tværplatformsløsninger kun var et godt valg til at bygge „weblignende“ apps til mobile enheder.
Mobile IoT-applikationer kræver mere end en kommunikation med en backend-server. Det inkluderer normalt Bluetooth/Wi-Fi-funktionalitet, hvilket ofte resulterer i flere operationer såsom scanning, tilslutning, læsning/skrivning af data til en fysisk enhed.
Projektet krævede en mobilapplikation, der ville kommunikere via Bluetooth med en fysisk enhed. Hvert operativsystem har sin egen måde at få adgang til Bluetooth-funktionalitet på, så mit spørgsmål var: vil Flutter være en pålidelig, ydende og nem løsning til udvikling af en sådan app?
Udvikling af Bluetooth-funktioner ved hjælp af Flutter
Før jeg startede projektet, har jeg undersøgt mere om mulighederne for at bruge et plugin til at løse vores problemer.
For lidt kontekst er et plugin en speciel pakke, der afslører native funktionaliteter (skrevet med platformspecifik kode) for at være let tilgængelige af Flutter-rammen.
Da jeg vidste, at Flutter er stærkt understøttet af open source-samfundet, var jeg glad for at finde ud af, at der var et imponerende antal plugins, der løste Bluetooth-problemet.
Senere lærte vi, at dette projekt allerede havde en indbygget løsning på plads til specifikke Bluetooth-funktionaliteter med broen, der allerede er oprettet i Flutter. Vores opgave var at udvide Bluetooth-komponenten, skræddersyet til vores applikations behov.
På grund af Flutters fantastiske dokumentation gik processen problemfrit, og på ingen tid havde vi alle de funktionaliteter, vi havde brug for, og vi kunne fokusere på andre dele af projektet.
Fordelene ved at opbygge IoT-mobilapplikationer med Flutter
Som du kan se, kan man ikke hele tiden gå med et plugin og løse alle problemerne. Nogle gange kræves der stadig indbygget kode, så du undrer dig måske, hvorfor ikke gå med en indbygget løsning i første omgang? For at besvare dette spørgsmål er vi nødt til at se på det større billede.
Lad os overveje et eksempel, en mobilapplikation, der bruger Bluetooth til at oprette forbindelse og læse/skrive data til en enhed. Lad os overveje, at vi ønsker en brugerdefineret løsning til Bluetooth-funktionalitet, og vi vælger at skrive native kode til den del.
Fra et arkitektonisk synspunkt (advarsel - dette er ekstremt forenklet) kan vi opdele applikationen i præsentationslaget - brugergrænsefladen (UI) og datalaget - Bluetooth-kommunikationen.

Som vi kan se, deles brugergrænsefladen mellem apps, og datalogikken er opdelt i Android- og iOS-implementeringer. Selvom vi allerede kan se en fordel ved kun at opbygge brugergrænsefladen én gang, er diagrammet ovenfor ikke 100% nøjagtigt.
Vi overvejede kun kommunikationsdelen, men når det kommer til mobile IoT-applikationer, er der mere end en forbindelse til en enhed og læsning af data. Du analyserer normalt disse data, præsenterer nogle diagrammer, advarer brugeren med underretninger, gemmer dem lokalt eller i skyen, og listen kan fortsætte. Når det er sagt, ville et diagram tættere på virkeligheden se sådan ud:

Bonus nummer 1: skrivning af platformspecifik kode er veldokumenteret af Flutter-teamet, og en udvikler, der er bekendt med Dart, vil let hente sprog som Kotlin til Android og Swift til iOS. Det meste af tiden er der ikke behov for dybdegående kendskab til hele det underliggende operativsystem. (Men det kan selvfølgelig hjælpe)
Bonus nummer 2: oprettelse af smukke og komplekse brugergrænseflader i Flutter er en hurtig og fornøjelig udvikleroplevelse, samtidig med at den opretholder god ydeevne.
Så, skal du vælge Flutter til mobile IoT-apps?
Der er mange gode valg til udvikling af mobile applikationer, og det er svært at vælge nummer 1-løsningen, da hver projektidee er forskellig. Men hvis du vil have en mobilapplikation med reducerede omkostninger, nem vedligeholdelse og uden ofre for brugeroplevelse og ydeevne, er Flutter den rigtige løsning for dig, selv til mere krævende applikationer som dem i IoT-domænet.