Razvoj mobilnih aplikacija

iOS, Android i cross-platform aplikacije

Razvijamo mobilne aplikacije od izbora platforme i arhitekture do objave na App Store-u i Google Play-u.

01Pregled usluge

Aplikacija koja radi u uslovima koje web ne poznaje

Razvoj mobilnih aplikacija obuhvata projektovanje, dizajn i razvoj aplikacija za iOS i Android, kao native ili cross-platform rešenja.

Mobilna aplikacija ima ograničenja koja web nema: radi na uređajima različitih mogućnosti, mora da funkcioniše uz slabu ili prekinutu vezu, a svaka nova verzija prolazi pregled prodavnice pre nego što stigne do korisnika.

Zato izbor platforme, arhitekture i načina objave donosimo na početku projekta. Tehnologiju biramo prema zahtevima aplikacije, a tim formiramo prema izabranom pristupu.

Tehnički list usluge

Platforme
iOS · Android · Cross-platform aplikacije za obe platforme iz jedne osnove koda
Isporuke
Dizajn ključnih ekrana u Figmi · Razvijena i testirana aplikacija · Backend i admin panel, kada su potrebni · Objava na App Store-u i Google Play-u
Tehnološka osnova
Native ili cross-platform, prema zahtevima aplikacije · Laravel ili Node.js za backend
Objava
Priprema za pregled prodavnica i podrška kroz ceo proces objave
Posle lansiranja
Podrška kroz HiStack portal · Nove verzije aplikacije, po dogovoru
Model ponude
Ponuda bez obaveze nakon konsultacija · Plaćanje u ratama za veće projekte
02Obuhvat i nivoi

Šta obuhvata razvoj mobilne aplikacije

Obuhvat zavisi od toga da li aplikacija radi samostalno ili je deo šireg sistema sa sopstvenim backendom. Matrica prikazuje šta je standardni deo svakog nivoa, a šta uključujemo kada projekat to zahteva.

Matrica obuhvata razvoja mobilne aplikacije po nivoima
Aktivnost / isporuka Osnovna aplikacija Aplikacija sa backendom Kompleksna aplikacija
Definisanje i dizajn
Ciljevi, korisnici i ključni tokovi
Izbor platforme i pristupa razvoju
Dizajn ključnih ekrana u Figmi, prema smernicama platformi
Dizajn sistem i biblioteka komponenti
Razvoj aplikacije
Aplikacija za iOS i Android
Navigacija, stanje aplikacije i lokalno skladištenje
Registracija i prijava
Push obaveštenja
Rad bez internet veze i sinhronizacija
Funkcije uređaja (kamera, lokacija, biometrija)
Backend
API i baza podataka
Admin panel
Plaćanja
Ažuriranje podataka u realnom vremenu
Kvalitet i objava
Testiranje na fizičkim uređajima i emulatorima
Interno testiranje pre objave (TestFlight, Google Play)
Priprema materijala i objava u prodavnicama
Analitika i praćenje grešaka
Posle lansiranja
Podrška kroz HiStack portal
Prilagođavanje novim verzijama iOS-a i Androida
Nove funkcionalnosti kroz nove verzije
Standardni deo nivoa Opciono, kada projekat zahteva Nije primenljivo

Nivoi obima

  • Osnovna aplikacija

    Bez sopstvenog backenda

    Sadržaj, informacije ili alati koji rade na uređaju ili koriste postojeće servise.

    Pogodno za informativne aplikacije i jednostavne alate.

  • Aplikacija sa backendom

    Korisnički nalozi i sopstveni podaci

    API, baza podataka, admin panel i push obaveštenja.

    Pogodno kada aplikacija služi korisnicima vašeg poslovanja.

  • Kompleksna aplikacija

    Napredne funkcije i integracije

    Rad bez veze, plaćanja, funkcije uređaja i složena poslovna logika.

    Pogodno kada je aplikacija ključni proizvod ili kanal poslovanja.

Obim određuju funkcionalnosti, a ne broj ekrana. Ponudu pripremamo nakon konsultacija, a za veće projekte moguće je plaćanje u ratama.

03Izbor platforme

Native, cross-platform ili PWA

Izbor pristupa je najvažnija tehnička odluka u razvoju mobilne aplikacije. On određuje trošak razvoja i održavanja, mogućnosti aplikacije i to koliko lako prati nove verzije operativnih sistema. Matrica poredi pet pristupa prema 17 kriterijuma grupisanih u pet oblasti.

Matrica odlučivanja za izbor pristupa razvoju mobilne aplikacije
Kriterijum Native iOSSwift, SwiftUI Native AndroidKotlin, Jetpack Compose FlutterCross-platform, Dart React NativeCross-platform, JavaScript PWAProgresivna web aplikacija
Pokrivenost i troškovi
Pokrivenost platformiSamo iOSSamo AndroidiOS i Android iz jedne osnoveiOS i Android iz jedne osnoveSvaki uređaj sa pregledačem
Trošak razvoja za obe platformeDve odvojene aplikacijeDve odvojene aplikacije
Trošak dugoročnog održavanjaDve osnove kodaDve osnove koda
Vreme do objaveBez pregleda prodavnice
Iskustvo i performanse
PerformanseBlizu native nivoa
Doslednost sa izgledom platformeSopstveno iscrtavanje komponentiKoristi native komponente
Animacije i složeni interfejsiPrecizna kontrola iscrtavanja
Rad bez internet vezeU okviru mogućnosti pregledača
Pristup uređaju
Funkcije uređaja (kamera, biometrija, senzori)Putem dodataka ili native kodaPutem dodataka ili native kodaOgraničeno pregledačem
Push obaveštenjaNa iOS-u samo za aplikaciju dodatu na početni ekran
Nove funkcije operativnog sistemaDostupne odmahDostupne odmahUz kašnjenje do podrške u alatuUz kašnjenje do podrške u alatu
Widgeti, sat i druga proširenjaZahtevaju native kodZahtevaju native kodNisu podržani
Distribucija
Prisustvo u prodavnicamaInstalacija iz pregledača
Izmene bez nove verzije u prodavniciMoguće za deo izmena, u okviru pravila prodavnicaOdmah po objavi
Rizik i održavanje
Zavisnost od alata treće straneZvanični alati platformeZvanični alati platformeZavisnost od alata i dodatakaZavisnost od alata i dodatakaWeb standardi
Usklađivanje sa novim verzijama OS-aČeka se podrška alataČeka se podrška alata
Dostupnost biblioteka i dodatakaVeliki JavaScript ekosistem
Primena
Tipična primenaAplikacije koje maksimalno koriste mogućnosti iOS-aAplikacije koje maksimalno koriste mogućnosti AndroidaAplikacije za obe platforme sa prilagođenim dizajnomAplikacije za obe platforme, posebno uz postojeći React webJednostavni alati i sadržaj bez potrebe za prodavnicom
Odgovarajući nivo obimaSa backendomKompleksnaSa backendomKompleksnaOsnovnaSa backendomKompleksnaOsnovnaSa backendomKompleksnaOsnovna

NajpovoljnijeUmerenoNajmanje povoljno

Ocena izražava povoljnost za dati kriterijum. Ocene su relativne i odnose se na tipičan projekat. Za aplikaciju koja treba da postoji na obe platforme, native pristup znači dve odvojene aplikacije. Konačnu preporuku dajemo nakon analize zahteva.

04Arhitektura i tehnologije

Aplikacija kao deo sistema

Većina poslovnih aplikacija nije samostalna: oslanja se na backend, platformske servise za obaveštenja i prijavu i alate za praćenje grešaka. Dijagram prikazuje tipičnu arhitekturu, a tabela pristupe i tehnologije za svaki sloj.

Arhitektura sistema

01Aplikacija

iOS i Android aplikacija

Interfejs, lokalno skladištenje i keš za rad bez veze

Backend

02API

Ulazna tačka

Autentifikacija, validacija i verzije API-ja

03Logika

Laravel ili Node.js

Poslovna pravila i pozadinski poslovi

04Podaci

Baza i fajlovi

Korisnici, sadržaj i mediji

Platformski servisi

Povezani sa slojevima 01 i 03

  • APNs (Apple)
  • FCM (Google)
  • Prijava preko Apple i Google naloga
  • Kupovine u aplikaciji

Administracija i analitika

Admin panel pristupa sloju 03, analitika prikuplja podatke iz sloja 01

  • Admin panel
  • Analitika korišćenja
  • Praćenje grešaka i padova

Tok objave nove verzije

  1. Razvoj

    Izrada i provera koda

  2. Interno testiranje

    TestFlight i Google Play testiranje

  3. Pregled prodavnice

    Provera prema pravilima prodavnice

  4. Objava

    Postepeno uvođenje kod korisnika

Slika 1. Pojednostavljena arhitektura mobilne aplikacije sa backendom. Osnovna aplikacija može da radi i bez slojeva 02 do 04, a tok objave važi za svaku novu verziju aplikacije.

Pristupi i tehnologije po slojevima

Dizajn i prototip

  • Figma

Dizajn ključnih ekrana prema smernicama Apple Human Interface Guidelines i Material Design.

Native iOS

  • Swift
  • SwiftUI

Zvanični jezik i okvir za iOS, kada aplikacija treba da maksimalno iskoristi mogućnosti platforme.

Native Android

  • Kotlin
  • Jetpack Compose

Zvanični jezik i savremeni okvir za izradu interfejsa na Androidu.

Cross-platform

  • Flutter
  • React Native

Jedna osnova koda za iOS i Android. React Native ima prednost kada već postoji web u React-u.

Backend

  • Laravel
  • Node.js

API, autentifikacija, poslovna logika i admin panel, zajednički za aplikaciju i eventualni web.

Verzionisanje i isporuka

  • GitHub

Kontrola verzija, pregled koda i probne verzije pre svakog slanja na pregled prodavnice.

Konkretne tehnologije biramo prema izabranom pristupu, a tim formiramo prema zahtevima projekta.

05Moduli i funkcije

Katalog funkcionalnih modula

Pregled modula koje mobilne aplikacije najčešće zahtevaju. Složenost pokazuje relativan obim implementacije i direktno utiče na rok i cenu projekta.

Katalog funkcionalnih modula mobilne aplikacije sa složenošću implementacije
Modul Šta obuhvata Implementacija Složenost
Korisnici i pristup
Registracija i prijavaEmail prijava, prijava preko Apple i Google naloga i oporavak lozinkeBackend autentifikacija i platformski servisi
Biometrijska prijavaPrijava otiskom prsta ili prepoznavanjem licaFace ID i Touch ID, Android biometrija
Komunikacija
Push obaveštenjaCiljana obaveštenja, podešavanja po korisniku i otvaranje odgovarajućeg ekranaAPNs i FCM
Obaveštenja u aplikacijiCentar obaveštenja i oznake nepročitanogBackend i lokalno skladištenje
Chat u realnom vremenuRazmena poruka, status isporuke i istorija razgovoraWebSocket servis
Podaci
Rad bez veze i sinhronizacijaRad bez interneta i usklađivanje podataka po povratku vezeLokalna baza i razrešavanje konflikata
Keširanje sadržajaBrže učitavanje i prikaz poslednjih podataka bez vezeLokalni keš
Funkcije uređaja
Kamera i skeniranjeFotografisanje, otpremanje slika i skeniranje QR kodovaPlatformski API i dodaci
Lokacija i mapePrikaz na mapi, praćenje lokacije i obaveštenja po lokacijiPlatformski API, uz dozvole
Duboki linkoviOtvaranje određenog ekrana aplikacije iz linka ili emailaUniversal Links i App Links
Plaćanja
Kupovine u aplikaciji i pretplateDigitalni sadržaj i pretplate kroz sistem prodavniceStoreKit i Google Play Billing
Plaćanje proizvoda i uslugaPlaćanje fizičkih proizvoda i usluga van sistema prodavniceIntegracija platnog procesora
Analitika i održavanje
Analitika korišćenjaPraćenje ključnih događaja i korišćenja funkcijaAnalitički alat
Praćenje grešaka i padovaIzveštaji o padovima aplikacije sa podacima o uređaju i verzijiAlat za izveštavanje o padovima
Daljinska konfiguracijaUključivanje funkcija i izmena podešavanja bez nove verzijeServis za daljinsku konfiguraciju
LokalizacijaViše jezika i formata datuma, brojeva i valutaPlatformski mehanizmi lokalizacije

Ako aplikacija nudi prijavu preko servisa trećih strana, Apple-ove smernice zahtevaju i dodatnu opciju prijave koja ispunjava njihove zahteve privatnosti. Granicu između kupovine u aplikaciji i plaćanja van prodavnice određuju pravila prodavnica, koja se razlikuju po tržištima.

06Objava u prodavnicama

App Store i Google Play

Objava nije formalnost. Obe prodavnice pregledaju aplikaciju i mogu da je odbiju ili zatraže izmene. Zato zahteve prodavnica uključujemo u dizajn i razvoj od početka, a ne tek pred objavu.

Poređenje zahteva za objavu na App Store-u i Google Play-u
Oblast App Store Google Play
Nalozi
Nalog programeraApple Developer Program, uz godišnju članarinuGoogle Play Console, uz jednokratnu registraciju
Nalog organizacijeZahteva D-U-N-S broj pravnog subjektaZahteva D-U-N-S broj pravnog subjekta
Vlasnik nalogaPreporučujemo nalog na ime vaše firmePreporučujemo nalog na ime vaše firme
Testiranje pre objave
Kanali testiranjaTestFlight, za interne i eksterne testereInterno, zatvoreno i otvoreno testiranje
Posebni usloviVerzija za eksterne testere prolazi kratak pregledNovi lični nalozi moraju proći zatvoreno testiranje pre objave
Pregled i objava
Pregled aplikacijePregled prema App Review smernicamaPregled prema pravilima programa Google Play
Postepena objavaFazna objava ažuriranjaPostepeno uvođenje po procentu korisnika
PrivatnostOznake privatnosti (App Privacy)Odeljak o bezbednosti podataka (Data safety)
Digitalni sadržajU pravilu kupovina u aplikaciji, uz razlike po tržištimaU pravilu Google Play Billing, uz razlike po tržištima

Nalozi programera na ime vaše firme znače da aplikacija i njeni korisnici ostaju vaši i kada se promeni izvođač. Pravila prodavnica se redovno menjaju, pa aktuelne zahteve proveravamo pre slanja svake verzije na pregled.

07Standardi kvaliteta

Parametri koje proveravamo pre objave

Mobilna aplikacija čuva podatke na uređaju koji korisnik nosi sa sobom, pa su bezbednost i privatnost važniji nego kod većine sajtova. Tamo gde postoje javno definisani standardi, oslanjamo se na njih.

Standardi kvaliteta mobilnih aplikacija, ciljne vrednosti i metode provere
Parametar Ciljna vrednost Metod provere
Bezbednost
Referentni okvirOWASP MASVSPregled ključnih rizika
Tajne i tokeniKeychain na iOS-u i Keystore na Androidu, bez tajni u kodu aplikacijePregled koda
Mrežna komunikacijaHTTPS za svu komunikaciju sa backendomProvera konfiguracije
DozvoleSamo dozvole neophodne za funkcije aplikacije, uz objašnjenje korisnikuPregled zatraženih dozvola
Privatnost
Lični podaciUsklađenost sa ZZPL, a sa GDPR-om kada je primenljivPregled obrade podataka
Prijave u prodavnicamaTačne oznake privatnosti i podaci o bezbednostiPregled pre slanja na pregled
Pristupačnost
Čitači ekranaPodrška za VoiceOver i TalkBackRučni test na uređaju
Veličina tekstaPodrška za sistemsku veličinu tekstaTest na uređaju
Kontrast tekstaNajmanje 4,5:1 za osnovni tekstProvera kontrasta
Kompatibilnost
Verzije operativnog sistemaMinimalne verzije iOS-a i Androida definišu se u ponudiTestiranje na podržanim verzijama
UređajiTelefoni različitih veličina ekrana, tableti kada su u obuhvatuFizički uređaji i emulatori
Slaba ili prekinuta vezaJasno stanje greške i mogućnost ponovnog pokušajaTest sa ograničenom mrežom
Kvalitet isporuke
Verzionisanje i pregled kodaSav kod u repozitorijumu, izmene se pregledaju pre spajanjaGitHub
Probne verzijeSvaka verzija prolazi interno testiranje pre slanja na pregledTestFlight i Google Play testiranje

OWASP MASVS: Mobile Application Security Verification Standard, javni standard za bezbednost mobilnih aplikacija. ZZPL: Zakon o zaštiti podataka o ličnosti Republike Srbije.

08Proces rada

Proces rada po fazama

Svaka faza ima jasnu isporuku i kontrolnu tačku. Tokom razvoja dobijate probne verzije koje instalirate na sopstveni uređaj, tako da aplikaciju isprobavate dok nastaje. Detaljan vodič kroz saradnju dostupan je na stranici Proces saradnje.

Faze procesa razvoja mobilne aplikacije sa isporukama i kontrolnim tačkama
Faza Aktivnosti Isporuka Vaše učešće Kontrolna tačka
01Definisanje i izbor platformeCiljevi, korisnici i ključni tokovi, izbor pristupa i minimalnih verzija operativnih sistemaDogovoren obim i izbor platformeMaterijali, informacije o korisnicima i poslovnim pravilimaOdobrenje obima i ponude
02DizajnDizajn ključnih ekrana u Figmi, prema smernicama iOS i Android platformiOdobren dizajnPovratne informacije i usmeravanje dizajnaOdobrenje dizajna
03Razvoj u etapamaRazvoj aplikacije i backenda, uz probne verzije nakon svake etapeProbna verzija za instalacijuTestiranje na sopstvenom uređajuPrihvatanje etape
04Testiranje i objavaTestiranje na uređajima, priprema opisa i snimaka ekrana, slanje na pregled prodavnicaAplikacija objavljena u prodavnicamaNalozi programera i materijali za prodavniceOdobrenje za slanje na pregled
05Podrška i nove verzijePodrška kroz HiStack portal i nove verzije, po dogovoruPraćenje prijava kroz portalPrijava problema uz jedinstveni IDKontinuirano