Prvotný mediálny ošiaľ krútiaci sa okolo oficiálneho začiatku osvetovej kampane za bezpečné šoférovanie je úspešne za nami. Okrem objasnenia kľúčovej myšlienky by sme vám radi priblížili i technickú časť našej práce – mobilnú aplikáciu. Bolo pre nás veľkou výzvou chopiť sa projektu, ktorý možno z hľadiska použitých technológií charakterizovať ako nadštandardný. Predsa len, navigačný softvér nevidíme v každej aplikácii a aj napriek počiatočnému oťukávaniu sme potiahli za ten správny koniec a klientovi doručili plne-fungujúci produkt. Poďme však pekne poporiadku.

Ako budeme navigovať?

Pred samotnou analýzou aplikácie bolo nutné vybrať navigačné SDK, teda akýsi modul, ktorý nám po vložení do aplikácie zastreší množstvo úkonov spojených s programovaním navigačnej časti aplikácie. Hlavnou požiadavkou na SDK-čko bola okrem klasického navigovania užívateľa z bodu A do bodu B taktiež schopnosť detekovať driving behaviour, teda štýl jazdy zahŕňajúci napríklad prekročenie rýchlosti za volantom. Za kvalitou sme však vôbec nemuseli chodiť ďaleko. Domáci Sygic spĺňal všetky našej požiadavky. Nasledovalo už len dôkladné projektové plánovanie a hurá zodierať klávesy.

Tisícky riadkov kódu

Najkomplikovanejšou pasážou bola jednoznačne obrazovka navigácie. Čo všetko sa skrýva za známou šípkou pohybujúcou sa po vykresľovanej trase? Pri tvorbe aplikácie sme v prvom rade dodržiavali UI a UX dizajn originálnej navigácie Sygic pre čo možno najautentickejší zážitok z používania rokmi overeného navigačného systému. Po tejto implementácii nasledovalo rozsiahle prepájanie navigácie so zvyškom aplikácie. Tok obrazoviek, správne odosielanie dát na pozadí v opačnom prípade by znamenali zlyhanie celého systému a najhorší možný scenár – pád aplikácie.

Obe platformy sme vyvíjali natívne, čo v konečnom dôsledku predstavovalo dvojnásobné overovanie správnej funkčnosti pribúdajúceho kódu a využívanie natívnych prvkov vychádzajúcich z konkrétnej platformy. V prípade iOS sa programovacím jazykom stal Objective-C z dôvodu zachovania pôvodného jazyku aplikácie Extra výhody. Jedným dychom však dodávame, že nové projekty programuje výhradne vo Swifte. Android stavil na Javu kombinovanú s čoraz zaužívanejším Kotlinom.

Testovanie, testovanie, testovanie…

Teoretická funkčnosť napísaného kódu spojeného s navigáciou je jedna vec. Či však navigácia bude fungovať i v praxi, je vec druhá, a to podstatne dôležitejšia. Po každom dosiahnutom míľniku sme sa preto zdvihli zo stoličky a otestovali navigáciu v jej prirodzenom prostredí – za volantom. V zmysle bezpečného šoférovania sme jazdili v skupinkách, a kým jeden dával pozor na zodpovedné šoférovanie, druhý kontroloval naprogramované výsledky zahŕňajúc opravovanie drobných bugov v odstavenom aute na čerpacích staniciach. A vraj že programovanie nemôže byť zábavné. 🙂

Ako hodnotíme vodičov?

V rámci kampane komunikujeme dva zásadné problémy súčasných vodičov: Používanie telefónu a prekračovanie rýchlosti. A kým prekračovanie rýchlosti za nás odchytáva navigačné SDK, používanie telefónu bolo výhradne v našej réžii. Ak príde používateľovi SMS alebo iná notifikácia, je to samozrejme v poriadku. Pokiaľ však zaregistrujeme jeho dotyky na obrazovke či nebodaj presunutie aplikácie na pozadie napríklad z dôvodu používania inej appky, je to pre nás neprípustné správanie a okamžite ho “pokutujeme” znížením skóre o niekoľko bodov. Telefón šoférovi za volant jednoducho nepatrí.

Sme však ľudia a každý má právo na omyl. Z tohto dôvodu akceptujeme ako úspešnú jazdu každú, ktorej finálne skóre bude minimálne 80 bodov. Celkové podmienky pre získanie 1 GB dát sú:

  • Priemerné skóre ≥ 80
  • 10 absolvovaných jázd
  • 150 najazdených kilometrov

Challenge accepted completed

Ak by sme mali vypichnúť niektoré z úloh, ktorým sme venovali viac času a pozornosti než ostatným, zrejme by to boli nasledovné:

Komunikácia: Pod kapotou atraktívneho frontendu sa skrýva trojica komunikačných kanálov, ktoré si môžeme bez zbytočných rečí predstaviť takto:

Kudrlinky v navigácii: Okrem tradičného navigovania sme náš softvér obohatili napríklad o voľnú jazdu. Namiesto zadávania cieľovej lokácie stačí stlačiť tlačidlo a jazda môže začať. Pre vodičov jazdiacich na rovnakých trasách sme naopak prichystali históriu vyhľadávania posledných miest, ktorá ušetrí drahocenné sekundy pri rutinných úkonoch. A kým pre laika sa takéto funkcionality môžu javiť ako triviálne, skrýva sa za nimi kus dobre premysleného kódu.

Serializácia dát: Aby sme predišli zbytočnému namáhaniu servera v podobe duplicitného sťahovania rovnakých dát, všetky nemenné záznamy spojené s jazdením užívateľa ukladáme do pamäte telefónu. Týmto spôsobom docielime pohotové reakcie aplikácie a zároveň ušetríme nejaké tie dáta pre užívateľa.

Algoritmus bezpečného šoféra: Čo je ešte bezpečná jazda a čo už nie? Vyladiť algoritmus spojený s hodnotením zodpovedného a potenciálne nebezpečného šófera bol poriadny oriešok, ale po niekoľkých stretnutiach a overovaní predpokladov za volantom sme prišli na finálne nastavenie algoritmu.

S výzvami spojenými s neľahkým vývojom appky sme si však koniec-koncov hravo poradili. Naša zostava bola nasledovná:

  • 2x iOS developer (Ján Katona, Tomáš Macho)
  • 2x Android developer (Ondrej Danko, Lukáš Anda)
  • 1x Projektový manažér ( Ľubomír Lajoš)
  • 1x Grafik (Maroš Morvajov)
  • 1x UX návrhár a Grafik (Martin Maderič)
  • 5x Testeri (O2, Sygic a my)

Najnovšiu aktualizáciu aplikácie Extra výhody s obsiahnutým navigačným systémom nájdeš v obchodoch s aplikáciami.