وفّر نظام التشغيل Android 7.1.1 إمكانية استخدام وضع العرض التوضيحي لبائعي التجزئة على مستوى النظام لكي تتمكّن العملاء من فحص الأجهزة أثناء تشغيلها في متاجر البيع بالتجزئة. يتم إعداد الأجهزة للعرض التجريبي في متاجر البيع بالتجزئة باستخدام تطبيق مالك الجهاز لضمان يقتصر استخدام الجهاز على تطبيقات معيّنة في الوضع التجريبي فقط. يجب ألا يتمكّن المستخدمون النهائيون من إضافة حساب شخصي على جهاز عرض ترويجي للبيع بالتجزئة. يُعدّل نظام التشغيل Android 8.1 هذه الميزة لإنشاء مستخدمين تجريبيين من خلال واجهة برمجة التطبيقات DevicePolicyManager createAndManageUser. يتيح ذلك لمصنّعي المعدّات الأصلية تخصيص وضع البيع بالتجزئة العادي بشكلٍ أكبر في ما يتعلّق بإدارة المستخدمين وإدارة سياسة الجهاز على الجهاز التجريبي.
على الرغم من أنّ واجهات برمجة تطبيقات DevicePolicyManager
يمكن استخدامها في الإصدارات الأقدم من Android 8.1،
لا يمكن إنشاء مستخدمين من النوع التجريبي (DevicePolicyManager.MAKE_USER_DEMO
)
باستخدام واجهة برمجة التطبيقات createAndManageUser
في الإصدار 8.0 والإصدارات الأقدم.
التنفيذ في Android 8.1 والإصدارات الأحدث
يسلّط هذا القسم الضوء على تحسينات النظام الأساسي ويصف تطبيق العروض الترويجية للبيع بالتجزئة في الإصدار 8.1 من Android والإصدارات الأحدث.
تغييرات النظام الأساسي
ضبط DEVICE_DEMO_MODE
في الأجهزة التي تستخدم وضع عرض البيع بالتجزئة المستنِد إلى صاحب الجهاز، يجب ضبط قيمة Settings.Global.DEVICE_DEMO_MODE
على 1 قبل الإعداد للإشارة إلى أنّه يتم إعداد الجهاز للاستفادة من وضع عرض البيع بالتجزئة.
يستخدم SystemServer
هذا الإعداد لإدارة جوانب وضع البيع بالتجزئة، مثل الملف الشخصي للطاقة و SystemUI.
تفعيل RetailDemoModeService
في الأجهزة التي تستخدم وضع البيع بالتجزئة، يضبط معالج الإعداد Global.DEVICE_DEMO_MODE
على true
للإشارة إلى أنّ الجهاز قد دخل وضع البيع بالتجزئة. عند
الاطّلاع على هذا الإعداد، تنشئ RetailDemoModeService مستخدمًا تجريبيًا وتبدّل إليه عند بدء المستخدم 0، وتفعّل
مشغّل التطبيقات المخصّص المحدّد في مورد التراكب، وتوقِف SUW. يستخدم System
Server وSystemUI أيضًا هذا الإعداد لإدارة جوانب وضع البيع بالتجزئة.
ضبط مشغّل تطبيقات أو مشغّل فيديو مخصّصَين
يمكن لصنّاع الأجهزة تحديد مشغّل تطبيقات مخصّص من خلال إلغاء مرجع config_demoModeLauncherComponent
للإطار الأساسي الذي تم تحديده في ملف config.xml
على النحو التالي.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
تطبيق DemoPlayer التجريبي للبيع بالتجزئة والذي يمكن العثور عليه في /packages/apps/RetailDemo هو مشغّل التطبيقات المخصّص التلقائي في "مشروع Android المفتوح المصدر" (AOSP). يبحث التطبيق عن فيديو في قسم على الجهاز، مثل /data/preloads/demo/retail_demo.mp4 ويشغّله بشكل متكرّر. عندما يلمس المستخدم الشاشة، يُوقف مشغّل التطبيقات المخصّص مكوّن النشاط، ما يؤدي إلى بدء تشغيل مشغّل التطبيقات التلقائي للنظام.
يجب أن يكون المكوّن المخصّص في مشغّل التطبيقات المخصّص مصنّفًا على أنّه غير مفعّل تلقائيًا
كي لا يظهر في سيناريوهات غير الإصدارات التجريبية. في السيناريو التجريبي، يفعّل System
Server config_demoModeLauncherComponent
المحدّد عند بدء
جلسة تجريبية جديدة.
يبحث معالج الإعداد أيضًا عن الفيديو المذكور سابقًا لتقديم ميزة للدخول إلى وضع البيع بالتجزئة. يمكن تعديل SUW للبحث عن علامة أخرى متعلقة بالمصنّع الأصلي للجهاز تفيد بتوفّر وضع البيع بالتجزئة إذا لم يكن الفيديو جزءًا من الإصدار التمهيدي. إذا كانت هناك أقسام للنظام A/B، يجب أن يحتوي القسم B على الفيديو التجريبي في /preloads/demo. يتم نسخ هذا الملف إلى /data/preloads/demo عند أول عملية تشغيل.
تخصيص التطبيقات المحمَّلة مسبقًا للوضع التجريبي لبائعي التجزئة
يمكن للتطبيقات المحمَّلة مسبقًا تخصيص تجربة وضع "العرض التوضيحي لبائعي التجزئة" من خلال طلب بيانات
واجهة برمجة التطبيقات UserManager.isDemoUser()
لمعرفة ما إذا كان التطبيق قد تم تشغيله في بيئة تجريبية.
يتمّ ضبط قيود معيّنة في حساب المستخدم التجريبي، على غرار سياسات الملف الشخصي أو الجهاز المُدار التي تمنع التطبيقات والمستخدمين من تنفيذ عمليات معيّنة.
ومن بين هذه القيود DISALLOW_MODIFY_ACCOUNTS
. بموجب هذا القيد، لا يسمح كلّ من AccountManager
وSettings
بإضافة حسابات. تتفاعل بعض تطبيقات Google مع هذا القيد
وتعرض رسالة خطأ، ولن تطلب تطبيقات أخرى إدخال حساب (مثل
YouTube و"صور Google"). ننصحك أيضًا بأن تتحقّق تطبيقات المصنّعين الأصليّين للأجهزة من ضبط قيمة
DISALLOW_MODIFY_ACCOUNTS
ومعالجة السيناريو وفقًا لذلك.
تحديثات النظام
بشكلٍ تلقائي، عند تفعيل وضع البيع بالتجزئة، يتم ضبط سياسة الجهاز على التحديث عبر الهواء (OTA) تلقائيًا. ستنزِّل أجهزة البيع بالتجزئة التحديث وتُعيد تشغيله وتثبِّته (مع مراعاة حدود البطارية) بدون تفاعل المستخدم.
تطبيق تجريبي لبائعي التجزئة
يتطلب تنفيذ وضع العرض التجريبي للبيع بالتجزئة المستنِد إلى مالك الجهاز ضبط تطبيق Device Policy Controller بصفته مالك الجهاز. يحتوي AOSP على مرجع لتنفيذ تطبيق RetailDemo في /packages/apps/RetailDemo.
لا تحتاج تطبيقات مالك الجهاز إلى امتيازات مرتفعة أو تثبيت مُسبَق على صورة النظام، ويمكن تنزيلها أثناء عملية الإعداد أو التوفير. ويتم تنفيذها في الغالب مثل التطبيقات التقليدية، مع الاختلافات التالية:
يجب أن تضيف جميع تطبيقات مالكي الأجهزة المكوّن DeviceAdminReceiver ، الذي يعمل كرمز مميّز للموافقة لجميع واجهات برمجة التطبيقات DevicePolicyManager. يجب أن يمتلك المكوّن الإذن
android.permission.BIND_DEVICE_ADMIN
، وأن يتضمّن السياسات الخاصة المطلوبة كبيانات وصفية، وأن لفلترة طلباتandroid.app.action.PROFILE_PROVISIONING_COMPLETE
وandroid.app.action.DEVICE_ADMIN_ENABLED
.إنّ العلامة DevicePolicyManager#MAKE_USER_DEMO ، التي تم ضبطها لإنشاء مستخدمين خاصين من النوع التجريبي، هي واجهة برمجة تطبيقات مخفية. وله قيمة ثابتة هي 0x4.
يجب منح ملكية الجهاز من خلال دور "مدير إدارة الأجهزة" فقط أو من خلال تطبيق Managed Provisioning.
تتيح واجهات برمجة التطبيقات في فئة DevicePolicyManager لمالك الجهاز (DO) ومالك الملف الشخصي (PO) فرض مختلف سياسات الجهاز. في ما يلي بعض وظائف DevicePolicyManager القابلة للتطبيق على وضع العرض التوضيحي لبائعي التجزئة.
إنشاء المستخدمين وإدارتهم
أعد تشغيل الجهاز.
اضبط الحِزم المسموح بها في LockTask.
تثبيت الحِزم من خلال PackageInstaller
حظر إلغاء تثبيت الحِزم
فعِّل تحديثات النظام التلقائية. ستنزِّل الأجهزة التحديثات عبر الهواء وتطبّقها تلقائيًا.
أوقِف قفل الشاشة.
منع ضبط كلمات المرور أو بصمات الأصابع
اضبط مجموعة مسموح بها من إعدادات Settings.Global وSettings.Secure وSettings.System.
اضبط سياسة الأذونات على
PERMISSION_POLICY_AUTO_GRANT
، ما يؤدي إلى منح جميع أذونات وقت التشغيل تلقائيًا. يمكن أيضًا منح الأذونات بشكل أكثر تقييدًا: إذن واحد لتطبيق واحد. ولا ينطبق ذلك على أذونات عمليات التطبيق، التي لا يزال على المستخدمين منحها لكل مستخدم ولكل تطبيق.اضبط قيود المستخدمين ذات الصلة بوضع البيع بالتجزئة كما هو محدّد في UserManager على النحو التالي.
DISALLOW_MODIFY_ACCOUNTS
DISALLOW_USB_FILE_TRANSFER
DISALLOW_DEBUGGING_FEATURES
DISALLOW_CONFIG_WIFI
DISALLOW_CONFIG_BLUETOOTH
DISALLOW_INSTALL_UNKNOWN_SOURCES
DISALLOW_CONFIG_MOBILE_NETWORKS
تعديل الفيديو التجريبي باستخدام الويب
يمكن لتطبيق RetailDemo في /packages/apps/RetailDemo تعديل الفيديو التجريبي في حال توفّر اتصال بالشبكة. يمكن ضبط عنوان URL لتنزيل الفيديو من خلال إلغاء قيمة السلسلة التالية في تطبيق RetailDemo.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
إذا كان من الضروري استخدام فيديوهات مختلفة في مناطق مختلفة، يمكن ضبط عناوين URL مختلفة للعملية التنزيل باستخدام موارد سلاسل مخصّصة للّغة في res/values-*/strings.xml. على سبيل المثال، إذا كان من الضروري استخدام فيديوهات مختلفة في الولايات المتحدة وبريطانيا، يمكن وضع عناوين URL الخاصة بالتنزيل فيملفَي res/values-ar-rUS/strings.xml وres/values-ar-rGB/strings.xml على التوالي، كما هو موضّح أدناه.
في res/values-en-rUS/strings.xml:
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
في res/values-en-rGB/strings.xml:
<string name="retail_demo_video_download_url">download URL for UK video goes here</string>
يتم تنزيل هذا الفيديو مرة واحدة كحد أقصى عند إعادة تشغيل الجهاز. عند تشغيل الفيديو على الجهاز، يتحقّق تطبيق RetailDemo في الخلفية ممّا إذا كان قد تم توفير عنوان URL للتنزيل وكان الفيديو المتوفّر على عنوان URL أحدث من الذي يتم تشغيله.
في هذه الحالة، ينزّل تطبيق RetailDemo الفيديو ويبدأ بتشغيله. بعد تنزيل الفيديو، يتم استخدامه لتشغيله في جميع جلسات العرض التجريبية من الآن فصاعدًا. لا تتم إعادة تنفيذ أي مما يلي من عمليات التحقّق إلا بعد إعادة التشغيل التالية.
إرشادات متعلقة بالفيديوهات التوضيحية
يجب أن تكون الفيديوهات التوضيحية بالوضع العمودي أو بالاتجاه الطبيعي للجهاز في حال كان جهازًا لوحيًا، ويمكن أن تزيد مدتها عن خمس ثوانٍ. يجب ألا يؤدي المحتوى إلى الاحتراق، لأنّه سيتم تشغيله باستمرار عند عرضه.
اطّلِع على تعريفات مطوّري تطبيقات Android للمستخدمين والملفات الشخصية والحسابات، ومستندات واجهة برمجة التطبيقات Device Policy Manager API ونموذج تطبيق "مالك الجهاز" لمزيد من المعلومات.
التحقُّق
لا يشمل CTS وضع البيع بالتجزئة لأنّه ميزة اختيارية. يجب إجراء الاختبار يدويًا أو باستخدام اختبارات الوحدة للتطبيق التجريبي.
جلسة تجريبية
إعداد جلسة العرض التوضيحي
قد يتم تشغيل أجهزة العرض التوضيحي لبائعي التجزئة في الوضع التجريبي إذا تم ضبطها على الوضع التجريبي من المصنع. بدلاً من ذلك، يمكن لموظفي البيع بالتجزئة تفعيل وضع البيع بالتجزئة مباشرةً من معالج الإعداد.
الشكل 2: وضع العرض التوضيحي لبائعي التجزئة
عرض جلسة تجريبية
عندما يدخل الجهاز إلى وضع البيع بالتجزئة، يتم التبديل إلى مستخدم تجريبي جديد ويشغِّل تلقائيًا مشغِّل التطبيقات المخصّص المحدّد في مورد التراكب كما هو موضّح في التنفيذ. يشغِّل هذا المشغِّل المخصّص تلقائيًا الفيديو التجريبي بشكل متكرّر إلى أن يلمس المستخدم الشاشة لبدء جلسة مستخدم تجريبي. في ذلك الوقت، يبدأ مشغّل التطبيقات المخصّص مشغّل تطبيقات النظام ثم يخرج. يمكن لمصنّعي المعدّات الأصلية تغيير مشغِّل التطبيقات المخصّص لبدء خدمة أو نشاط آخر عند الخروج.
للحفاظ على سلامة وضع البيع بالتجزئة، يتم إيقاف شاشة القفل ويُحظر أيضًا تنفيذ إجراءات معيّنة من "الإعدادات السريعة" التي قد تؤثر سلبًا في هذا الوضع، بما في ذلك ما يلي:
- زر تفعيل وضع الطيران وإيقافه
- إزالة نقاط الوصول إلى Wi-Fi أو تعديلها (الإعدادات)
- تغيير مشغّل شبكة الجوّال (الإعدادات)
- ضبط نقطة الاتصال (الإعدادات)
- تبديل المستخدمين
بالإضافة إلى ذلك، يتم أيضًا حظر الوصول إلى بعض الإعدادات العامة التي يمكن أن تؤثّر في وضع البيع بالتجزئة من خلال إيقاف ما يلي:
- إعدادات Wi-Fi
- خيارات ضبط الشبكة الخلوية، خاصةً نقاط الاتصال
- إعدادات البلوتوث
- الاحتفاظ بنسخة احتياطية وإعادة الضبط والتاريخ والوقت وشبكات الجوّال (لا تظهر هذه الخيارات على الإطلاق).
إذا لم يتفاعل المستخدم لفترة من الوقت (90 ثانية تلقائيًا)، يعرض وضع البيع بالتجزئة مربّع حوار للنظام يطلب من المستخدم إما الخروج من الجلسة أو المتابعة. إذا اختار المستخدم الخروج أو إذا لم يتم تلقّي أي ردّ خلال خمس ثوانٍ، يزيل وضع البيع بالتجزئة المستخدم التجريبي الحالي ويبدّله بمستخدم تجريبي جديد ويشغّل مجددًا الفيديو الأصلي بشكل متكرّر. إذا تم إيقاف الشاشة باستخدام زر التشغيل، ستتم إعادة تشغيلها تلقائيًا بعد بضع ثوانٍ.
بعد الخروج من جلسة تجريبية، يتم كتم صوت الأجهزة وإعادة ضبط بعض الإعدادات العميقة، بما في ذلك ما يلي:
- السطوع
- التدوير التلقائي
- ضوء الفلاش
- اللغة
- تسهيل الاستخدام
الخروج من وضع العرض التوضيحي لبائعي التجزئة
للخروج من وضع البيع بالتجزئة، على موظفي البيع بالتجزئة التأكّد من أنّ الجهاز التجريبي لم يتم تسجيله ضمن إدارة الأجهزة وإعادة ضبط الجهاز على الإعدادات الأصلية من برنامج الإقلاع.