KaiOS, Mozilla'nın Boot to Gecko (B2G) web teknolojilerine dayanan tuşlu telefonlar için bir işletim sistemidir. Uygulama geliştirme, yerel dilleri öğrenmeye gerek kalmadan HTML5, CSS ve JavaScript ile yapılır. KaiOS, 256–512 MB RAM'e sahip cihazlarda çalışır ve 4G VoLTE, GPS, Bluetooth'u destekler. KaiOS Technologies'e göre, 2025'te dünya çapında 200 milyondan fazla aktif cihaz vardı.
Önemli Noktalar
KaiOS, KaiOS Technologies tarafından geliştirilen tuşlu telefonlar için bir mobil işletim sistemidir. Sistem, başlangıçta ultra bütçeli cihazlar için web tabanlı bir Android alternatifi olarak oluşturulan Mozilla'nın açık kaynaklı Boot to Gecko (B2G) projesine dayanmaktadır. İlk ticari sürüm 2017'de Hindistan'daki Reliance JioPhone'da yapıldı.
Counterpoint Research'e (2025 Q2) göre KaiOS, küresel mobil işletim sistemi pazarının %2,8'ine sahiptir ve Android (%72) ve iOS'un (%27) ardından diğer platformların önündedir. Hindistan'da, JioPhone programı sayesinde KaiOS'un payı %14'e ulaşmaktadır. Ortalama bir KaiOS cihazının fiyatı 20-30 ABD dolarıdır ve bu da onu gelişmekte olan pazarlar için önemli kılmaktadır.
KaiOS'un temel özelliği, tüm uygulamaların web uygulamaları olmasıdır. Geliştirici, HTML5, CSS ve JavaScript ile kod yazar, bir bildirimle birlikte ZIP arşivine paketler ve KaiStore'da yayınlar. Sistem, yerel APK dosyalarının kurulumunu desteklemez — yalnızca W3C Widget spesifikasyonuna göre Open Web Apps.
KaiOS 2.5 (2018) — Gecko 48 çekirdeğindeki ilk kararlı sürüm, JioPhone 1'de geldi. KaiOS 2.5.3 (2021) — Google Assistant, Google Maps Go, YouTube Go desteği. KaiOS 3.0 (2022) — Gecko 84, geliştirilmiş performans, WebGL 2.0, CSS Grid. KaiOS 3.1 (2024) — 256 MB RAM için optimizasyon, yeni Audio Channel Web API, geliştirilmiş TLS 1.3 güvenliği.
| KaiOS Sürümü | Yıl | Gecko | Önemli Değişiklik |
|---|---|---|---|
| 2.5 | 2018 | 48 | İlk kararlı sürüm, JioPhone 1 |
| 2.5.3 | 2021 | 48 | Google Apps, Assistant, geliştirilmiş güvenlik |
| 3.0 | 2022 | 84 | ES2020, WebGL 2.0, CSS Grid, geliştirilmiş JS performansı |
| 3.1 | 2024 | 84 | 256 MB RAM, TLS 1.3, Audio Channel API |
KaiOS mimarisi üç temel katmandan oluşur: Linux çekirdeği (Gonk), Gecko web motoru ve Gaia kullanıcı arayüzü. Gonk, donanıma bağımlı katmandır ve sürücüleri, HAL'yi (Donanım Soyutlama Katmanı), RIL (Radyo Arayüz Katmanı) modem yığınını ve sensör desteğini içerir. Önyükleyici, sürücüler ve bazı kitaplıklar Android Açık Kaynak Projesi'nden (AOSP) alınmıştır.
Gonk, Gecko'ya donanıma erişim sağlar: kamera, Bluetooth, Wi-Fi, GPS, ses, titreşim, sensörler. Uygulamaların Dalvik/ART için yazıldığı Android'in aksine, KaiOS'te uygulamalar Gecko tarafından Gonk IPC'ye çevrilen Web API'leri aracılığıyla donanıma erişir. Radyo arayüzü (RIL) 4G VoLTE, SMS, USSD ve SIM kart yönetimini sağlar.
KaiOS'teki Gecko yalnızca bir tarayıcı motoru değil, eksiksiz bir uygulama çalışma zamanı ortamıdır. Tüm HTML5 uygulamaları, her uygulamayı ayrı bir süreçte izole eden Gecko Process Manager içinde çalışır. Gecko, W3C Widget Paketleme spesifikasyonunu ve donanım erişimi için Mozilla uzantılarını uygular. Gecko sürümü, geliştirici için hangi Web API'lerinin kullanılabilir olduğunu belirler.
Gaia, işletim sisteminin kendisinin web arayüzüdür: kilit ekranı, ana ekran (başlatıcı), bildirim paneli, arayüz, kişiler, SMS istemcisi. Tüm sistem uygulamaları aynı Open Web Apps'tir. Bir geliştirici, bildirimde ilgili etkinlik işleyicisini kaydederek standart kamerayı veya klavyeyi kendi uygulamasıyla değiştirebilir.
// KaiOS sürümü ve API kullanılabilirliğini kontrol etme
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 };
}
// Google Apps kullanılabilirliğini kontrol etme (yalnızca KaiOS 2.5.3+)
const systemInfo = checkKaiOSVersion();
console.log('KaiOS version:', systemInfo.version);
console.log('Available APIs:', JSON.stringify(systemInfo.features, null, 2));
// Kullanılabilirlik kontrolü ile titreşim kullanma
function triggerHapticFeedback() {
if (navigator.vibrate) {
navigator.vibrate([200, 100, 200]); // titreşim, duraklama, titreşim
}
}checkKaiOSVersion işlevi, KaiOS sürümünü belirlemek için Kullanıcı Aracısını okur ve temel Web API'lerinin kullanılabilirliğini kontrol eder. Sürüm 2.5'te mozMobileConnection, mozTelephony, mozSms mevcuttur — bunlar normal tarayıcılarda bulunmaz ve KaiOS'a özgüdür. triggerHapticFeedback işlevi, geriye dönük uyumlulukla Titreşim API'sini kullanır.
Bir KaiOS uygulaması, HTML dosyaları, CSS, JavaScript, resimler ve bir bildirim içeren ZIP arşividir (.zip biçimi, .apk değil). Minimum uygulama yapısı manifest.webapp (uygulama açıklaması), index.html (giriş noktası), style.css ve icon.png (90×90 piksel kare simge) içerir. Bildirim, W3C Manifest for Web Apps spesifikasyonunu takip eder.
manifest.webapp dosyası, bir KaiOS uygulamasının kök yapılandırma dosyasıdır. Zorunlu alanlar: name (ad), description (140 karaktere kadar açıklama), launch_path (index.html yolu), icons (simge boyutları 30×30, 60×60, 90×90, 120×120). type alanı: 'certified' (sistem uygulamaları), 'privileged' (Web API erişimi), 'web' (özel izin yok). Ayrıcalıklı uygulamalar için izinler permissions dizisinde belirtilir.
// manifest.webapp — KaiOS uygulama yapılandırması
{
"name": "El feneri",
"description": "Kamera flaşını açar ve kapatır",
"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": "Flaşı etkinleştirmek için gerekli"
}
},
"default_locale": "ru",
"orientation": "portrait-primary",
"fullscreen": true
}Bildirim, uygulamanın privileged türünde olduğunu belirtir — bu, izinler aracılığıyla kamera API'sine erişim sağlar. Simge boyutları kesinlikle 30×30, 60×60, 90×90 ve 120×120 pikseldir. orientation alanı dikey modu kısıtlar — tuşlu telefonlarda genellikle ekran döndürme için ivmeölçer bulunmaz. fullscreen: true durum çubuğunu gizler.
KaiOS'teki bir HTML5 sayfası, sınırlı ekranı (genellikle 240×320 piksel) dikkate alarak standart etiketler kullanır. Viewport meta etiketi zorunludur: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">. KaiOS dokunma olaylarını desteklemez (tuşlu telefonlarda dokunmatik ekran yoktur); tüm gezinme tuşlar aracılığıyla yapılır: hareket için ArrowUp, ArrowDown, seçim için Enter, geri dönmek için Back.
// index.html — KaiOS için basit el feneri uygulaması
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1">
<title>El feneri</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="app">
<div id="status" class="status-off">Kapalı</div>
<div id="hint">Açmak için Enter'a basın</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 kullanılamıyor: ' + 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 ? 'Açık' : 'Kapalı';
statusEl.className = isFlashOn ? 'status-on' : 'status-off';
} catch (e) {
showError('Hata: ' + e.message);
}
}
// Donanım Enter düğmesini işleme
document.addEventListener('keydown', function(e) {
if (e.key === 'Enter') {
toggleFlash();
}
});
initCamera();
</script>
</body>
</html>El feneri uygulaması, kamera flaşını kontrol etmek için MozCamera API'sini kullanır. Kullanıcı donanım Enter düğmesine basar — keydown işleyicisi tetiklenir ve flashMode'u on ve off arasında değiştirir. Durum, görsel gösterge için status-on/status-off sınıflarına sahip bir metin bloğunda görüntülenir. MozCamera API'si yalnızca bildirimde kamera izni olan ayrıcalıklı uygulamalar için kullanılabilir.
KaiOS Web API, telefonun donanım yeteneklerine erişim sağlayan bir dizi JavaScript arayüzüdür. API'lerin çoğu, Mozilla'nın tescilli uzantılarıdır (moz ön ekli) ve normal tarayıcılarda bulunmaz. API'yi kullanmak için uygulamanın bildirimde privileged veya certified türünde olması gerekir.
MozMobileConnection — ağ bilgisi: operatör, sinyal gücü, ağ türü (4G/3G/2G), IMEI, dolaşım durumu. MozTelephony — çağrı yönetimi: arama, kabul etme, sonlandırma, konferans görüşmesi, çağrı durumu. MozSms — SMS, MMS gönderme ve alma, SIM mesaj yönetimi. MozContacts — telefon rehberini okuma ve yazma. MozBluetooth — Bluetooth yönetimi: cihaz keşfi, eşleştirme, dosya aktarımı. Push API — sunucudan push bildirimleri alma.
// KaiOS Web API aracılığıyla kişiler ve aramalarla çalışma
const TelephonyManager = {
// Numarayla arama yapma
async makeCall(phoneNumber) {
if (!navigator.mozTelephony) {
throw new Error('Telephony API kullanılamıyor');
}
const call = navigator.mozTelephony.dial(phoneNumber);
call.onconnected = () => console.log('Arama bağlandı');
call.ondisconnected = () => console.log('Arama sona erdi');
return call;
},
// Telefon rehberinden kişi listesi alma
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);
};
});
},
// SMS gönderme
async sendSms(phoneNumber, message) {
if (!navigator.mozSms) {
throw new Error('SMS API kullanılamıyor');
}
const request = navigator.mozSms.send(phoneNumber, message);
return new Promise((resolve, reject) => {
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
}
};
// Kullanım örneği
TelephonyManager.getContacts()
.then(contacts => console.log('Bulunan kişi sayısı:', contacts.length))
.catch(err => console.error(err));TelephonyManager nesnesi, üç temel KaiOS API'sini birleştirir: aramalar için mozTelephony, rehber için mozContacts ve mesajlar için mozSms. İmleçli getAll(), büyük veri hacimlerinin (1000+ girişli kişiler için tipik) eşzamansız okunması için bir kalıptır. Tüm API'ler, onsuccess ve onerror işleyicileriyle bir DOMRequest döndürür.
KaiOS Web API'lerinin sınırlamaları vardır: çağrı ve SMS API'leri yalnızca telefonlarda kullanılabilir (tabletlerde değil), kamera — yalnızca fiziksel kamera varsa, Bluetooth — sınırlı HSP/HFP profili. Push API, Google Firebase (FCM) sunucu desteği veya özel bir sunucu gerektirir. Coğrafi konum API'si, donanım desteğine bağlı olarak A-GPS veya Cell ID kullanır.
| API | Uygulama Türü | Kullanılabilirlik | KaiOS Sürümü |
|---|---|---|---|
| MozMobileConnection | privileged | Tüm telefonlar | 2.5+ |
| MozTelephony | privileged | Yalnızca telefonlar | 2.5+ |
| MozSms | privileged | Yalnızca telefonlar | 2.5+ |
| MozContacts | privileged | Tüm telefonlar | 2.5+ |
| MozBluetooth | certified | Bluetooth modülüyle | 2.5+ |
| Geolocation API | web | GPS/Cell ID ile | 2.5+ |
| Push API | privileged | İnternet ile | 3.0+ |
| WebGL 2.0 | web | GPU hızlandırmalı | 3.0+ |
KaiOS kullanıcı arayüzü, T9 klavye ve donanım düğmeleriyle kontrol için tasarlanmıştır. Çoğu tuşlu telefonda standart ekran çözünürlüğü 240×320 pikseldir (QVGA). Dokunmatik ekranın olmaması, tüm gezinmenin keydown/keyup olayları aracılığıyla uygulandığı anlamına gelir: ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Enter, Back (veya Escape).
KaiOS, CSS :focus'u olağan şekilde desteklemez — odak, tabindex ve JavaScript aracılığıyla yönetilir. Geliştirici, mevcut seçili öğeyi manuel olarak izlemeli ve tuşlara basıldığında odağı taşımalıdır. Gezinmeyi basitleştirmek için liste öğelerinde data-index kullanılması önerilir. Seçili öğe genellikle zıt bir CSS arka plan rengine sahip .selected sınıfıyla vurgulanır.
// KaiOS için liste üzerinde odak gezinmesi
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();
}
}
// Menü listesi için gezinme başlatma
const nav = new ListNavigation('#menu-list');
nav.container.addEventListener('itemselected', (e) => {
console.log('Seçilen öğe:', e.detail.index);
});ListNavigation sınıfı, KaiOS için tam odak gezinmesi uygular. ArrowUp/ArrowDown, data-index'e sahip öğeler arasında döngüsel olarak odağı hareket ettirir. Enter, özel bir itemselected olayını tetikler. Backspace/Escape önceki ekrana döner. block: nearest ile scrollIntoView, görünür alanın dışına çıkıldığında ekranı otomatik olarak kaydırır.
KaiOS 2.5, CSS 2.1 + kısmen CSS3'ü (border-radius, box-shadow, gradients) destekler. Flexbox, KaiOS 2.5'te kısmen, KaiOS 3.0'da CSS Grid dahil tamamen desteklenir. Uyumluluk için sabit genişlikte float tabanlı düzen kullanılması önerilir. Varsayılan yazı tipi TizenSans veya Asya pazarları için Noto Sans CJK'dir. Metin boyutu ana içerik için 14-16 piksel, başlıklar için 18-20 pikseldir.
KaiStore, KaiOS için resmi uygulama mağazasıdır ve tüm cihazlara önceden yüklenmiştir. Geliştiriciler, KaiOS Developer Portal'da (developer.kaiostech.com) kaydolur, imzalı bir ZIP paketi yükler ve açıklamayı doldurur. Denetleme, güvenlik, kararlılık ve içerik politikasına uygunluğu kontrol eder. Ortalama inceleme süresi 3-5 iş günüdür.
KaiOS, bir KaiOS Certificate aracılığıyla uygulamanın dijital olarak imzalanmasını gerektirir. Geliştirici, kaios-sign yardımcı programını kullanarak bir anahtar çifti (özel + genel) oluşturur, genel anahtarı KaiOS Developer Portal'a gönderir ve bir sertifika alır. İmzalı .zip dosyası, META-INF klasöründe imzayı içerir. İmza olmadan uygulama yalnızca geliştirme cihazlarına kurulabilir.
KaiStore, ücretsiz uygulamaları, KaiOS Ads SDK aracılığıyla reklamcılığı ve operatör faturalaması (Direct Carrier Billing) yoluyla uygulama içi satın alımları destekler. KaiStore'un komisyonu gelirin %30'udur. Alternatif bir kanal, OEM üreticileri (Jio, Nokia, Alcatel, Doro) aracılığıyla ön yüklemedir. Ön yükleme, cihaz üreticisiyle doğrudan sözleşme gerektirir.
| Aşama | Eylem | Süre |
|---|---|---|
| Kayıt | KaiOS Developer Portal'da hesap oluşturma | 1 gün |
| İmzalama | Anahtar oluşturma, sertifika alma | 1-2 gün |
| Derleme | Bildirim ve imzayla .zip paketleme | 1 saat |
| Yükleme | Paketi yükleme, açıklamayı doldurma | 1 gün |
| İnceleme | Güvenlik ve kalite kontrolü | 3-5 gün |
| Yayınlama | Tüm bölgeler için KaiStore'da yayınlama | 1 gün |
KaiStore, bazı ülkelerde ücretli uygulamaları desteklemez (yalnızca operatör faturalamasıyla ödeme). 2G/3G ağları üzerinden indirme için uygulama boyutu 10 MB ile sınırlıdır. Uygulama 50 MB'tan fazla RAM kullanmamalıdır. Bildirimde açıkça beyan edilmeden mozMobileConnection API'sine erişim yasaktır. Politika ihlalleri, geliştirici hesabının askıya alınmasıyla sonuçlanır.
Sıkça Sorulan Sorular
KaiOS, Mozilla'nın Gecko web motoruna dayanan tuşlu telefonlar için bir işletim sistemidir. 256-512 MB RAM'e sahip cihazlarda çalışır ve 4G VoLTE, GPS ve Bluetooth'u destekler. Uygulamalar HTML5, CSS ve JavaScript ile yazılır. Counterpoint Research'e göre KaiOS, 200 milyondan fazla cihazda kuruludur.
Tek geliştirme yığını HTML5, CSS ve JavaScript'tir. KaiOS, C++ veya Java gibi yerel dilleri desteklemez. Tüm uygulamalar W3C spesifikasyonuna göre Open Web Apps'tir. Donanım işlevlerine erişmek için moz ön ekli Mozilla Web API'leri kullanılır. Uygulama, manifest.webapp ile ZIP arşivi olarak paketlenir.
Resmi mağaza KaiStore'dur ve KaiOS Developer Portal'da kayıt gerektirir. Uygulama bir geliştirici sertifikasıyla imzalanır ve .zip biçiminde yüklenir. Denetleme 3-5 gün sürer. Alternatif bir kanal, OEM üreticisiyle sözleşme yoluyla yeni cihazlara ön yüklemedir. KaiStore'un komisyonu %30'dur.
KaiOS, HTML5 uygulamaları için Gecko web motorunu kullanır ve 256-512 MB RAM gerektirir. Android Go, Dalvik/ART'te yerel APK'leri çalıştırır ve 1-2 GB RAM gerektirir. KaiOS, 30 dolara kadar tuşlu telefonlarda çalışırken Android Go, 50 dolardan başlayan bütçe akıllı telefonlarda çalışır. KaiOS daha az güç tüketir ve tek şarjla daha uzun süre dayanır.
Temel API'ler: MozMobileConnection (ağ), MozTelephony (aramalar), MozSms (SMS), MozContacts (kişiler), MozBluetooth (Bluetooth), Geolocation API, Vibration API, Push API, Notification API. Kamera API'sine erişim, ayrıcalıklı uygulama türü gerektirir. Push API, KaiOS 3.0'dan itibaren kullanılabilir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun