قدّم Android 7.1.1 دعمًا على مستوى النظام للوضع التجريبي للبيع بالتجزئة حتى يتمكّن العملاء من فحص الأجهزة أثناء استخدامها في متاجر البيع بالتجزئة. يتم إعداد الأجهزة للعرض التجريبي في متاجر البيع بالتجزئة باستخدام تطبيق مالك الجهاز لضمان يقتصر استخدام الجهاز على تطبيقات معيّنة في الوضع التجريبي فقط. يجب ألا يتمكّن المستخدمون النهائيون من إضافة حساب شخصي على جهاز تجريبي للبيع بالتجزئة. يراجع Android 8.1 هذا الدعم لإنشاء مستخدمين تجريبيين من خلال واجهة برمجة التطبيقات DevicePolicyManager createAndManageUser API. يتيح ذلك لمصنّعي المعدّات الأصلية تخصيص وضع البيع بالتجزئة العادي بشكلٍ أكبر في ما يتعلّق بإدارة المستخدمين وإدارة سياسة الجهاز على الجهاز التجريبي.
على الرغم من أنّه يمكن استخدام واجهات برمجة تطبيقات DevicePolicyManager
في الإصدارات الأقدم من Android 8.1،
لا يمكن إنشاء مستخدمين من النوع التجريبي (DevicePolicyManager.MAKE_USER_DEMO
)
باستخدام واجهة برمجة التطبيقات createAndManageUser
في الإصدار 8.0 والإصدارات الأقدم.
التنفيذ في Android 8.1 والإصدارات الأحدث
يسلط هذا القسم الضوء على تحسينات النظام الأساسي ويصف تطبيق العرض التوضيحي للبيع بالتجزئة في Android 8.1 والإصدارات الأحدث.
تغييرات النظام الأساسي
ضبط 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 من النظام، يجب أن يحتوي قسم النظام "ب" على الفيديو التوضيحي في /preloads/demo. يتم نسخ هذا الملف إلى /data/preloads/demo عند أول عملية تشغيل.
تخصيص التطبيقات المحمَّلة مسبقًا في وضع العرض التوضيحي لبائعي التجزئة
يمكن للتطبيقات المُحمَّلة مسبقًا تخصيص تجربتها للوضع التجريبي للبيع بالتجزئة من خلال استدعاء واجهة برمجة التطبيقات UserManager.isDemoUser()
لمعرفة ما إذا تم إطلاق التطبيق في بيئة تجريبية.
يتم ضبط قيود معيّنة في التطبيق التجريبي للمستخدم، على غرار سياسات الأجهزة المُدارة أو
الملف الشخصي التي تمنع التطبيقات والمستخدمين من تنفيذ عمليات معيّنة.
أحد هذه القيود هو DISALLOW_MODIFY_ACCOUNTS
. بهذا القيد، لا يسمح مدير الحساب
والإعدادات
بإضافة حسابات. تتفاعل بعض تطبيقات 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.
يجب ألا يتم تعيين ملكية الجهاز إلا من خلال صاحب دور إدارة الأجهزة أو تطبيق ManagedManageing.
تمكّن واجهات برمجة التطبيقات في فئة 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 ثانية تلقائيًا)، يعرض وضع البيع بالتجزئة مربّع حوار للنظام يطلب من المستخدم إما الخروج من الجلسة أو المتابعة. إذا اختار المستخدم الخروج أو إذا لم يتم تلقّي أي ردّ خلال خمس ثوانٍ، يزيل وضع البيع بالتجزئة المستخدم التجريبي الحالي ويبدّله بمستخدم تجريبي جديد ويشغّل مجددًا الفيديو الأصلي بشكل متكرّر. إذا تم إيقاف الشاشة باستخدام زر التشغيل، فسيتم تشغيلها مرة أخرى تلقائيًا بعد بضع ثوانٍ.
بعد الخروج من جلسة الإصدار التجريبي، تكتم صوت الأجهزة نفسها وتعيد ضبط بعض الإعدادات العامة، ويشمل ذلك ما يلي:
- السطوع
- التدوير التلقائي
- ضوء الفلاش
- اللغة
- تسهيل الاستخدام
الخروج من وضع العرض التوضيحي لبائعي التجزئة
للخروج من وضع البيع بالتجزئة، على موظفي البيع بالتجزئة التأكّد من أنّ الجهاز التجريبي غير مسجَّل ضمن إدارة الأجهزة وإعادة ضبط الجهاز على الإعدادات الأصلية من برنامج التحميل.