تخصيص سلوك الجهاز للمستخدمين الذين نفدت رصيدهم

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

يقدّم نظام Android الأساسي تطبيق مشغّل شبكة الجوّال التلقائي الذي ينفِّذ سلوكًا تلقائيًا لمحاولة تقليل كمية الزيارات استنادًا إلى إشارة رصد المدخل المشروط الوصول إليه. كما توفّر هذه الميزة لمشغّلي شبكات الجوّال والمصنّعين الأصليّين للأجهزة فرصة تخصيص السلوك بتكلفة منخفضة وبدرجةٍ عالية من المرونة.

الأمثلة والمصدر

يمكنك العثور على تطبيق مشغّل شبكة الجوّال التلقائي على الرابطplatform/frameworks/base/packages/CarrierDefaultApp/..

التنفيذ

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

مقدّمة عن التنفيذ

Signals

يتيح إطار عمل Android ضبط الإجراءات على العلامات المُستخدَمة في الإعدادات التالية:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

تقع هذه الإشارات في frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

الإجراءات المتاحة

يحدِّد تطبيق مشغّل شبكة الجوَّال التلقائي مجموعة من الإجراءات المتوافقة التي يمكن ربطها بالإشارات المتوافقة. يتم تحديد هذه الشروط في CarrierActionUtils.java:

    public static final int CARRIER_ACTION_ENABLE_METERED_APNS               = 0;
    public static final int CARRIER_ACTION_DISABLE_METERED_APNS              = 1;
    public static final int CARRIER_ACTION_DISABLE_RADIO                     = 2;
    public static final int CARRIER_ACTION_ENABLE_RADIO                      = 3;
    public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION          = 4;
    public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5;
    public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS          = 6;

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

عمليات الربط التلقائية بين الإشارات والإجراءات

يمكنك ضبط الإجراءات التلقائية باتّباع هذه العملية:

  1. حدِّد مفتاحًا للإشارات المتوافقة.

    يتمّ تحديد عمليات الربط التلقائية بين الإشارات والإجراءات في CarrierConfigManager.java. لكل إشارة من الإشارات المتوافقة مفتاح:

    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array";
    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY =
    "carrier_default_actions_on_dcfailure_string_array";
  2. ربط الإجراءات التلقائية بمفاتيح الإشارة

    يتم ربط أرقام تعريف الإجراءات التلقائية بمفاتيح الإشارات:

    sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY,                new String[]{
                    "1, 4"
                    //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION
                    // 4: CARRIER_ACTION_DISABLE_METERED_APNS
             });
    

    ويربط إطار عمل الهاتف هذه الإجراءات بالإشارات المقابلة.

إلغاء الإجراءات التلقائية

يمكنك تحديد إجراءات مخصّصة للإشارات المتوافقة في ملف XML لإعدادات مشغّل شبكة الجوّال من خلال ربط أرقام تعريف الإجراءات بمفاتيح الإشارات (المحدّدة في CarrierConfigManager.java). على سبيل المثال، يؤدي الربط التالي إلى إيقاف نقاط الاتصال APN المُحصَّلة وعرض إشعار على البوابة عند إعادة التوجيه:

<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
            <item value="1" />
            <item value="4" />
</string-array>

يحمِّل إطار عمل الهاتف هذه الإعدادات ويلغى الإجراءات التلقائية.

التحقُّق

لا تتوفّر اختبارات CTS أو CTS Verifier أو GTS لهذه الميزة.

استخدِم اختبارات التحقّق اليدوية هذه للتحقّق من صحة الميزة:

  1. التحقّق من صحة إشعار إشارة الجهاز غير المتوازنة من شركة الاتصالات
  2. تأكَّد من الحدّ من إعادة توجيه الزيارات أثناء حالة عدم التوازن وإيقاف Wi-Fi.
  3. تأكَّد من أنّ حركة مرور الشبكة منخفضة وأنّ واجهة مستخدم الإشعار تظهر أثناء حالة عدم التوازن.
  4. التحقّق من وظيفة المكالمات الصوتية/VoLTE أثناء عدم توفّر رصيد
  5. تأكَّد من أنّ مكالمات الفيديو محظورة في حالة عدم توفّر رصيد كافٍ.
  6. مع تفعيل Wi-Fi، تأكَّد من أنّ المستخدم يمكنه مواصلة تصفُّح الويب، وأنّ كثافة ملفّات مشاركة التصفُّح لا تشغِّل كثافة ملفّات مشاركة الشبكة أثناء التواجد في حالة عدم التوازن.
  7. التحقّق من وظائف Wi-Fi وWFC والبلوتوث أثناء عدم التوازن
  8. أوقِف شبكة Wi-Fi. تحقّق من واجهة مستخدم الإشعار بشأن عدم توفّر رصيد كافٍ، وتأكَّد من أنّه لا تتم إعادة توجيه الزيارات العادية للتصفّح إلى الموقع الإلكتروني لتسجيل مزوّد خدمة الاتصالات. إثبات الملكية: يؤدي النقر على الرابط في واجهة مستخدم الإشعار إلى توجيه المتصفّح إلى موقع الويب الخاص بشركة الاتصالات ومقدّم خدمة الاشتراك في خدمات الجوّال.
  9. تأكَّد من أنّ تفعيل وضع الطيران لا يؤدي إلى إعادة ضبط حالة الحد من عدد الزيارات.
  10. تأكَّد من أنّ تبديل شريحة SIM قيد الاستخدام يؤدي إلى إعادة ضبط حالة ملف تنقّل بيانات الشبكة.
  11. تأكَّد من أنّ إعادة إدخال شريحة SIM التي انتهت رصيدها يؤدي إلى إعادة توجيه الزيارات وإعادة الحد من عدد الزيارات إلى الشبكة.
  12. تأكَّد من أنّ إعادة تشغيل الهاتف تؤدي إلى إعادة تفعيل إعادة التوجيه وإعادة عرض واجهة مستخدم التحكّم في عدد الزيارات والإشعارات.
  13. انقر على إشعار captiveportal. تأكَّد من بدء اتصال بشبكة مفروض عليها قيود للسماح للمستخدم بإضافة أرصدة.
  14. تأكَّد من أنّ إعادة تعبئة رصيد شريحة SIM أو إعادة تفعيلها يؤديان إلى استعادة سرعة شبكة الجوّال، وإلى اختفاء رابط شركة الاتصالات والإشعار "لا يتوفّر رصيد".
  15. اختبار التحقّق من الصحة بعد استرداد خدمة البيانات

يقدّم التطبيق التلقائي بعض الأمثلة على اختبارات الوحدة ونصًا برمجيًا لتنفيذها (راجِع tests/runtest.sh). عند تنفيذ إصدار مخصّص أو سلوك مخصّص، عليك عكس هذه التخصيصات في اختبارات وحدة مخصّصة.