وضع البيع بالتجزئة

قدّم Android 7.1.1 دعمًا على مستوى النظام لـ "وضع العرض التوضيحي لبائعي التجزئة" ليتمكّن العملاء من معاينة الأجهزة أثناء استخدامها في متاجر البيع بالتجزئة. يتم إعداد الأجهزة للعرض التوضيحي لبائعي التجزئة باستخدام تطبيق مالك الجهاز لضمان قصر استخدام الجهاز على تطبيقات معيّنة في "الوضع التجريبي" فقط. يجب ألا يتمكّن المستخدمون النهائيون من إضافة حساب شخصي على جهاز العرض التوضيحي لبائعي التجزئة. يعدّل Android 8.1 هذا الدعم لـ إنشاء مستخدمين تجريبيين من خلال واجهة برمجة التطبيقات DevicePolicyManager createAndManageUser. ويسمح هذا بتخصيص أكبر بكثير من قِبل المصنّعين الأصليّين للأجهزة للوضع العادي للبيع بالتجزئة من حيث إدارة المستخدمين وإدارة سياسة الجهاز على الجهاز التجريبي.

على الرغم من إمكانية استخدام واجهات برمجة تطبيقات 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

في الأجهزة التي تنفّذ "وضع العرض التوضيحي لبائعي التجزئة"، يضبط معالج الإعداد إعدادًا عامًا setting Global.DEVICE_DEMO_MODE على true للإشارة إلى أنّ الجهاز قد دخل "وضع البيع بالتجزئة". عند ظهور هذا الإعداد، تنشئ RetailDemoModeService مستخدمًا تجريبيًا وتنتقل إليه عند بدء تشغيل المستخدم 0، وتفعِّل المشغّل المخصّص المحدّد في مورد تراكب، وتوقِف معالج الإعداد. يستخدم 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 المحدّد عند بدء جلسة تجريبية جديدة.

يبحث معالج الإعداد أيضًا عن الفيديو المذكور سابقًا لتوفير إمكانية الدخول إلى "وضع البيع بالتجزئة". يمكن تعديل معالج الإعداد للبحث عن علامة أخرى خاصة بالمصنّع الأصلي للجهاز تشير إلى أنّ "وضع البيع بالتجزئة" متاح إذا لم يكن الفيديو جزءًا من العرض التوضيحي. إذا كانت هناك أقسام A/B للنظام، يجب أن يحتوي قسم النظام B على الفيديو التجريبي في /preloads/demo. يتم نسخ هذا الفيديو إلى /data/preloads/demo عند أول عملية تشغيل.

تخصيص التطبيقات المُحمَّلة مسبقًا لـ "وضع العرض التوضيحي لبائعي التجزئة"

يمكن للتطبيقات المُحمَّلة مسبقًا تخصيص تجربتها لـ "وضع العرض التوضيحي لبائعي التجزئة" من خلال استدعاء واجهة برمجة التطبيقات UserManager.isDemoUser() لمعرفة ما إذا كان التطبيق يتم تشغيله في بيئة تجريبية.

يتم ضبط قيود معيّنة في المستخدم التجريبي، على غرار سياسات الجهاز أو الملف الشخصي المُدارَين التي تمنع التطبيقات والمستخدمين من تنفيذ عمليات معيّنة. أحد هذه القيود هو DISALLOW_MODIFY_ACCOUNTS. باستخدام هذا القيد، لا يسمح AccountManager والإعدادات بإضافة حسابات. تتفاعل بعض تطبيقات Google مع هذا القيد وتعرض رسالة خطأ، ولن تطلب تطبيقات أخرى حسابًا (مثل YouTube و"صور Google"). ننصح تطبيقات المصنّعين الأصليّين للأجهزة أيضًا بالتحقّق مما إذا تم ضبط DISALLOW_MODIFY_ACCOUNTS والتعامل مع السيناريو وفقًا لذلك.

تحديثات النظام

تلقائيًا، عند تفعيل "وضع البيع بالتجزئة"، يتم ضبط سياسة الجهاز على التحديث عبر الهواء (OTA) تلقائيًا. ستنزّل أجهزة البيع بالتجزئة التحديث وتعيد تشغيله وتثبّته (مع مراعاة حدود البطارية) بدون أي تفاعل من المستخدم.

تطبيق العرض التوضيحي لبائعي التجزئة

يتطلّب تنفيذ "وضع العرض التوضيحي لبائعي التجزئة" المستند إلى مالك الجهاز ضبط تطبيق وحدة التحكّم في سياسة الجهاز كمالك للجهاز. يحتوي "المشروع مفتوح المصدر لنظام Android‏ (AOSP)" على تنفيذ مرجعي لتطبيق RetailDemo في /packages/apps/RetailDemo.

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

تتيح واجهات برمجة التطبيقات في فئة DevicePolicyManager لمالك الجهاز ومالك الملف الشخصي فرض سياسات مختلفة على الجهاز. في ما يلي بعض وظائف DevicePolicyManager التي تنطبق على "وضع العرض التوضيحي لبائعي التجزئة".

  • إنشاء المستخدمين وإدارتهم.

  • أعد تشغيل الجهاز.

  • اضبط الحزم المسموح بها في LockTask.

  • ثبِّت الحزم من خلال PackageInstaller.

  • امنع إلغاء تثبيت الحزم.

  • فعِّل التحديثات التلقائية للنظام. ستنزّل الأجهزة تلقائيًا التحديثات عبر الهواء وتطبّقها.

  • أوقِف حارس المفاتيح.

  • امنع ضبط كلمات المرور أو بصمات الأصابع.

  • اضبط مجموعة من الإعدادات المسموح بها في Settings.Global، Settings.Secure، وSettings.System الإعدادات.

  • اضبط سياسة الأذونات على PERMISSION_POLICY_AUTO_GRANT، ما يمنح تلقائيًا جميع أذونات وقت التشغيل. يمكن أيضًا منح الأذونات بشكل أكثر تحديدًا: إذن واحد لتطبيق واحد. لا ينطبق ذلك على أذونات app-ops، التي يجب أن يمنحها المستخدمون على أساس كل مستخدم وكل تطبيق.

  • اضبط قيود المستخدم ذات الصلة بـ "وضع البيع بالتجزئة" كما هو محدّد في 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-en-rUS/strings.xml وres/values-en-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 ، وتطبيق Sample Device Owner.

التحقق من صحة البيانات

لا يغطي اختبار التوافق مع Android‏ (CTS) "وضع العرض التوضيحي لبائعي التجزئة" لأنّه ميزة اختيارية. يجب إجراء الاختبار يدويًا أو باستخدام اختبارات الوحدات للتطبيق التجريبي.

الجلسة التجريبية

إعداد الجلسة التجريبية

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

وضع العرض التوضيحي لبائعي التجزئة

الشكل 2: وضع العرض التوضيحي لبائعي التجزئة

عرض الجلسة التجريبية

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

للحفاظ على سلامة "وضع البيع بالتجزئة"، يتم إيقاف حارس المفاتيح ويتم أيضًا منع إجراءات معيّنة من "الإعدادات السريعة" التي قد تؤثر سلبًا في "وضع البيع بالتجزئة"، بما في ذلك ما يلي:

  • تبديل "وضع الطائرة"
  • إزالة نقاط الدخول إلى Wi-Fi أو تعديلها (الإعدادات)
  • تغيير شركة الاتصالات (الإعدادات)
  • ضبط نقطة الاتصال (الإعدادات)
  • تبديل المستخدم

بالإضافة إلى ذلك، يتم أيضًا حظر الوصول إلى بعض الإعدادات العامة التي يمكن أن تؤثر في "وضع البيع بالتجزئة" من خلال إيقاف ما يلي:

  • إعدادات Wi-Fi
  • خيارات إعداد شبكة الجوّال، وخاصةً نقاط الاتصال
  • إعدادات البلوتوث
  • النسخ الاحتياطي وإعادة الضبط والتاريخ والوقت وشبكات الجوّال (لا تظهر على الإطلاق)

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

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

  • السطوع
  • التدوير التلقائي
  • ضوء الفلاش
  • اللغة
  • تسهيل الاستخدام

الخروج من "وضع العرض التوضيحي لبائعي التجزئة"

للخروج من "وضع البيع بالتجزئة"، يجب أن يضمن موظفو البيع بالتجزئة عدم تسجيل الجهاز التجريبي ضمن إدارة الجهاز وإعادة ضبط الجهاز على الإعدادات الأصلية من برنامج الإقلاع.