KaiOS هو نظام تشغيل للهواتف ذات الأزرار، يعتمد على تقنيات الويب Boot to Gecko (B2G) من Mozilla. يتم تطوير التطبيقات باستخدام HTML5 وCSS وJavaScript دون الحاجة لتعلم لغات أصلية. يعمل KaiOS على أجهزة بذاكرة RAM 256–512 ميغابايت ويدعم 4G VoLTE وGPS وBluetooth. وفقًا لـ KaiOS Technologies، كان هناك أكثر من 200 مليون جهاز نشط حول العالم في عام 2025.
الخلاصة
KaiOS هو نظام تشغيل محمول للهواتف ذات الأزرار تم تطويره بواسطة KaiOS Technologies. يعتمد النظام على مشروع مفتوح المصدر Boot to Gecko (B2G) من Mozilla، الذي تم إنشاؤه أصلاً كبديل ويب لنظام Android للأجهزة فائقة الميزانية. كان الإصدار التجاري الأول في عام 2017 على هاتف Reliance JioPhone في الهند.
وفقًا لـ Counterpoint Research (الربع الثاني 2025)، يستحوذ KaiOS على 2.8% من سوق أنظمة تشغيل الأجهزة المحمولة العالمية، خلف Android (72%) وiOS (27%)، ولكن قبل المنصات الأخرى. في الهند، تصل حصة KaiOS إلى 14% بفضل برنامج JioPhone. يبلغ متوسط سعر جهاز KaiOS 20-30 دولارًا أمريكيًا، مما يجعله أساسيًا للأسواق الناشئة.
الميزة الرئيسية لـ KaiOS هي أن جميع التطبيقات هي تطبيقات ويب. يكتب المطور الكود بلغة HTML5 وCSS وJavaScript، ويحزمها في أرشيف ZIP مع ملف تعريفي وينشرها على KaiStore. لا يدعم النظام تثبيت ملفات APK الأصلية — فقط Open Web Apps وفقًا لمواصفات W3C Widget.
KaiOS 2.5 (2018) — أول إصدار مستقر على نواة Gecko 48، تم شحنه على JioPhone 1. KaiOS 2.5.3 (2021) — دعم Google Assistant وGoogle Maps Go وYouTube Go. KaiOS 3.0 (2022) — Gecko 84 وأداء محسّن وWebGL 2.0 وCSS Grid. KaiOS 3.1 (2024) — تحسين لـ 256 ميغابايت RAM وWeb API جديد Audio Channel وأمان TLS 1.3 محسّن.
| إصدار KaiOS | السنة | Gecko | التغيير الرئيسي |
|---|---|---|---|
| 2.5 | 2018 | 48 | أول إصدار مستقر، JioPhone 1 |
| 2.5.3 | 2021 | 48 | تطبيقات Google، Assistant، أمان محسّن |
| 3.0 | 2022 | 84 | ES2020، WebGL 2.0، CSS Grid، أداء JS محسّن |
| 3.1 | 2024 | 84 | 256 ميغابايت RAM، TLS 1.3، Audio Channel API |
هندسة KaiOS تتكون من ثلاث طبقات رئيسية: نواة Linux (Gonk) ومحرك الويب Gecko وواجهة المستخدم Gaia. Gonk هي الطبقة المعتمدة على الأجهزة، وتشمل برامج التشغيل وطبقة تجريد الأجهزة (HAL) وحزمة مودم RIL (Radio Interface Layer) ودعم المستشعرات. تم أخذ محمل الإقلاع وبرامج التشغيل وبعض المكتبات من Android Open Source Project (AOSP).
يوفر Gonk لـ Gecko الوصول إلى الأجهزة: الكاميرا وBluetooth وWi-Fi وGPS والصوت والاهتزاز والمستشعرات. على عكس Android، حيث تُكتب التطبيقات لـ Dalvik/ART، في KaiOS تصل التطبيقات إلى الأجهزة عبر Web API تُترجمها Gecko إلى Gonk IPC. توفر واجهة الراديو (RIL) 4G VoLTE وSMS وUSSD وإدارة بطاقات SIM.
Gecko في KaiOS ليس مجرد محرك متصفح بل بيئة تشغيل تطبيقات كاملة. تعمل جميع تطبيقات HTML5 داخل Gecko Process Manager، الذي يعزل كل تطبيق في عملية منفصلة. ينفذ Gecko مواصفات W3C Widget Packaging وإضافات Mozilla للوصول إلى الأجهزة. يحدد إصدار Gecko أي Web API متاحة للمطور.
Gaia هي واجهة الويب لنظام التشغيل نفسه: شاشة القفل والشاشة الرئيسية (مشغل التطبيقات) ولوحة الإشعارات وطلب الأرقام وجهات الاتصال وعميل SMS. جميع تطبيقات النظام هي نفس Open Web Apps. يمكن للمطور استبدال الكاميرا أو لوحة المفاتيح القياسية بتطبيقه الخاص عن طريق تسجيل معالج النشاط المقابل في الملف التعريفي.
// التحقق من إصدار KaiOS وتوفر 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 };
}
// التحقق من توفر تطبيقات Google (KaiOS 2.5.3+ فقط)
const systemInfo = checkKaiOSVersion();
console.log('KaiOS version:', systemInfo.version);
console.log('Available APIs:', JSON.stringify(systemInfo.features, null, 2));
// استخدام الاهتزاز مع التحقق من التوفر
function triggerHapticFeedback() {
if (navigator.vibrate) {
navigator.vibrate([200, 100, 200]); // اهتزاز، توقف، اهتزاز
}
}تقرأ دالة checkKaiOSVersion User Agent لتحديد إصدار KaiOS وتتحقق من توفر Web API الرئيسية. في الإصدار 2.5، تتوفر mozMobileConnection وmozTelephony وmozSms — وهي غائبة في المتصفحات العادية وفريدة لـ KaiOS. تستخدم دالة triggerHapticFeedback Vibration API مع توافق عكسي.
تطبيق KaiOS هو أرشيف ZIP (صيغة .zip وليس .apk) يحتوي على ملفات HTML وCSS وJavaScript وصور وملف تعريفي. يتضمن الهيكل الأدنى للتطبيق manifest.webapp (وصف التطبيق) وindex.html (نقطة الدخول) وstyle.css وicon.png (أيقونة مربعة 90×90 بكسل). يتبع الملف التعريفي مواصفات W3C Manifest for Web Apps.
ملف manifest.webapp هو ملف التكوين الجذر لتطبيق KaiOS. الحقول الإلزامية: name (الاسم) وdescription (وصف حتى 140 حرفًا) وlaunch_path (المسار إلى index.html) وicons (أحجام الأيقونات 30×30 و60×60 و90×90 و120×120). حقل type: 'certified' (تطبيقات النظام) و'privileged' (الوصول إلى Web API) و'web' (بدون أذونات خاصة). تُحدد الأذونات للتطبيقات privileged في مصفوفة permissions.
// manifest.webapp — تكوين تطبيق KaiOS
{
"name": "مصباح يدوي",
"description": "يشغل ويطفئ فلاش الكاميرا",
"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": "مطلوب لتشغيل الفلاش"
}
},
"default_locale": "ru",
"orientation": "portrait-primary",
"fullscreen": true
}يحدد الملف التعريفي أن التطبيق من نوع privileged — وهذا يمنح الوصول إلى API الكاميرا من خلال الأذونات. أحجام الأيقونات هي بدقة 30×30 و60×60 و90×90 و120×120 بكسل. يقيد حقل orientation الوضع الرأسي — الهواتف ذات الأزرار عادة لا تحتوي على مقياس تسارع لتدوير الشاشة. fullscreen: true يخفي شريط الحالة.
تستخدم صفحة HTML5 في KaiOS علامات قياسية مع مراعاة الشاشة المحدودة (عادة 240×320 بكسل). علامة viewport meta إلزامية: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">. لا يدعم KaiOS أحداث اللمس (لا توجد شاشة لمس على الهواتف ذات الأزرار)؛ كل التنقل يتم عبر المفاتيح: ArrowUp وArrowDown للحركة وEnter للاختيار وBack للعودة.
// index.html — تطبيق مصباح يدوي بسيط لـ 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);
}
}
// معالجة زر Enter الفعلي
document.addEventListener('keydown', function(e) {
if (e.key === 'Enter') {
toggleFlash();
}
});
initCamera();
</script>
</body>
</html>يستخدم تطبيق المصباح اليدوي MozCamera API للتحكم في فلاش الكاميرا. يضغط المستخدم على زر Enter الفعلي — يتم تشغيل معالج keydown، مما يبدل flashMode بين on وoff. يتم عرض الحالة في كتلة نصية مع فئات status-on/status-off للإشارة البصرية. MozCamera API متاح فقط للتطبيقات privileged مع إذن الكاميرا في الملف التعريفي.
KaiOS Web API هي مجموعة من واجهات JavaScript توفر الوصول إلى إمكانيات أجهزة الهاتف. معظم API هي إضافات مملوكة لـ Mozilla (ببادئة moz) وغير متوفرة في المتصفحات العادية. لاستخدام API، يجب أن يكون التطبيق من نوع privileged أو certified في الملف التعريفي.
MozMobileConnection — معلومات الشبكة: المشغل وقوة الإشارة ونوع الشبكة (4G/3G/2G) وIMEI وحالة التجوال. MozTelephony — إدارة المكالمات: الاتصال والاستلام والإنهاء والمؤتمر وحالة المكالمة. MozSms — إرسال واستقبال SMS وMMS وإدارة رسائل SIM. MozContacts — قراءة وكتابة دفتر الهاتف. MozBluetooth — إدارة Bluetooth: اكتشاف الأجهزة والاقتران ونقل الملفات. Push API — استقبال إشعارات الدفع من الخادم.
// العمل مع جهات الاتصال والمكالمات عبر Web API لـ KaiOS
const TelephonyManager = {
// إجراء مكالمة برقم
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;
},
// الحصول على قائمة جهات الاتصال من دفتر الهاتف
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
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);
});
}
};
// مثال استخدام
TelephonyManager.getContacts()
.then(contacts => console.log('عدد جهات الاتصال التي تم العثور عليها:', contacts.length))
.catch(err => console.error(err));يجمع كائن TelephonyManager بين ثلاث API رئيسية لـ KaiOS: mozTelephony للمكالمات وmozContacts لدفتر الهاتف وmozSms للرسائل. getAll() مع مؤشر هو نمط للقراءة غير المتزامنة لكميات كبيرة من البيانات (نموذجي لجهات اتصال من 1000+ إدخال). جميع API تُرجع DOMRequest مع معالجات onsuccess وonerror.
Web API لـ KaiOS لها قيود: API المكالمات وSMS متوفرة فقط على الهواتف (وليس الأجهزة اللوحية) والكاميرا فقط في حالة وجود كاميرا فعلية وBluetooth بملف تعريف HSP/HFP محدود. Push API تتطلب دعم خادم Google Firebase (FCM) أو خادم مخصص. تستخدم API تحديد المواقع A-GPS أو Cell ID حسب دعم الأجهزة.
| API | نوع التطبيق | التوفر | إصدار KaiOS |
|---|---|---|---|
| MozMobileConnection | privileged | جميع الهواتف | 2.5+ |
| MozTelephony | privileged | الهواتف فقط | 2.5+ |
| MozSms | privileged | الهواتف فقط | 2.5+ |
| MozContacts | privileged | جميع الهواتف | 2.5+ |
| MozBluetooth | certified | مع وحدة Bluetooth | 2.5+ |
| Geolocation API | web | مع GPS/Cell ID | 2.5+ |
| Push API | privileged | مع الإنترنت | 3.0+ |
| WebGL 2.0 | web | مع تسريع GPU | 3.0+ |
واجهة مستخدم KaiOS مصممة للتحكم بلوحة مفاتيح T9 والأزرار الفعلية. دقة الشاشة القياسية هي 240×320 بكسل (QVGA) في معظم الهواتف ذات الأزرار. عدم وجود شاشة لمس يعني أن كل التنقل يتم عبر أحداث keydown/keyup: ArrowUp وArrowDown وArrowLeft وArrowRight وEnter وBack (أو Escape).
لا يدعم KaiOS CSS :focus بالطريقة المعتادة — يُدار التركيز عبر tabindex وJavaScript. يجب على المطور تتبع العنصر المحدد حاليًا يدويًا وتحريك التركيز عند الضغط على المفاتيح. يُوصى باستخدام data-index على عناصر القائمة لتبسيط التنقل. يتم تمييز العنصر المحدد عادة بفئة .selected بخلفية CSS ذات لون متباين.
// التنقل بالتركيز عبر القائمة لـ 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();
}
}
// تهيئة التنقل لقائمة
const nav = new ListNavigation('#menu-list');
nav.container.addEventListener('itemselected', (e) => {
console.log('تم تحديد العنصر:', e.detail.index);
});تنفذ فئة ListNavigation تنقلًا كاملًا بالتركيز لـ KaiOS. ينقل ArrowUp/ArrowDown التركيز دوريًا عبر العناصر ذات data-index. يؤدي Enter إلى تشغيل حدث مخصص itemselected. يعود Backspace/Escape إلى الشاشة السابقة. يقوم scrollIntoView مع block: nearest بتمرير الشاشة تلقائيًا عند الخروج من المنطقة المرئية.
يدعم KaiOS 2.5 CSS 2.1 + جزئيًا CSS3 (border-radius وbox-shadow وgradients). Flexbox مدعوم جزئيًا في KaiOS 2.5 ومدعوم بالكامل بما في ذلك CSS Grid في KaiOS 3.0. يُوصى باستخدام تخطيط قائم على float بعرض ثابت للتوافق. الخط الافتراضي هو TizenSans أو Noto Sans CJK للأسواق الآسيوية. حجم النص 14-16 بكسل للمحتوى الرئيسي و18-20 للعناوين.
KaiStore هو متجر التطبيقات الرسمي لـ KaiOS، مثبت مسبقًا على جميع الأجهزة. يسجل المطورون في KaiOS Developer Portal (developer.kaiostech.com) ويرفعون حزمة ZIP موقعة ويملؤون الوصف. تتحقق المراجعة من الأمان والاستقرار والامتثال لسياسة المحتوى. متوسط وقت المراجعة هو 3-5 أيام عمل.
يتطلب KaiOS توقيعًا رقميًا للتطبيق من خلال KaiOS Certificate. يولد المطور زوج مفاتيح (خاص + عام) باستخدام أداة kaios-sign ويرسل المفتاح العام إلى KaiOS Developer Portal ويتلقى شهادة. يحتوي ملف .zip الموقع على التوقيع في مجلد META-INF. بدون توقيع، يمكن تثبيت التطبيق فقط على أجهزة التطوير.
يدعم KaiStore التطبيقات المجانية والإعلانات عبر KaiOS Ads SDK والمشتريات داخل التطبيق من خلال فواتير المشغل (Direct Carrier Billing). عمولة KaiStore هي 30% من الإيرادات. قناة بديلة هي التثبيت المسبق عبر مصنعي OEM (Jio وNokia وAlcatel وDoro). يتطلب التثبيت المسبق عقدًا مباشرًا مع مصنع الجهاز.
| المرحلة | الإجراء | المدة |
|---|---|---|
| التسجيل | إنشاء حساب في KaiOS Developer Portal | يوم واحد |
| التوقيع | توليد مفتاح، الحصول على شهادة | 1-2 يوم |
| البناء | تغليف .zip مع الملف التعريفي والتوقيع | ساعة واحدة |
| الرفع | رفع الحزمة، ملء الوصف | يوم واحد |
| المراجعة | فحص الأمان والجودة | 3-5 أيام |
| النشر | الإصدار في KaiStore لجميع المناطق | يوم واحد |
لا يدعم KaiStore التطبيقات المدفوعة في بعض البلدان (الدفع فقط عبر فواتير المشغل). حجم التطبيق محدود بـ 10 ميغابايت للتنزيل عبر شبكات 2G/3G. يجب ألا يستخدم التطبيق أكثر من 50 ميغابايت من RAM. الوصول إلى API mozMobileConnection محظور دون إعلان صريح في الملف التعريفي. يؤدي انتهاك السياسات إلى تعليق حساب المطور.
الأسئلة الشائعة
KaiOS هو نظام تشغيل للهواتف ذات الأزرار يعتمد على محرك الويب Gecko من Mozilla. يعمل على أجهزة بذاكرة RAM 256-512 ميغابايت ويدعم 4G VoLTE وGPS وBluetooth. تُكتب التطبيقات بلغة HTML5 وCSS وJavaScript. وفقًا لـ Counterpoint Research، KaiOS مثبت على أكثر من 200 مليون جهاز.
مجموعة التطوير الوحيدة هي HTML5 وCSS وJavaScript. لا يدعم KaiOS اللغات الأصلية مثل C++ أو Java. جميع التطبيقات هي Open Web Apps وفقًا لمواصفات W3C. تُستخدم Web API من Mozilla ببادئة moz للوصول إلى وظائف الأجهزة. يتم تغليف التطبيق كأرشيف ZIP مع manifest.webapp.
المتجر الرسمي هو KaiStore مع التسجيل في KaiOS Developer Portal. يتم توقيع التطبيق بشهادة مطور ورفعه بصيغة .zip. تستغرق المراجعة 3-5 أيام. قناة بديلة هي التثبيت المسبق على الأجهزة الجديدة عبر عقد مع مصنع OEM. عمولة KaiStore هي 30%.
KaiOS يستخدم محرك الويب Gecko لتطبيقات HTML5 ويتطلب 256-512 ميغابايت RAM. Android Go يشغل APK الأصلي على Dalvik/ART ويتطلب 1-2 جيغابايت RAM. يعمل KaiOS على هواتف بأزرار يصل سعرها إلى 30 دولارًا، بينما يعمل Android Go على هواتف ذكية اقتصادية من 50 دولارًا. يستهلك KaiOS طاقة أقل ويعمل لفترة أطول بشحنة واحدة.
API الرئيسية: MozMobileConnection (الشبكة) وMozTelephony (المكالمات) وMozSms (SMS) وMozContacts (جهات الاتصال) وMozBluetooth (Bluetooth) وGeolocation API وVibration API وPush API وNotification API. الوصول إلى API الكاميرا يتطلب نوع تطبيق privileged. Push API متاحة بدءًا من KaiOS 3.0.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.