تكوين الناقل

يتضمن نظام التشغيل Android 6.0 والإصدارات الأحدث إمكانية للتطبيقات المميزة لتوفير التكوين الخاص بمشغل شبكة الجوال للنظام الأساسي. تسمح هذه الوظيفة، المستندة إلى امتيازات الناقل UICC المقدمة في Android 5.1 (Lollipop MR1)، بنقل تكوين الناقل بعيدًا عن تراكبات التكوين الثابت وتمنح شركات النقل ومصنعي المعدات الأصلية القدرة على توفير تكوين الناقل ديناميكيًا للنظام الأساسي من خلال واجهة محددة.

يمكن تحميل تطبيق شركة الاتصالات الموقع بشكل صحيح مسبقًا في صورة النظام، أو تثبيته تلقائيًا، أو تثبيته يدويًا من خلال متجر التطبيقات. يتم الاستعلام عن التطبيق بواسطة النظام الأساسي لتوفير التكوين للإعدادات بما في ذلك:

  • شبكات التجوال/غير التجوال
  • البريد الصوتي المرئي
  • إعدادات شبكة الرسائل القصيرة/رسائل الوسائط المتعددة
  • تكوينات VoLTE/IMS

إن تحديد القيم التي سيتم إرجاعها يعود بالكامل إلى تطبيق شركة الاتصالات ويمكن أن يكون ديناميكيًا بناءً على المعلومات التفصيلية التي يتم تمريرها إلى التطبيق من خلال النظام الأساسي.

الفوائد الرئيسية لهذا النهج هي:

  • التكوين الديناميكي - دعم مفاهيم مثل التكوين المشتق من غير MCCMNC، على سبيل المثال، مشغلو شبكات الهاتف المحمول الافتراضية (MVNOs) أو اختيار العميل للخدمات الإضافية.
  • دعم الأجهزة المباعة من خلال أي قناة - على سبيل المثال، يمكن تكوين هاتف السوق المفتوحة تلقائيًا بالإعدادات الصحيحة عن طريق تنزيل تطبيق من متجر التطبيقات.
  • الأمان - يُمنح امتياز توفير هذا التكوين فقط للتطبيقات الموقعة من قبل شركة الاتصالات.
  • واجهة برمجة التطبيقات المحددة - في السابق، تم تخزين هذا التكوين غالبًا في تراكبات XML الداخلية داخل إطار العمل وليس من خلال واجهة برمجة التطبيقات العامة. واجهة برمجة تطبيقات تهيئة مشغل شبكة الجوال في Android 6.0 عامة ومحددة جيدًا.

كيف تعمل

جارٍ تحميل التكوين

تكوين الناقل الذي توفره هذه الميزة عبارة عن مجموعة من أزواج القيمة الرئيسية التي تغير السلوكيات المختلفة المتعلقة بالاتصالات الهاتفية في النظام الأساسي.

يتم تحديد مجموعة القيم لجهاز معين عن طريق الاستعلام عن المكونات التالية بالترتيب:

  1. تطبيق الناقل (هذا اختياري، ولكنه الموقع الموصى به للتكوين الإضافي بما يتجاوز ما هو موجود في مشروع Android مفتوح المصدر (AOSP))
  2. تم تضمين تطبيق تكوين النظام الأساسي مع صورة النظام
  3. القيم الافتراضية، المشفرة في إطار العمل (أي ما يعادل السلوك قبل Android 6.0)

تطبيق تكوين النظام الأساسي

يتم تضمين تطبيق تكوين النظام الأساسي العام مع صورة النظام. يمكن لهذا التطبيق توفير قيم لأي متغيرات لا يوفرها تطبيق الناقل العادي. يمكن العثور على تطبيق تكوين النظام الأساسي (في Android 6.0) في: packages/apps/CarrierConfig

الغرض من هذا التطبيق هو توفير بعض التكوينات لكل شبكة عندما لا يتم تثبيت تطبيق شركة الاتصالات، ويجب على شركات الاتصالات/مصنعي المعدات الأصلية إجراء تغييرات بسيطة عليه في صورهم الخاصة. وبدلاً من ذلك، يجب على شركات الاتصالات توفير تطبيق شركة الاتصالات المنفصل لتخصيص شركة الاتصالات، مما يسمح بتوزيع التحديثات عبر طرق مثل متاجر التطبيقات.

كيفية منح الامتياز لتطبيق الناقل

يجب توقيع تطبيق شركة الاتصالات المعني بنفس الشهادة الموجودة على بطاقة SIM، كما هو موثق في امتيازات شركة الاتصالات UICC .

ما هي المعلومات التي يتم تمريرها إلى تطبيق الناقل

يتم تزويد تطبيق الناقل بالقيم التالية، مما يمكنه من اتخاذ قرار ديناميكي بشأن القيم التي سيتم إرجاعها:

  • مركز عملائي
  • الشركات المتعددة الجنسيات
  • SPN
  • IMSI
  • معرف المخابرات العامة1
  • معرف المخابرات العامة2
  • معرف الناقل

لمزيد من المعلومات حول دمج معرفات شركة النقل، راجع تكامل معرفات شركة النقل مع CarrierConfig .

عند تحميل يحدث التكوين الناقل

يحدث بناء قائمة أزواج القيمة الرئيسية:

  • عند تحميل بطاقة SIM (التمهيد، أو التبديل السريع لبطاقة SIM)
  • عندما يقوم تطبيق الناقل بتشغيل عملية إعادة التحميل يدويًا
  • عندما يتم تحديث تطبيق الناقل

راجع مرجع android.service.carrier.CarrierService#onLoadConfig() لمزيد من التفاصيل.

باستخدام التكوين

عندما يتم إنشاء التكوين، يتم استخدام القيم الموجودة فيه لتعيين قيم مختلفة لتكوين النظام، بما في ذلك:

  • إعدادات الهاتف الإطار الداخلي
  • قيم التكوين التي تم إرجاعها بواسطة SDK، على سبيل المثال، في SmsManager
  • إعدادات التطبيق مثل قيم اتصال VVM في برنامج الاتصال

مفاتيح التكوين

يتم تعريف قائمة المفاتيح كجزء من SDK العام في android.telephony.CarrierConfigManager ولا يمكن تغييرها ضمن نفس مستوى واجهة برمجة التطبيقات. انظر الجدول أدناه للحصول على ملخص للمفاتيح.

بناء التطبيق

إنشاء التطبيق

يجب أن يستهدف تطبيقك مستوى Android 6.0 API (23).

الإعلان عن فئة تتجاوز android.service.carrier.CarrierService

  1. قم بتجاوز onLoadConfig لإرجاع القيم التي ترغب في توفيرها بناءً على كائن service.carrier.CarrierIdentifier الذي تم تمريره.
  2. أضف منطقًا لاستدعاء notifyConfigChangedForSubId في السيناريوهات التي قد يتغير فيها تكوين شركة الاتصالات بمرور الوقت (على سبيل المثال، عندما يضيف المستخدم خدمات إضافية إلى حسابه).

مثال أدناه:

public class SampleCarrierConfigService extends CarrierService {

    private static final String TAG = "SampleCarrierConfigService";

    public SampleCarrierConfigService() {
        Log.d(TAG, "Service created");
    }

    @Override
    public PersistableBundle onLoadConfig(CarrierIdentifier id) {
        Log.d(TAG, "Config being fetched");
        PersistableBundle config = new PersistableBundle();
        config.putBoolean(
            CarrierConfigManager.KEY_CARRIER_VOLTE_AVAILABLE_BOOL, true);
        config.putBoolean(
            CarrierConfigManager.KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL, false);
        config.putInt(CarrierConfigManager.KEY_VOLTE_REPLACEMENT_RAT_INT, 6);
        // Check CarrierIdentifier and add more config if needed…
        return config;
    }
}

لمزيد من التفاصيل، راجع مرجع android.service.carrier.CarrierService .

تسمية الفئة في البيان

مثال أدناه:

<service android:name=".SampleCarrierConfigService"
android:label="@string/service_name"
android:permission="android.permission.BIND_CARRIER_SERVICES">
      <intent-filter>
      <action android:name="android.service.carrier.CarrierService"/></intent-filter>
</service>

توقيع التطبيق بنفس الشهادة على بطاقة SIM

راجع امتيازات الناقل UICC لمعرفة المتطلبات.

إضافة APNs باستخدام تطبيق الناقل

لإضافة أسماء APN برمجيًا من تطبيق شركة اتصالات (على سبيل المثال، أثناء تنشيط بطاقة SIM)، استخدم واجهات برمجة تطبيقات ContentResolver لإضافة عناصر APN إلى موفر المحتوى المحدد بواسطة URI android.provider.Telephony.Carriers.CONTENT_URI . لمزيد من المعلومات حول بنية الجدول لمحتوى URI، راجع Telephony.Carriers .

لمزيد من المعلومات، راجع APN وCarrierConfig .

اختبار التطبيق

عندما تنتهي من إنشاء تطبيق التكوين الخاص بك، يمكنك اختبار التعليمات البرمجية الخاصة بك باستخدام:

  • بطاقة SIM تحتوي على توقيع شهادة صالح
  • جهاز يعمل بنظام التشغيل Android 6.0 والإصدارات الأحدث، على سبيل المثال جهاز Android