يقلّل وحدة CellBroadcast من الجهود المتكرّرة التي تبذلها الشركات المصنّعة للأجهزة الأصلية (ما يؤدي بدوره إلى تقليل التجزئة في منظومة Android المتكاملة وتوفير سلوك متّسق للمستخدمين النهائيين)، كما يساعد في تبسيط اختبارات شركات الاتصالات وإجراءات الاعتماد المتعلقة بمتطلبات CellBroadcast (لأنّه لا يمكن للشركات المصنّعة للأجهزة الأصلية تعديل الرمز). ويمكن تحديث هذه الوحدة، ما يعني أنّه يمكنها تلقّي تحديثات للوظائف خارج دورة إصدار Android العادية.
تنسيق الحزمة
يتألف وحدة CellBroadcast من الخدمة والتطبيق التاليَين.
تتيح خدمة CellBroadcastService فك ترميز الرسائل القصيرة عبر البث الخلوي، وتحديد الموقع الجغرافي لخدمة "تنبيهات الطوارئ اللاسلكية" (WEA) 3.0، والتحقّق من تكرار الرسائل، وبث الرسائل إلى التطبيقات. وهي خدمة رسائل تستهدف مناطق جغرافية محددة وتستند إلى تحديد الموقع الجغرافي، وهي مصمَّمة لإرسال الرسائل إلى عدة مستخدمين للهواتف الجوّالة في منطقة محدّدة وفي الوقت نفسه. تم تحديد الخدمة من قِبل لجنة GSM التابعة للمعهد الأوروبي لمعايير الاتصالات ومشروع الشراكة من الجيل الثالث، وهي جزء من معايير الاتصالات.
تطبيق CellBroadcastReceiver هو تطبيق نظام تلقائي يعالج التنبيهات الطارئة وغير الطارئة (مثل تنبيهات العنبر والتنبيهات الرئاسية) ويعرض المعلومات للمستخدمين النهائيين استنادًا إلى لوائح شركات الاتصالات واللوائح الإقليمية.
مسار رسائل البث الخلوي
يوضّح الشكل التالي مسار رسائل البث الخلوي.
الشكل 1: مسار رسائل CellBroadcastReceiver
تُرسِل طبقة واجهة الراديو (RIL) إشعارًا إلى
InBoundSMSHandlerبشأن رسالة SMS للبث الخلوي CDMA/GSM.يعيد إطار العمل توجيه رسالة SMS الخاصة بالبث الخلوي إلى وحدة CBS من أجل تحليل الرسالة الواردة ومعالجتها.
بعد معالجة الرسالة، يعيد CellBroadcastService توجيه هدف Intent إلى تطبيق CellBroadcastReceiver التلقائي في النظام.
يعرض تطبيق CellBroadcastReceiver الرسالة للمستخدم.
تنسيق الوحدة
يتم تضمين تطبيقَي CellBroadcastService وCellBroadcastReceiver في ملف APEX واحد (com.android.cellbroadcast)، وهو متاح للأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث. تتضمّن الوحدة رمزًا في
package/app/CellBroadcastReceiver وتنقل فئات إطار العمل الحالية إلى
packages/modules/CellBroadcastService.
المهام التابعة للوحدة
يتفاعل وحدة CellBroadcast مع إطار العمل باستخدام واجهات برمجة التطبيقات @SystemApi الثابتة فقط (بدون واجهات برمجة التطبيقات @hide) ويعتمد على المكتبات الثابتة التالية.
Androidx.legacy_legacy-support-v13Androidx.recyclerview_recyclerviewAndroidx.preference_preferenceandroidx.legacy_legacy-preference-v14androidx.appcompat_appcompat
يمكنك تخصيص الإعدادات باستخدام تراكبات موارد وقت التشغيل (RRO).
ضبط الأذونات
يتم توقيع وحدة CellBroadcast باستخدام توقيع Google بدلاً من توقيع النظام الأساسي، ما يعني أنّ الوحدة تفقد إذن الوصول إلى أذونات التوقيع.
بدلاً من ذلك، يحدّد نظام التشغيل Android 11 إذن التوقيع الجديد com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY داخل وحدة CellBroadcast، ولا يمكن لأي حِزم خارج الوحدة الحصول على الإذن لأنّها موقّعة باستخدام المفتاح نفسه. يسمح هذا الإذن لتطبيق CellBroadcastReceiver بالوصول الكامل إلى قاعدة البيانات داخل CellBroadcastService.
تمنح المنصة إذن android.permission.READ_CELL_BROADCASTSوقت التشغيل لتطبيق SMS التلقائي في النظام من أجل الوصول إلى سجلّ تنبيهات الطوارئ.
دمج وحدة CellBroadcast
يوضّح هذا القسم كيفية دمج وحدة CellBroadcast.
الدمج مع "الإعدادات"
يمكنك تحديد مكان دمج إعدادات CellBroadcast في تطبيق "الإعدادات" (يصل المستخدمون النهائيون إلى صفحة إعدادات CellBroadcast من خلال الإعدادات > التطبيقات والإشعارات > الإعدادات المتقدّمة > تنبيه الطوارئ). لتشغيل تطبيق CellBroadcastReceiver من تطبيق "الإعدادات"، غيِّر إعدادات الضبط التالية باستخدام اسم الحزمة com.android.cellbroadcastreceiver.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
التكامل مع تطبيقات المراسلة
يمكنك دمج رابط تطبيق في تطبيقات المراسلة لفتح سجلّ رسائل CellBroadcast. في تطبيق "الرسائل" على Android، تم دمج هذه الميزة في
الإعدادات > الإعدادات المتقدّمة > إنذارات الطوارئ. لدمج رابط في تطبيق المراسلة الخاص بك، حدِّد المسار في تطبيق المراسلة واضبط اسم المكوّن لوحدة CellBroadcast على com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity.
التكامل مع صندوق وارد الرسائل القصيرة
يمكنك تفعيل عرض رسائل CellBroadcast في تطبيق مراسلة التلقائي من خلال تجاوز الإعداد التالي باستخدام تراكب الموارد في الوقت الفعلي.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
بما أنّ منح الأذونات يقع خارج نطاق وحدة CellBroadcast،
عليك منح إذن AppOpsManager.OP_WRITE_SMS لوحدة CellBroadcast
لتوفير دعم شامل. للحصول على نموذج تنفيذ مرجعي لنظام التشغيل AOSP، يُرجى الرجوع إلى رقعة SmsApplication.java
البرنامج هذه.
تشغيل تطبيق CellBroadcastReceiver
يحتوي تطبيق CellBroadcastReceiver على نقاط التشغيل التالية.
قائمة تطبيق "الإعدادات"
تطبيق (بما في ذلك التطبيقات التابعة لجهات خارجية)، مثل تطبيق الرسائل، يرتبط بسجلّ رسائل البث الخلوي.
(اختياري) رمز تشغيل من شاشة Android الرئيسية أضافه المصنّع الأصلي للجهاز لمزيد من التفاصيل، يُرجى الاطّلاع على إضافة رمز تشغيل.
إعدادات تطبيق CellBroadcastReceiver
تعرض لقطات الشاشة التالية قائمة إعدادات تطبيق CellBroadcastReceiver.
الشكل 2: قائمة إعدادات تطبيق CellBroadcastReceiver
الشكل 3: شاشة سجلّ تنبيهات الطوارئ
إضافة رموز التشغيل
يمكنك تفعيل إمكانية الوصول إلى سجلّ رسائل CellBroadcast من مشغّل التطبيقات ومن خلال رموز التشغيل الخاصة بك.
لإتاحة الوصول إلى سجلّ الرسائل من مشغّل التطبيقات، عليك تجاهل الإعداد التالي باستخدام RRO.
<item type="bool" name="show_message_history_in_launcher" />لإلغاء الرمز التلقائي في AOSP، عليك إلغاء الإعداد التالي باستخدام حزمة RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
تفعيل الرمز السري لنظام CMAS
لتفعيل رمز CMAS السري، *#*#CMAS#*#* (*#*#2627#*#* على لوحة الاتصال)، يجب أن يستمع تطبيق الاتصال إلى رمز الاتصال الخاص بالتنسيق *#*#code#*#* وأن يتعامل مع الرمز باستخدام الطريقة العامة sendDialerSpecialCode.
متطلبات معلومات المنطقة: القناة 50
القناة 50 هي قناة خاصة تتيح لمشغّلي شبكات الجوّال بث معلومات متعلقة بمنطقة معيّنة (باستثناء MTN في جنوب أفريقيا). بالنسبة إلى هذه القناة، لا تؤدي رسائل البث إلى ظهور مربّع حوار أو إشعار. بدلاً من ذلك، تظهر رسائل البث في حالة شريحة SIM ضمن قائمة "الإعدادات"، أو في شريط الحالة (على سبيل المثال، عرض الرمز البريدي).
يتيح تنفيذ CellBroadcastService في Android إمكانية استخدام واجهات برمجة التطبيقات التالية في خدمة البث الخلوي لتطبيقات "الإعدادات" وSysUI من أجل الحصول على معلومات القناة 50 الخاصة بالبث. لتنفيذ ذلك، اتّبِع الخطوات التالية:
تسجيل عملية بث
android.telephony.action.AREA_INFO_UPDATEDوتجاوز اسم حزمة جهاز الاستقبالconfig_area_info_receiver_packagesمن خلال حزمة RROالربط بـ
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
بما أنّ تطبيقي "الإعدادات" وSysUI خارج نطاق وحدة CellBroadcast، عليك تنفيذ التغييرات في تطبيق SystemUI أو تطبيق "الإعدادات" لتوفير دعم شامل. للحصول على نموذج تنفيذ، يُرجى الرجوع إلى تطبيق إعدادات CellBroadcastService.
التخصيص
لا يمكنك تعديل رمز المصدر الخاص بوحدة CellBroadcast مباشرةً، ولكن يمكنك استخدام تراكبات موارد وقت التشغيل
(RRO) لتفعيل (أو إيقاف) المَعلمات
(على سبيل المثال، يمكنك تخصيص لون الإشعارات
والأبعاد في مربّعات الحوار). لإلغاء القيم التلقائية للمَعلمات المستخدَمة في وحدة CellBroadcast، غيِّر اسم الحزمة المستهدَفة إلى com.android.cellbroadcastreceiver. بالإضافة إلى ذلك:
للاطّلاع على قائمة بالإعدادات التي يمكن استبدالها، يُرجى الرجوع إلى
overlayable.xml.للاطّلاع على مثال على عملية التنفيذ، راجِع
RROSampleTestAppفي مشروع Android مفتوح المصدر (AOSP).
في حال عدم توفّر موارد ترجمة سلاسل واجهة المستخدم أو إذا لم تستوفِ الترجمات توقعاتك، يمكنك تجاهل موارد الترجمة باستخدام حزمة RRO أو التواصل مع فريق الترجمة في Google لنقل ترجمات السلاسل إلى وحدة CellBroadcast. في حال إلغاء موارد الترجمة، على Google عرض هذه السلاسل في overlayable.xml للسماح بعملية الإلغاء. إذا كنت بحاجة إلى المزيد من الإعدادات لتخصيص واجهة المستخدم، يُرجى التواصل مع فريق دعم البث الخلوي.
نقل البيانات
يتضمّن نظام التشغيل Android 11 تطبيق CellBroadcast قديم، وهو آلية للحفاظ على بيانات التطبيق ونقلها (بما في ذلك إعدادات المستخدم وسجلّات تنبيهات الطوارئ) للأجهزة التي يتم ترقيتها إلى وحدة CellBroadcast. يجب أن تتضمّن عمليات تنفيذ Android التي تستخدم وحدة CellBroadcast تطبيق CellBroadcast القديم في إصدارها لنقل البيانات. إذا كان التنفيذ يستخدم حلاً مخصّصًا لبث البيانات عبر شبكة الجوّال، عليك تحديد حزمة CellBroadcastContentProvider APK للحفاظ على البيانات (يمكنك إزالة حزمة APK القديمة لبث البيانات عبر شبكة الجوّال بأمان في إصدار لاحق).
على الأجهزة التي تمّت ترقيتها لاستخدام وحدة CellBroadcast، تستردّ الوحدة البيانات من AOSP LegacyCellBroadcastApp أو حِزمة APK الخاصة بـ CellBroadcastContentProvider التي حدّدها المصنّع الأصلي للجهاز (OEM) من خلال مرجع cellbroadcast-legacy المحدّد جيدًا.
استخدام حزمة CellBroadcastContentProvider APK التي حدّدها مصنّع المعدات الأصلية
عند تحديد حزمة APK خاصة بـ CellBroadcastContentProvider، يجب أن تتّبع حزمة APK هذه المواصفات.
حزمة APK هي حزمة بدون واجهة مستخدم تعرض محتوى قاعدة البيانات فقط و
SharedPreferencesمن خلال عنصرContentProviderله إذن الوصولcellbroadcast-legacy، ولا يمكن للتطبيقات الخارجية الوصول إليها.تم تطوير حزمة APK هذه وهي مملوكة من قِبل الشركة المصنّعة للجهاز الأصلي، ويمكن للشركة المصنّعة للجهاز الأصلي مواصلة استضافة مخطط واجهة برمجة التطبيقات المخفية.
لنقل SharedPreferences إلى وحدة CellBroadcast، يجب أن يتوافق ملف APK الخاص بـ CellBroadcastContentProvider مع الطريقة ContentProvider.call) مع المَعلمات التالية:
- جهة الإصدار:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI - الطريقة:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE الوسيط:
@SystemAPI CellBroadcast.Preferenceفي ما يلي قائمة بمفاتيح الإعدادات المفضّلة المشتركة المتوافقة مع وحدة CellBroadcast. يتم الحصول على البيانات من
SharedPreferencesلطريقةContentProvider.call.
لنقل سجلّ الرسائل إلى وحدة CellBroadcast، يجب أن يتوافق ملف APK الخاص بـ CellBroadcastContentProvider مع الطريقة ContentProvider.query مع المَعلمات التالية:
- السلطة:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI. تعرض أعمدة طلب البحث قائمة بسمات الرسائل المتوافقة مع وحدة CellBroadcast. تتلقّى البيانات (من قاعدة البيانات) لطريقةContentProvider.query.
للحصول على نموذج تنفيذ CellBroadcastContentProvider,، يُرجى الرجوع إلى LegacyCellBroadcastContentProvider.
الاختبار
تتحقّق "مجموعة أدوات اختبار التوافق" (CTS) لنظام التشغيل Android من وظائف واجهات برمجة التطبيقات الخاصة بالنظام والتي تعتمد على التطبيقات. يمكنك أيضًا تشغيل وحدة CellBroadcast
unit tests/testappsp.
إذا فعّل المصنّع الأصلي للجهاز رمز CMAS السري لجهاز معيّن، يمكن لهذا الجهاز استخدام وضع تصحيح الأخطاء مع الميزات التالية.
يتم تجميع التنبيهات التجريبية ضمن تنبيهات أخرى مع مفتاح تبديل لتفعيلها أو إيقافها.
يتضمّن السجلّ جميع الرسائل التي تم استلامها ولكن لم يتم عرضها، مثل الرسائل المكرّرة أو الرسائل بلغة أخرى.
تعرض الرسائل جميع المَعلمات المتاحة، بما في ذلك الرقم التسلسلي ومعرّف الرسالة وتاريخ انتهاء الصلاحية.
لتفعيل وضع تصحيح الأخطاء، اتّصِل بالرقم *#*#CMAS#*#* على تطبيق "لوحة الاتصال".
معلومات الاتصال
لمزيد من التفاصيل أو لطرح أسئلة حول وحدة CellBroadcast، يُرجى التواصل مع فريق دعم CellBroadcast.