KaiOS — sistem operasi untuk ponsel tombol, berbasis teknologi web Boot to Gecko (B2G) dari Mozilla. Pengembangan aplikasi dilakukan di HTML5, CSS dan JavaScript tanpa perlu mempelajari bahasa native. KaiOS bekerja pada perangkat dengan RAM 256–512 MB dan mendukung 4G VoLTE, GPS, Bluetooth. Menurut data KaiOS Technologies, pada tahun 2025 terdapat lebih dari 200 juta perangkat aktif di seluruh dunia.
Poin Utama
KaiOS — sistem operasi mobile untuk ponsel tombol, dikembangkan oleh KaiOS Technologies. Sistem ini didasarkan pada proyek open-source Boot to Gecko (B2G) dari Mozilla, yang awalnya dibuat sebagai alternatif web untuk Android di perangkat ultra-murah. Rilis komersial pertama terjadi pada tahun 2017 di ponsel Reliance JioPhone di India.
Menurut Counterpoint Research (Q2 2025), KaiOS menguasai 2,8% pasar global sistem operasi mobile, di belakang Android (72%) dan iOS (27%), tetapi di depan platform lainnya. Di India, pangsa KaiOS mencapai 14% berkat program JioPhone. Harga rata-rata perangkat KaiOS adalah 20-30 dolar AS, menjadikan sistem ini kunci untuk pasar berkembang.
Fitur utama KaiOS — semua aplikasi adalah aplikasi web. Pengembang menulis kode di HTML5, CSS dan JavaScript, mengemasnya dalam arsip ZIP dengan manifes dan mempublikasikannya di KaiStore. Sistem tidak mendukung instalasi file APK native — hanya Open Web Apps sesuai spesifikasi W3C Widget.
KaiOS 2.5 (2018) — versi stabil pertama di kernel Gecko 48, terinstal di JioPhone 1. KaiOS 2.5.3 (2021) — dukungan Google Assistant, Google Maps Go, YouTube Go. KaiOS 3.0 (2022) — Gecko 84, performa lebih baik, WebGL 2.0, CSS Grid. KaiOS 3.1 (2024) — optimalisasi untuk RAM 256 MB, Web API Audio Channel baru, keamanan TLS 1.3 yang ditingkatkan.
| Versi KaiOS | Tahun | Gecko | Perubahan utama |
|---|---|---|---|
| 2.5 | 2018 | 48 | Rilis stabil pertama, JioPhone 1 |
| 2.5.3 | 2021 | 48 | Google Apps, Asisten, keamanan ditingkatkan |
| 3.0 | 2022 | 84 | ES2020, WebGL 2.0, CSS Grid, performa JS ditingkatkan |
| 3.1 | 2024 | 84 | 256 MB RAM, TLS 1.3, Audio Channel API |
Arsitektur KaiOS terdiri dari tiga lapisan kunci: kernel Linux (Gonk), mesin web Gecko dan antarmuka pengguna Gaia. Gonk — lapisan yang bergantung pada perangkat keras, termasuk driver, HAL (Hardware Abstraction Layer), tumpukan modem RIL (Radio Interface Layer) dan dukungan sensor. Dari Android Open Source Project (AOSP) diambil bootloader, driver dan beberapa pustaka.
Gonk menyediakan akses Gecko ke perangkat keras: kamera, Bluetooth, Wi-Fi, GPS, audio, getaran, sensor. Berbeda dengan Android, di mana aplikasi ditulis untuk Dalvik/ART, di KaiOS aplikasi mengakses perangkat keras melalui Web API yang diterjemahkan oleh Gecko ke Gonk IPC. Antarmuka radio (RIL) menyediakan 4G VoLTE, SMS, USSD dan manajemen kartu SIM.
Gecko di KaiOS bukan hanya mesin peramban, tetapi lingkungan runtime aplikasi yang lengkap. Semua aplikasi HTML5 bekerja di dalam Gecko Process Manager, yang mengisolasi setiap aplikasi dalam proses terpisah. Gecko mengimplementasikan spesifikasi W3C Widget Packaging dan ekstensi Mozilla untuk akses perangkat keras. Versi Gecko menentukan Web API mana yang tersedia untuk pengembang.
Gaia — antarmuka web dari OS itu sendiri: layar kunci, layar utama (launcher), panel notifikasi, layar panggilan, kontak, klien SMS. Semua aplikasi sistem adalah Open Web Apps yang sama. Pengembang dapat mengganti kamera atau keyboard standar dengan aplikasi sendiri, dengan mendaftarkan activity handler yang sesuai di manifes.
// Memeriksa versi KaiOS dan ketersediaan API
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 };
}
// Memeriksa keberadaan Google Apps (hanya KaiOS 2.5.3+)
const systemInfo = checkKaiOSVersion();
console.log('KaiOS version:', systemInfo.version);
console.log('Available APIs:', JSON.stringify(systemInfo.features, null, 2));
// Menggunakan getaran dengan pemeriksaan ketersediaan
function triggerHapticFeedback() {
if (navigator.vibrate) {
navigator.vibrate([200, 100, 200]); // getaran, jeda, getaran
}
}Fungsi checkKaiOSVersion membaca User Agent untuk menentukan versi KaiOS dan memeriksa ketersediaan Web API utama. Di versi 2.5 tersedia mozMobileConnection, mozTelephony, mozSms — ini tidak ada di peramban biasa dan unik untuk KaiOS. Fungsi triggerHapticFeedback menggunakan Vibration API dengan kompatibilitas mundur.
Aplikasi KaiOS — arsip ZIP (format .zip, bukan .apk) berisi file HTML, CSS, JavaScript, gambar dan manifes. Struktur aplikasi minimal mencakup manifest.webapp (deskripsi aplikasi), index.html (titik masuk), style.css dan icon.png (ikon persegi 90×90 piksel). Manifes sesuai dengan spesifikasi W3C Manifest for Web Apps.
File manifest.webapp — file konfigurasi utama aplikasi KaiOS. Bidang wajib: name (nama), description (deskripsi hingga 140 karakter), launch_path (jalur ke index.html), icons (ikon ukuran 30×30, 60×60, 90×90, 120×120 piksel). Bidang type: 'certified' (aplikasi sistem), 'privileged' (akses ke Web API), 'web' (tanpa hak khusus). Permissions untuk aplikasi privileged ditentukan dalam array permissions.
// manifest.webapp — konfigurasi aplikasi KaiOS
{
"name": "Senter",
"description": "Menyalakan dan mematikan lampu kilat kamera",
"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": "Diperlukan untuk menyalakan lampu kilat"
}
},
"default_locale": "ru",
"orientation": "portrait-primary",
"fullscreen": true
}Manifes menunjukkan bahwa aplikasi memiliki tipe privileged — ini memberikan akses ke camera API melalui permissions. Ukuran ikon secara ketat 30×30, 60×60, 90×90 dan 120×120 piksel. Bidang orientation membatasi orientasi potret — pada ponsel tombol biasanya tidak ada akselerometer untuk memutar layar. fullscreen: true menyembunyikan bilah status.
Halaman HTML5 di KaiOS menggunakan tag standar dengan mempertimbangkan layar terbatas (biasanya 240×320 piksel). Meta-tag viewport wajib: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">. KaiOS tidak mendukung peristiwa sentuh (tidak ada layar sentuh di ponsel tombol), semua navigasi dilakukan melalui tombol: ArrowUp, ArrowDown untuk bergerak, Enter untuk memilih, Back untuk kembali.
// index.html — aplikasi senter sederhana untuk KaiOS
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Senter</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="app">
<div id="status" class="status-off">Mati</div>
<div id="hint">Tekan Enter untuk menyalakan</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('Kamera tidak tersedia: ' + 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 ? 'Menyala' : 'Mati';
statusEl.className = isFlashOn ? 'status-on' : 'status-off';
} catch (e) {
showError('Kesalahan: ' + e.message);
}
}
// Penanganan tombol hardware Enter
document.addEventListener('keydown', function(e) {
if (e.key === 'Enter') {
toggleFlash();
}
});
initCamera();
</script>
</body>
</html>Aplikasi Senter menggunakan MozCamera API untuk mengontrol lampu kilat kamera. Pengguna menekan tombol hardware Enter — handler keydown dipicu, mengganti flashMode antara on dan off. Status ditampilkan dalam blok teks dengan kelas status-on/status-off untuk indikasi visual. MozCamera API hanya tersedia untuk aplikasi privileged dengan izin camera di manifes.
KaiOS Web API — kumpulan antarmuka JavaScript yang menyediakan akses ke kemampuan hardware ponsel. Sebagian besar API adalah ekstensi kepemilikan Mozilla (berawalan moz) dan tidak tersedia di peramban biasa. Untuk menggunakan API, aplikasi harus memiliki tipe privileged atau certified di manifes.
MozMobileConnection — informasi jaringan: operator, level sinyal, tipe jaringan (4G/3G/2G), IMEI, status roaming. MozTelephony — manajemen panggilan: memanggil nomor, menjawab, mengakhiri, konferensi, status panggilan. MozSms — mengirim dan menerima SMS, MMS, mengelola pesan di SIM. MozContacts — membaca dan menulis buku telepon. MozBluetooth — manajemen Bluetooth: menemukan perangkat, memasangkan, mentransfer file. Push API — menerima notifikasi push dari server.
// Bekerja dengan kontak dan panggilan melalui Web API KaiOS
const TelephonyManager = {
// Melakukan panggilan ke nomor
async makeCall(phoneNumber) {
if (!navigator.mozTelephony) {
throw new Error('Telephony API tidak tersedia');
}
const call = navigator.mozTelephony.dial(phoneNumber);
call.onconnected = () => console.log('Panggilan terhubung');
call.ondisconnected = () => console.log('Panggilan selesai');
return call;
},
// Mendapatkan daftar kontak dari buku telepon
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);
};
});
},
// Mengirim SMS
async sendSms(phoneNumber, message) {
if (!navigator.mozSms) {
throw new Error('SMS API tidak tersedia');
}
const request = navigator.mozSms.send(phoneNumber, message);
return new Promise((resolve, reject) => {
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
}
};
// Contoh penggunaan
TelephonyManager.getContacts()
.then(contacts => console.log('Kontak ditemukan:', contacts.length))
.catch(err => console.error(err));Objek TelephonyManager menggabungkan tiga API kunci KaiOS: mozTelephony untuk panggilan, mozContacts untuk buku telepon dan mozSms untuk pesan. getAll() dengan kursor — pola untuk membaca asinkron data dalam jumlah besar (khas untuk kontak dengan lebih dari 1000 entri). Semua API mengembalikan DOMRequest dengan handler onsuccess dan onerror.
Web API KaiOS memiliki keterbatasan: API panggilan dan SMS hanya tersedia di ponsel (bukan di tablet), kamera — hanya dengan kamera fisik, Bluetooth — profil HSP/HFP terbatas. Push API memerlukan dukungan server Google Firebase (FCM) atau server sendiri. API geolokasi menggunakan A-GPS atau Cell ID tergantung pada dukungan hardware.
| API | Tipe aplikasi | Ketersediaan | Versi KaiOS |
|---|---|---|---|
| MozMobileConnection | privileged | Semua ponsel | 2.5+ |
| MozTelephony | privileged | Hanya ponsel | 2.5+ |
| MozSms | privileged | Hanya ponsel | 2.5+ |
| MozContacts | privileged | Semua ponsel | 2.5+ |
| MozBluetooth | certified | Dengan modul Bluetooth | 2.5+ |
| Geolocation API | web | Dengan GPS/Cell ID | 2.5+ |
| Push API | privileged | Dengan internet | 3.0+ |
| WebGL 2.0 | web | Dengan akselerasi GPU | 3.0+ |
Antarmuka pengguna KaiOS berorientasi pada kontrol dengan keyboard T9 dan tombol hardware. Resolusi layar standar — 240×320 piksel (QVGA) di sebagian besar ponsel tombol. Tidak adanya layar sentuh berarti semua navigasi dilakukan melalui peristiwa keydown/keyup: ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Enter, Back (atau Escape).
KaiOS tidak mendukung CSS :focus seperti biasa — fokus dikelola melalui tabindex dan JavaScript. Pengembang harus melacak secara manual elemen yang dipilih saat ini dan memindahkan fokus saat tombol ditekan. Disarankan menggunakan data-index pada elemen daftar untuk menyederhanakan navigasi. Elemen yang dipilih biasanya disorot melalui kelas .selected dengan properti CSS background-color warna kontras.
// Navigasi fokus melalui daftar untuk 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();
}
}
// Inisialisasi navigasi untuk daftar menu
const nav = new ListNavigation('#menu-list');
nav.container.addEventListener('itemselected', (e) => {
console.log('Elemen dipilih:', e.detail.index);
});Kelas ListNavigation mengimplementasikan navigasi fokus lengkap untuk KaiOS. ArrowUp/ArrowDown memindahkan fokus secara siklik pada elemen dengan data-index. Enter memanggil peristiwa khusus itemselected. Backspace/Escape kembali ke layar sebelumnya. scrollIntoView dengan block: nearest secara otomatis menggulir layar saat elemen keluar dari area yang terlihat.
KaiOS 2.5 mendukung CSS 2.1 + sebagian CSS3 (border-radius, box-shadow, gradients). Flexbox didukung sebagian di KaiOS 2.5, sepenuhnya di KaiOS 3.0 termasuk CSS Grid. Disarankan menggunakan tata letak float dengan lebar tetap untuk kompatibilitas. Font default — TizenSans atau Noto Sans CJK untuk pasar Asia. Ukuran teks — 14-16 piksel untuk konten utama, 18-20 untuk judul.
KaiStore — toko aplikasi resmi untuk KaiOS, terinstal sebelumnya di semua perangkat. Pengembang mendaftar di KaiOS Developer Portal (developer.kaiostech.com), mengunggah paket ZIP yang ditandatangani dan mengisi deskripsi. Moderasi memeriksa keamanan, stabilitas dan kepatuhan terhadap kebijakan konten. Waktu pemeriksaan rata-rata — 3-5 hari kerja.
KaiOS memerlukan penandatanganan digital aplikasi melalui KaiOS Certificate. Pengembang menghasilkan pasangan kunci (privat + publik) melalui utilitas kaios-sign, mengirim kunci publik ke KaiOS Developer Portal dan menerima sertifikat. File .zip yang ditandatangani berisi tanda tangan di folder META-INF. Tanpa tanda tangan, aplikasi hanya diinstal di perangkat pengembang.
KaiStore mendukung aplikasi gratis, iklan melalui KaiOS Ads SDK dan pembelian dalam aplikasi melalui penagihan operator (Direct Carrier Billing). Komisi KaiStore — 30% dari pendapatan. Saluran alternatif — pra-instal melalui produsen OEM (Jio, Nokia, Alcatel, Doro). Untuk pra-instal diperlukan kontrak langsung dengan produsen perangkat.
| Tahap | Tindakan | Waktu |
|---|---|---|
| Pendaftaran | Membuat akun di KaiOS Developer Portal | 1 hari |
| Penandatanganan | Membuat kunci, mendapatkan sertifikat | 1-2 hari |
| Pembangunan | Mengemas .zip dengan manifes dan tanda tangan | 1 jam |
| Unggah | Mengunggah paket, mengisi deskripsi | 1 hari |
| Moderasi | Memeriksa keamanan dan kualitas | 3-5 hari |
| Publikasi | Rilis di KaiStore untuk semua wilayah | 1 hari |
KaiStore tidak mendukung aplikasi berbayar di beberapa negara (pembayaran hanya melalui penagihan operator). Ukuran aplikasi dibatasi hingga 10 MB untuk unduhan melalui jaringan 2G/3G. Aplikasi tidak boleh menggunakan lebih dari 50 MB RAM. Akses ke API mozMobileConnection tanpa penyebutan eksplisit di manifes dilarang. Pelanggaran kebijakan menyebabkan pemblokiran akun pengembang.
Pertanyaan yang Sering Diajukan
KaiOS — sistem operasi untuk ponsel tombol berbasis mesin web Gecko dari Mozilla. Bekerja pada perangkat dengan RAM 256-512 MB, mendukung 4G VoLTE, GPS dan Bluetooth. Aplikasi ditulis di HTML5, CSS dan JavaScript. Menurut Counterpoint Research, KaiOS terinstal di lebih dari 200 juta perangkat.
Satu-satunya tumpukan pengembangan — HTML5, CSS dan JavaScript. KaiOS tidak mendukung bahasa native seperti C++ atau Java. Semua aplikasi adalah Open Web Apps sesuai spesifikasi W3C. Untuk akses ke fungsi hardware digunakan Mozilla Web API dengan awalan moz. Aplikasi dikemas dalam arsip ZIP dengan manifest.webapp.
Toko resmi — KaiStore dengan pendaftaran di KaiOS Developer Portal. Aplikasi ditandatangani dengan sertifikat pengembang dan diunggah dalam format .zip. Moderasi memakan waktu 3-5 hari. Saluran alternatif — pra-instal di perangkat baru melalui kontrak dengan produsen OEM. Komisi KaiStore — 30%.
KaiOS menggunakan mesin web Gecko untuk aplikasi HTML5 dan membutuhkan RAM 256-512 MB. Android Go menjalankan APK native di Dalvik/ART dan membutuhkan RAM 1-2 GB. KaiOS bekerja di ponsel tombol dengan harga hingga 30 USD, Android Go — di smartphone murah mulai 50 USD. KaiOS mengonsumsi lebih sedikit daya dan bertahan lebih lama tanpa pengisian daya.
API utama: MozMobileConnection (jaringan), MozTelephony (panggilan), MozSms (SMS), MozContacts (kontak), MozBluetooth (Bluetooth), Geolocation API, Vibration API, Push API, Notification API. Untuk akses ke camera API diperlukan tipe aplikasi privileged. Push API tersedia mulai KaiOS 3.0.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga