KaiOS — operativni sistem za telefone sa tasterima, zasnovan na veb tehnologijama Boot to Gecko (B2G) od Mozilla. Razvoj aplikacija se vodi u HTML5, CSS i JavaScript bez potrebe za učenjem nativnih jezika. KaiOS radi na uređajima sa 256–512 MB RAM i podržava 4G VoLTE, GPS, Bluetooth. Prema podacima KaiOS Technologies, u 2025. godini bilo je više od 200 miliona aktivnih uređaja širom sveta.
Glavne tačke
KaiOS — mobilni operativni sistem za telefone sa tasterima, razvijen od strane kompanije KaiOS Technologies. Sistem se zasniva na otvorenom projektu Boot to Gecko (B2G) od Mozilla, koji je prvobitno kreiran kao veb zamena za Android na ultra-budžetskim uređajima. Prvo komercijalno izdanje bilo je 2017. godine na telefonu Reliance JioPhone u Indiji.
Prema Counterpoint Research (Q2 2025), KaiOS zauzima 2,8% globalnog tržišta mobilnih OS, iza Androida (72%) i iOS-a (27%), ali ispred ostalih platformi. U Indiji udeo KaiOS dostiže 14% zahvaljujući programu JioPhone. Prosečna cena uređaja na KaiOS je 20-30 američkih dolara, što sistem čini ključnim za tržišta u razvoju.
Ključna karakteristika KaiOS — sve aplikacije su veb aplikacije. Programer piše kod u HTML5, CSS i JavaScript, pakuje ga u ZIP arhivu sa manifestom i objavljuje u KaiStore. Sistem ne podržava instalaciju nativnih APK fajlova — samo Open Web Apps prema W3C Widget specifikaciji.
KaiOS 2.5 (2018) — prva stabilna verzija na Gecko 48 jezgru, instalirana na JioPhone 1. KaiOS 2.5.3 (2021) — podrška za Google Assistant, Google Maps Go, YouTube Go. KaiOS 3.0 (2022) — Gecko 84, poboljšane performanse, WebGL 2.0, CSS Grid. KaiOS 3.1 (2024) — optimizacija za 256 MB RAM, novi Web API Audio Channel, poboljšana sigurnost TLS 1.3.
| Verzija KaiOS | Godina | Gecko | Ključna promena |
|---|---|---|---|
| 2.5 | 2018 | 48 | Prvo stabilno izdanje, JioPhone 1 |
| 2.5.3 | 2021 | 48 | Google Apps, Asistent, poboljšana sigurnost |
| 3.0 | 2022 | 84 | ES2020, WebGL 2.0, CSS Grid, poboljšane JS performanse |
| 3.1 | 2024 | 84 | 256 MB RAM, TLS 1.3, Audio Channel API |
Arhitektura KaiOS se sastoji od tri ključna sloja: Linux jezgra (Gonk), veb pogona Gecko i korisničkog interfejsa Gaia. Gonk — hardverski zavisan sloj, koji uključuje drajvere, HAL (Hardware Abstraction Layer), RIL (Radio Interface Layer) modem stek i podršku za senzore. Iz Android Open Source Project (AOSP) preuzeti su bootloader, drajveri i neke biblioteke.
Gonk obezbeđuje Gecko-u pristup hardveru: kameri, Bluetooth-u, Wi-Fi-ju, GPS-u, audio, vibracijama, senzorima. Za razliku od Androida, gde se aplikacije pišu za Dalvik/ART, u KaiOS aplikacije pristupaju hardveru kroz Web API koje Gecko prevodi u Gonk IPC. Radio interfejs (RIL) obezbeđuje 4G VoLTE, SMS, USSD i upravljanje SIM karticama.
Gecko u KaiOS nije samo pregledački pogon, već potpuno okruženje za izvršavanje aplikacija. Sve HTML5 aplikacije rade unutar Gecko Process Manager-a, koji izoluje svaku aplikaciju u poseban proces. Gecko implementira W3C Widget Packaging specifikaciju i Mozilla proširenja za pristup hardveru. Verzija Gecko određuje koji Web API su dostupni programeru.
Gaia — veb interfejs samog OS-a: ekran zaključavanja, početni ekran (launcher), panel obaveštenja, ekran za biranje broja, kontakti, SMS klijent. Svi sistemski programi su isti Open Web Apps. Programer može zameniti standardnu kameru ili tastaturu svojom aplikacijom, registracijom odgovarajućeg activity handler-a u manifestu.
// Provera verzije KaiOS i dostupnosti API-ja
function checkKaiOSVersion() {
const ua = navigator.userAgent;
let version = 'unknown';
if (ua.includes('KAIOS/2.5')) {
version = '2.5';
} else if (ua.includes('KAIOS/3')) {
version = '3.0';
}
const features = {
geolocation: 'geolocation' in navigator,
vibration: 'vibrate' in navigator,
mozMobileConnection: 'mozMobileConnection' in navigator,
mozTelephony: 'mozTelephony' in navigator,
mozSms: 'mozSms' in navigator,
bluetooth: 'bluetooth' in navigator
};
return { version, features };
}
// Provera prisustva Google Apps (samo KaiOS 2.5.3+)
const systemInfo = checkKaiOSVersion();
console.log('KaiOS version:', systemInfo.version);
console.log('Available APIs:', JSON.stringify(systemInfo.features, null, 2));
// Korišćenje vibracije uz proveru dostupnosti
function triggerHapticFeedback() {
if (navigator.vibrate) {
navigator.vibrate([200, 100, 200]); // vibracija, pauza, vibracija
}
}Funkcija checkKaiOSVersion čita User Agent da bi odredila verziju KaiOS i proverava dostupnost ključnih Web API-ja. U verziji 2.5 dostupni su mozMobileConnection, mozTelephony, mozSms — oni nedostaju u običnim pregledačima i jedinstveni su za KaiOS. Funkcija triggerHapticFeedback koristi Vibration API sa unazadnom kompatibilnošću.
Aplikacija KaiOS — ZIP arhiva (format .zip, ne .apk) koja sadrži HTML fajlove, CSS, JavaScript, slike i manifest. Struktura minimalne aplikacije uključuje manifest.webapp (opis aplikacije), index.html (ulazna tačka), style.css i icon.png (kvadratna ikona 90×90 piksela). Manifest je u skladu sa W3C Manifest for Web Apps specifikacijom.
Fajl manifest.webapp — glavni konfiguracioni fajl aplikacije KaiOS. Obavezna polja: name (naziv), description (opis do 140 znakova), launch_path (putanja do index.html), icons (ikone dimenzija 30×30, 60×60, 90×90, 120×120 piksela). Polje type: 'certified' (sistemske aplikacije), 'privileged' (pristup Web API-ju), 'web' (bez posebnih prava). Dozvole za privileged aplikacije se navode u nizu permissions.
// manifest.webapp — konfiguracija aplikacije KaiOS
{
"name": "Baterijska lampa",
"description": "Uključuje i isključuje blic kamere",
"launch_path": "/index.html",
"icons": {
"30": "/icons/icon-30.png",
"60": "/icons/icon-60.png",
"90": "/icons/icon-90.png",
"120": "/icons/icon-120.png"
},
"type": "privileged",
"permissions": {
"camera": {
"description": "Potrebno za uključivanje blica"
}
},
"default_locale": "ru",
"orientation": "portrait-primary",
"fullscreen": true
}Manifest navodi da aplikacija ima tip privileged — ovo daje pristup camera API-ju kroz permissions. Veličine ikona su strogo 30×30, 60×60, 90×90 i 120×120 piksela. Polje orientation ograničava portretnu orijentaciju — na telefonima sa tasterima obično nema akcelerometra za okretanje ekrana. fullscreen: true sakriva statusnu traku.
HTML5 stranica u KaiOS koristi standardne tagove uzimajući u obzir ograničeni ekran (obično 240×320 piksela). Meta-tag viewport je obavezan: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">. KaiOS ne podržava događaje dodira (nema ekrana osetljivog na dodir na telefonima sa tasterima), sva navigacija se odvija putem tastera: ArrowUp, ArrowDown za kretanje, Enter za izbor, Back za povratak.
// index.html — jednostavna aplikacija baterijske lampe za KaiOS
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Фонарик</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="app">
<div id="status" class="status-off">Выключен</div>
<div id="hint">Нажмите Enter для включения</div>
</div>
<script>
const statusEl = document.getElementById('status');
const hintEl = document.getElementById('hint');
let isFlashOn = false;
let camera = null;
async function initCamera() {
try {
camera = navigator.mozCameras.getListOfCameras()[0];
const cameraControl = await
navigator.mozCameras.getCamera(camera, { mode: 'picture' });
return cameraControl;
} catch (e) {
showError('Камера недоступна: ' + e.message);
}
}
async function toggleFlash() {
const cam = await initCamera();
if (!cam) return;
isFlashOn = !isFlashOn;
try {
await cam.setConfiguration({
mode: 'picture',
flashMode: isFlashOn ? 'on' : 'off'
});
statusEl.textContent = isFlashOn ? 'Включен' : 'Выключен';
statusEl.className = isFlashOn ? 'status-on' : 'status-off';
} catch (e) {
showError('Ошибка: ' + e.message);
}
}
// Obrada hardverskog tastera Enter
document.addEventListener('keydown', function(e) {
if (e.key === 'Enter') {
toggleFlash();
}
});
initCamera();
</script>
</body>
</html>Aplikacija Baterijska lampa koristi MozCamera API za upravljanje blicem kamere. Korisnik pritiska hardverski taster Enter — pokreće se keydown handler koji prebacuje flashMode između on i off. Status se prikazuje u tekstualnom bloku sa klasom status-on/status-off za vizuelnu indikaciju. MozCamera API je dostupan samo za privileged aplikacije sa dozvolom camera u manifestu.
KaiOS Web API — skup JavaScript interfejsa koji pružaju pristup hardverskim mogućnostima telefona. Većina API-ja su vlasnička Mozilla proširenja (sa moz prefiksom) i nisu dostupna u običnim pregledačima. Za korišćenje API-ja, aplikacija mora imati tip privileged ili certified u manifestu.
MozMobileConnection — informacije o mreži: operator, nivo signala, tip mreže (4G/3G/2G), IMEI, status rominga. MozTelephony — upravljanje pozivima: biranje broja, prihvatanje, završetak, konferencijski poziv, status poziva. MozSms — slanje i primanje SMS, MMS, upravljanje porukama na SIM kartici. MozContacts — čitanje i pisanje telefonskog imenika. MozBluetooth — upravljanje Bluetooth-om: otkrivanje uređaja, uparivanje, prenos datoteka. Push API — prijem push obaveštenja sa servera.
// Rad sa kontaktima i pozivima putem Web API-ja KaiOS
const TelephonyManager = {
// Ostvarivanje poziva na broj
async makeCall(phoneNumber) {
if (!navigator.mozTelephony) {
throw new Error('Telephony API недоступен');
}
const call = navigator.mozTelephony.dial(phoneNumber);
call.onconnected = () => console.log('Звонок установлен');
call.ondisconnected = () => console.log('Звонок завершён');
return call;
},
// Dobijanje liste kontakata iz telefonskog imenika
async getContacts() {
const cursor = navigator.mozContacts.getAll({
sortBy: 'familyName',
sortOrder: 'ascending'
});
const contacts = [];
return new Promise((resolve, reject) => {
cursor.onsuccess = function() {
if (this.result) {
contacts.push(this.result);
this.continue();
} else {
resolve(contacts);
}
};
cursor.onerror = function() {
reject(this.error);
};
});
},
// Slanje SMS
async sendSms(phoneNumber, message) {
if (!navigator.mozSms) {
throw new Error('SMS API недоступен');
}
const request = navigator.mozSms.send(phoneNumber, message);
return new Promise((resolve, reject) => {
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
}
};
// Primer korišćenja
TelephonyManager.getContacts()
.then(contacts => console.log('Найдено контактов:', contacts.length))
.catch(err => console.error(err));Objekat TelephonyManager kombinuje tri ključna KaiOS API-ja: mozTelephony za pozive, mozContacts za telefonski imenik i mozSms za poruke. getAll() sa kursorom — obrazac za asinhrono čitanje velikih količina podataka (tipično za kontakte sa preko 1000 unosa). Svi API-ji vraćaju DOMRequest sa onsuccess i onerror rukovaocima.
KaiOS Web API-ji imaju ograničenja: API-ji za pozive i SMS dostupni su samo na telefonima (ne na tabletima), kamera — samo sa fizičkom kamerom, Bluetooth — ograničeni HSP/HFP profil. Push API zahteva podršku servera Google Firebase (FCM) ili sopstvenog servera. API za geolokaciju koristi A-GPS ili Cell ID u zavisnosti od hardverske podrške.
| API | Tip aplikacije | Dostupnost | Verzija KaiOS |
|---|---|---|---|
| MozMobileConnection | privileged | Svi telefoni | 2.5+ |
| MozTelephony | privileged | Samo telefoni | 2.5+ |
| MozSms | privileged | Samo telefoni | 2.5+ |
| MozContacts | privileged | Svi telefoni | 2.5+ |
| MozBluetooth | certified | Sa Bluetooth modulom | 2.5+ |
| Geolocation API | web | Sa GPS/Cell ID | 2.5+ |
| Push API | privileged | Sa internetom | 3.0+ |
| WebGL 2.0 | web | Sa GPU ubrzanjem | 3.0+ |
Korisnički interfejs KaiOS je orijentisan na upravljanje T9 tastaturom i hardverskim tasterima. Standardna rezolucija ekrana — 240×320 piksela (QVGA) kod većine telefona sa tasterima. Odsustvo ekrana osetljivog na dodir znači da se sva navigacija realizuje putem keydown/keyup događaja: ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Enter, Back (ili Escape).
KaiOS ne podržava CSS :focus na uobičajen način — fokusom se upravlja kroz tabindex i JavaScript. Programer mora ručno pratiti trenutno izabrani element i pomerati fokus pri pritisku tastera. Preporučuje se korišćenje data-index na elementima liste radi pojednostavljenja navigacije. Izabrani element se obično ističe kroz klasu .selected sa CSS svojstvom background-color kontrastne boje.
// Fokusna navigacija kroz listu za KaiOS
class ListNavigation {
constructor(containerSelector) {
this.container = document.querySelector(containerSelector);
this.items = this.container.querySelectorAll('[data-index]');
this.currentIndex = 0;
this.init();
}
init() {
this.updateFocus();
document.addEventListener('keydown', (e) => {
switch (e.key) {
case 'ArrowUp':
e.preventDefault();
this.moveFocus(-1);
break;
case 'ArrowDown':
e.preventDefault();
this.moveFocus(1);
break;
case 'Enter':
e.preventDefault();
this.selectItem();
break;
case 'Backspace':
case 'Escape':
e.preventDefault();
this.goBack();
break;
}
});
}
moveFocus(direction) {
this.items[this.currentIndex].classList.remove('selected');
this.currentIndex = (this.currentIndex + direction + this.items.length) % this.items.length;
this.updateFocus();
}
updateFocus() {
const el = this.items[this.currentIndex];
el.classList.add('selected');
el.scrollIntoView({ block: 'nearest' });
}
selectItem() {
const el = this.items[this.currentIndex];
const event = new CustomEvent('itemselected', {
detail: { index: this.currentIndex, element: el }
});
this.container.dispatchEvent(event);
}
goBack() {
history.back();
}
}
// Inicijalizacija navigacije za listu menija
const nav = new ListNavigation('#menu-list');
nav.container.addEventListener('itemselected', (e) => {
console.log('Выбран элемент:', e.detail.index);
});Klasa ListNavigation implementira potpunu fokusnu navigaciju za KaiOS. ArrowUp/ArrowDown pomeraju fokus ciklično po elementima sa data-index. Enter poziva prilagođeni događaj itemselected. Backspace/Escape vraćaju na prethodni ekran. scrollIntoView sa block: nearest automatski pomera ekran kada element izađe iz vidljivog područja.
KaiOS 2.5 podržava CSS 2.1 + delimično CSS3 (border-radius, box-shadow, gradients). Flexbox se delimično podržava u KaiOS 2.5, a potpuno u KaiOS 3.0, uključujući CSS Grid. Preporučuje se korišćenje float rasporeda sa fiksnom širinom radi kompatibilnosti. Podrazumevani font — TizenSans ili Noto Sans CJK za azijska tržišta. Veličina teksta — 14-16 piksela za glavni sadržaj, 18-20 za naslove.
KaiStore — zvanična prodavnica aplikacija za KaiOS, unapred instalirana na svim uređajima. Programer se registruje na KaiOS Developer Portal (developer.kaiostech.com), učitava potpisani ZIP paket i popunjava opis. Moderacija proverava sigurnost, stabilnost i usklađenost sa politikom sadržaja. Prosečno vreme provere — 3-5 radnih dana.
KaiOS zahteva digitalno potpisivanje aplikacije putem KaiOS Certificate. Programer generiše par ključeva (privatni + javni) pomoću alata kaios-sign, šalje javni ključ na KaiOS Developer Portal i dobija sertifikat. Potpisani .zip fajl sadrži potpis u META-INF fascikli. Bez potpisa, aplikacija se instalira samo na dev uređajima.
KaiStore podržava besplatne aplikacije, oglašavanje putem KaiOS Ads SDK i kupovinu unutar aplikacije putem operatorskog billinga (Direct Carrier Billing). Provizija KaiStore — 30% od prihoda. Alternativni kanal — unapred instalacija putem OEM proizvođača (Jio, Nokia, Alcatel, Doro). Za unapred instalaciju potreban je direktan ugovor sa proizvođačem uređaja.
| Faza | Akcija | Rok |
|---|---|---|
| Registracija | Kreiranje naloga na KaiOS Developer Portal | 1 dan |
| Potpis | Generisanje ključa, dobijanje sertifikata | 1-2 dana |
| Izgradnja | Pakovanje .zip sa manifestom i potpisom | 1 sat |
| Učitavanje | Učitavanje paketa, popunjavanje opisa | 1 dan |
| Moderacija | Provera sigurnosti i kvaliteta | 3-5 dana |
| Objavljivanje | Izdanje u KaiStore za sve regione | 1 dan |
KaiStore ne podržava plaćene aplikacije u nekim zemljama (plaćanje samo putem operatorskog billinga). Veličina aplikacije je ograničena na 10 MB za preuzimanje putem 2G/3G mreža. Aplikacija ne sme koristiti više od 50 MB radne memorije. Zabranjen je pristup mozMobileConnection API-ju bez izričitog navođenja u manifestu. Kršenje politika dovodi do blokade naloga programera.
Često postavljana pitanja
KaiOS — operativni sistem za telefone sa tasterima zasnovan na Gecko veb pogonu od Mozilla. Radi na uređajima sa 256-512 MB RAM, podržava 4G VoLTE, GPS i Bluetooth. Aplikacije se pišu u HTML5, CSS i JavaScript. Prema Counterpoint Research, KaiOS je instaliran na više od 200 miliona uređaja.
Jedini razvojni stek — HTML5, CSS i JavaScript. KaiOS ne podržava nativne jezike poput C++ ili Java. Sve aplikacije su Open Web Apps prema W3C specifikaciji. Za pristup hardverskim funkcijama koriste se Mozilla Web API sa moz prefiksom. Aplikacija se pakuje u ZIP arhivu sa manifest.webapp.
Zvanična prodavnica — KaiStore sa registracijom na KaiOS Developer Portal. Aplikacija se potpisuje sertifikatom programera i učitava u .zip formatu. Moderacija traje 3-5 dana. Alternativni kanal — unapred instalacija na novim uređajima putem ugovora sa OEM proizvođačem. Provizija KaiStore — 30%.
KaiOS koristi Gecko veb pogon za HTML5 aplikacije i zahteva 256-512 MB RAM. Android Go pokreće nativne APK-ove na Dalvik/ART i zahteva 1-2 GB RAM. KaiOS radi na telefonima sa tasterima cene do 30 USD, Android Go — na budžetskim pametnim telefonima od 50 USD. KaiOS troši manje energije i radi duže bez punjenja.
Glavni API-ji: MozMobileConnection (mreža), MozTelephony (pozivi), MozSms (SMS), MozContacts (kontakti), MozBluetooth (Bluetooth), Geolocation API, Vibration API, Push API, Notification API. Za pristup camera API-ju potreban je tip aplikacije privileged. Push API je dostupan od KaiOS 3.0.
Zaključak
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође