يقلّل وحدة CellBroadcast من الجهود المتكررة التي تبذلها الشركات المصنّعة للأجهزة الأصلية (ما يؤدي بدوره إلى الحد من التجزئة في منظومة Android المتكاملة وتوفير سلوك متسق للمستخدمين النهائيين)، كما يساعد في تبسيط اختبارات شركات الاتصالات وإصدار الشهادات المتعلقة بمتطلبات CellBroadcast (لأنّه لا يمكن للشركات المصنّعة للأجهزة الأصلية تعديل الرمز). هذه الوحدة قابلة للتحديث، ما يعني أنّه يمكنها تلقّي تحديثات للوظائف خارج دورة إصدار Android العادية.
تنسيق الحزمة
تتألف وحدة CellBroadcast من الخدمة والتطبيق التاليَين.
تتيح خدمة CellBroadcastService فك ترميز الرسائل القصيرة عبر البث الخلوي، وتحديد الموقع الجغرافي لخدمة WEA 3.0 (تنبيهات الطوارئ اللاسلكية)، وعمليات التحقّق من تكرار الرسائل، وبث الرسائل إلى التطبيقات. وهي خدمة رسائل تستهدف مناطق جغرافية محددة وتستخدم سياجًا جغرافيًا، وهي مصمَّمة لإرسال الرسائل إلى عدة مستخدمين للهواتف الجوّالة في منطقة محدَّدة وفي الوقت نفسه. تُعرَّف الخدمة من خلال لجنة GSM التابعة للمعهد الأوروبي لمعايير الاتصالات (ETSI) ومشروع الشراكة من الجيل الثالث (3GPP)، وهي جزء من معايير الاتصالات.
تطبيق CellBroadcastReceiver هو تطبيق نظام تلقائي يتعامل مع التنبيهات المتعلقة بحالات الطوارئ وغير المتعلقة بها (مثل تنبيهات Amber وتنبيهات الرئاسة) ويعرض المعلومات للمستخدمين النهائيين استنادًا إلى لوائح شركات الاتصالات واللوائح الإقليمية.
مسار رسائل البث الخلوي
يوضّح الشكل التالي مسار رسائل البث الخلوي.
الشكل 1. مسار رسائل CellBroadcastReceiver
تُرسِل طبقة واجهة الراديو (RIL) إشعارًا إلى
InBoundSMSHandler
بشأن رسالة SMS من نوع CellBroadcast بتنسيق CDMA/GSM.يعيد إطار العمل توجيه رسالة CellBroadcast 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-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
يمكنك تخصيص الإعدادات باستخدام تراكبات موارد وقت التشغيل.
ضبط الأذونات
يتم توقيع وحدة CellBroadcast باستخدام توقيع Google بدلاً من توقيع النظام الأساسي، ما يعني أنّ الوحدة تفقد إذن الوصول إلى أذونات التوقيع.
بدلاً من ذلك، يحدّد نظام التشغيل Android 11 إذن التوقيع الجديد com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
داخل وحدة CellBroadcast، ولا يمكن لأي حِزم خارج الوحدة الحصول على الإذن لأنّها موقّعة بمفتاح مختلف. يسمح هذا الإذن لتطبيق
CellBroadcastReceiver بالوصول الكامل إلى قاعدة البيانات داخل
CellBroadcastService.
تمنح المنصة إذن android.permission.READ_CELL_BROADCASTS
أثناء التشغيل لتطبيق الرسائل القصيرة التلقائي في النظام من أجل الوصول إلى سجلّ تنبيهات الطوارئ.
دمج وحدة 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 القديم في إصدارها لنقل البيانات. إذا كان التنفيذ يستخدم حلاً مخصّصًا لبث البيانات عبر الخلايا، عليك تحديد حزمة APK الخاصة بـ CellBroadcastContentProvider للحفاظ على البيانات (يمكنك إزالة حزمة 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
Arg:
@SystemAPI CellBroadcast.Preference
في ما يلي قائمة بمفاتيح الإعدادات المفضّلة المشتركة المتوافقة مع وحدة CellBroadcast. يتم الحصول على البيانات من
SharedPreferences
باستخدام طريقةContentProvider.call
.
لنقل سجلّ الرسائل إلى وحدة البث الخلوي، يجب أن يتوافق حِزمة APK الخاصة بـ CellBroadcastContentProvider مع الطريقة ContentProvider.query
مع المَعلمات التالية:
- الجهة المسؤولة:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
تعرض أعمدة طلب البحث قائمة بسمات الرسائل المتوافقة مع وحدة CellBroadcast. تتلقّى البيانات (من قاعدة البيانات) لطريقةContentProvider.query
.
للحصول على نموذج تنفيذ CellBroadcastContentProvider,
، يُرجى الرجوع إلى LegacyCellBroadcastContentProvider
.
الاختبار
تتحقّق "مجموعة أدوات اختبار التوافق" (CTS) لنظام التشغيل Android من وظائف واجهات برمجة التطبيقات للنظام التي تعتمد على التطبيقات. يمكنك أيضًا تشغيل وحدة CellBroadcast
unit tests/testappsp
.
إذا فعّل المصنّع الأصلي للجهاز رمز CMAS السري لجهاز معيّن، يمكن لهذا الجهاز أن يتيح وضع تصحيح الأخطاء مع الميزات التالية.
يتم تجميع التنبيهات التجريبية ضمن تنبيهات أخرى مع مفتاح تبديل لتفعيلها أو إيقافها.
يتضمّن السجلّ جميع الرسائل التي تم استلامها ولكن لم يتم عرضها، مثل الرسائل المكرّرة أو الرسائل بلغة أخرى.
تعرض الرسائل جميع المَعلمات المتاحة، بما في ذلك الرقم التسلسلي ومعرّف الرسالة وتاريخ انتهاء الصلاحية.
لتفعيل وضع تصحيح الأخطاء، اتّصِل بالرقم *#*#CMAS#*#* على تطبيق "الهاتف".
معلومات الاتصال
لمزيد من التفاصيل أو لطرح أسئلة حول وحدة CellBroadcast، يُرجى التواصل مع فريق دعم CellBroadcast.