وفّر نظام التشغيل 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 ويشغّله بشكل متكرّر. عندما يلمس المستخدم الشاشة، يُوقف مشغّل التطبيقات المخصّص مكوّن النشاط، ما يؤدي إلى بدء تشغيل مشغّل التطبيقات التلقائي للنظام.
يجب وضع علامة "غير مفعّل" تلقائيًا على مكوِّنه المخصّص في المشغّل المخصّص كي لا يظهر في سيناريوهات غير تجريبية. في العرض التوضيحي، يفعّل خادم النظام 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 للمستخدمين والملفات الشخصية والحسابات ووثائق واجهة برمجة تطبيقات مدير سياسة الجهاز ونموذج تطبيق مالك الجهاز لمزيد من المعلومات.
التحقُّق
لا توفّر CTS وضع العرض التوضيحي لبائعي التجزئة لأنها ميزة اختيارية. يجب إجراء الاختبار يدويًا أو باستخدام اختبارات الوحدة للتطبيق التجريبي.
جلسة العرض التجريبية
إعداد جلسة العرض التوضيحي
قد يتم تشغيل الأجهزة التجريبية للبيع بالتجزئة في وضع العرض التوضيحي للبيع بالتجزئة إذا تم ضبطها للوضع التجريبي من المصنع. بدلاً من ذلك، يمكن لموظفي البيع بالتجزئة تمكين وضع البيع بالتجزئة مباشرةً من معالج الإعداد.
الشكل 2: وضع العرض التوضيحي لبائعي التجزئة
عرض جلسة تجريبية
عندما يدخل الجهاز إلى وضع البيع بالتجزئة، يتم التبديل إلى مستخدم تجريبي جديد ويشغِّل تلقائيًا مشغِّل التطبيقات المخصّص المحدّد في مورد التراكب كما هو موضّح في التنفيذ. يشغِّل هذا المشغِّل المخصّص تلقائيًا الفيديو التجريبي بشكل متكرّر إلى أن يلمس المستخدم الشاشة لبدء جلسة مستخدم تجريبي. عندئذ، يبدأ المشغل المخصص في تشغيل مشغّل النظام ثم يتم الخروج. يمكن للمصنّعين الأصليين للأجهزة تغيير المشغل المخصص لإطلاق خدمة أخرى أو نشاط آخر أيضًا عند الخروج.
للحفاظ على سلامة وضع البيع بالتجزئة، يتم إيقاف شاشة القفل ويُحظر أيضًا تنفيذ إجراءات معيّنة من "الإعدادات السريعة" التي قد تؤثر سلبًا في هذا الوضع، بما في ذلك ما يلي:
- زر تفعيل وضع الطيران وإيقافه
- إزالة نقاط الوصول إلى Wi-Fi أو تعديلها (الإعدادات)
- تغيير مشغّل شبكة الجوّال (الإعدادات)
- ضبط نقطة الاتصال (الإعدادات)
- تبديل المستخدمين
بالإضافة إلى ذلك، يتم أيضًا حظر الوصول إلى بعض الإعدادات العامة التي يمكن أن تؤثّر في وضع البيع بالتجزئة من خلال إيقاف ما يلي:
- إعدادات Wi-Fi
- خيارات ضبط الشبكة الخلوية، خاصةً نقاط الاتصال
- إعدادات البلوتوث
- الاحتفاظ بنسخة احتياطية وإعادة الضبط والتاريخ والوقت وشبكات الجوّال (لا تظهر هذه الخيارات على الإطلاق).
إذا لم يتفاعل المستخدم لفترة زمنية معيّنة (90 ثانية تلقائيًا)، يعرض وضع البيع بالتجزئة مربّع حوار للنظام يطلب من المستخدم إما الخروج من الجلسة أو المتابعة. إذا اختار المستخدم الخروج أو إذا لم يتم تلقّي أي ردّ خلال خمس ثوانٍ، يزيل وضع البيع بالتجزئة المستخدم التجريبي الحالي ويبدّله بمستخدم تجريبي جديد ويشغّل مجددًا الفيديو الأصلي بشكل متكرّر. في حال إيقاف الشاشة باستخدام زر التشغيل، ستتم إعادة تشغيلها تلقائيًا بعد بضع ثوانٍ.
بعد الخروج من جلسة تجريبية، يتم كتم صوت الأجهزة وإعادة ضبط بعض الإعدادات العميقة، بما في ذلك ما يلي:
- السطوع
- التدوير التلقائي
- ضوء الفلاش
- اللغة
- تسهيل الاستخدام
الخروج من وضع العرض التوضيحي لبائعي التجزئة
للخروج من وضع البيع بالتجزئة، على موظفي البيع بالتجزئة التأكّد من أنّ الجهاز التجريبي لم يتم تسجيله ضمن إدارة الأجهزة وإعادة ضبط الجهاز على الإعدادات الأصلية من برنامج الإقلاع.