ב-Android 7.1.1 נוספה תמיכה ברמת המערכת למצב הדגמה לקמעונאים, כדי לאפשר ללקוחות לבדוק את המכשירים בפעולה בחנויות קמעונאיות. מכשירים מוגדרים להדגמה לקמעונאים באמצעות אפליקציה של בעלות על המכשיר, כדי להבטיח שהשימוש במכשיר יהיה מוגבל לאפליקציות מסוימות במצב הדגמה בלבד. משתמשי קצה לא יכולים להוסיף חשבון אישי במכשיר הדגמה למכירה. ב-Android 8.1 התמיכה הזו שונתה כדי ליצור משתמשי הדגמה באמצעות ממשק ה-API createAndManageUser של DevicePolicyManager. כך יצרני ציוד מקורי יכולים להתאים אישית את המצב הרגיל של מכשיר הדגמה לצורכי קמעונאות, במונחים של ניהול משתמשים וניהול מדיניות המכשיר.
אפשר להשתמש בממשקי ה-API של DevicePolicyManager בגרסאות שקדמו ל-Android 8.1, אבל אי אפשר ליצור משתמשים מסוג demo (DevicePolicyManager.MAKE_USER_DEMO
) באמצעות ה-API 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 במערכת, מחיצת המערכת B חייבת להכיל את סרטון הדגמה בכתובת /preloads/demo. הקובץ הזה מועתק אל /data/preloads/demo בהפעלה הראשונה.
התאמה אישית של אפליקציות שהוגדרו מראש למצב הדגמה לקמעונאים
אפליקציות שהועלו מראש יכולות להתאים אישית את חוויית השימוש שלהן במצב הדגמה לקמעונאים. לשם כך, הן צריכות לבצע קריאה ל-API UserManager.isDemoUser()
כדי לבדוק אם האפליקציה מופעלת בסביבת הדגמה.
הגדרנו הגבלות מסוימות במשתמש הדגמה, בדומה למדיניות של מכשיר מנוהל או של פרופיל שמונעת מאפליקציות וממשתמשים לבצע פעולות מסוימות.
אחת מהמגבלות האלה היא DISALLOW_MODIFY_ACCOUNTS
. בעקבות ההגבלה הזו, לא ניתן להוסיף חשבונות באמצעות AccountManager ו-Settings. אפליקציות מסוימות של Google מגיבות להגבלה הזו ומציגות הודעת שגיאה, ואפליקציות אחרות לא יבקשו חשבון (כמו YouTube ו-Photos). מומלץ לאפליקציות של יצרני ציוד מקורי לבדוק גם אם הערך של DISALLOW_MODIFY_ACCOUNTS
מוגדר ולטפל בתרחיש בהתאם.
עדכוני מערכת
כברירת מחדל, כשמצב קמעונאי מופעל, מדיניות המכשיר מוגדרת לעדכון אוטומטי באוויר (OTA). במכשירים שנמכרים בחנויות, העדכון יורד, המכשיר מופעל מחדש והעדכון מותקן (בהתאם לסף הטעינה של הסוללה) ללא התערבות המשתמש.
אפליקציית הדגמה לקמעונאים
כדי להטמיע מצב הדגמה לקמעונאות שמבוסס על הבעלים של המכשיר, צריך להגדיר את האפליקציה Device Policy Controller כבעלים של המכשיר. ב-AOSP יש הטמעה של אפליקציית RetailDemo לדוגמה, ב-/packages/apps/RetailDemo.
לאפליקציות של בעלי המכשיר לא נדרשות הרשאות מורחבות או התקנה מראש בתמונת המערכת, וניתן להוריד אותן במהלך תהליך ההגדרה או ההקצאה. הן מיושמות בדרך כלל כמו אפליקציות רגילות, עם ההבדלים הבאים:
כל האפליקציות של בעלי המכשיר חייבות להרחיב את הרכיב DeviceAdminReceiver, שמשמש כאסימון ההרשאה לכל ממשקי ה-API של DevicePolicyManager. הרכיב צריך להכיל את ההרשאה
android.permission.BIND_DEVICE_ADMIN
, לכלול את כללי המדיניות המיוחדים המבוקשים כמטא-נתונים ולסנן את הכוונותandroid.app.action.PROFILE_PROVISIONING_COMPLETE
ו-android.app.action.DEVICE_ADMIN_ENABLED
.הדגל DevicePolicyManager#MAKE_USER_DEMO, שמוגדר ליצירת משתמשים מיוחדים מסוג דמו, הוא ממשק API מוסתר. הערך של הדגל הזה הוא הקבוע 0x4.
צריך להקצות בעלות על המכשיר רק דרך בעל התפקיד 'ניהול מכשירים' או דרך האפליקציה ManagedProvisioning.
ממשקי ה-API מהסוג DevicePolicyManager מאפשרים לבעלי המכשיר (DO) ולבעלי הפרופיל (PO) לאכוף כללי מדיניות שונים במכשיר. בהמשך מפורטות חלק מהפונקציות של DevicePolicyManager שרלוונטיות למצב הדגמה לקמעונאים.
ליצור ולנהל משתמשים.
מפעילים מחדש את המכשיר.
מגדירים את החבילות המותרות של LockTask.
התקנת חבילות דרך PackageInstaller.
חסימת האפשרות להסיר חבילות.
מפעילים עדכוני מערכת אוטומטיים. המכשירים יורידו עדכונים דרך OTA ויפעילו אותם באופן אוטומטי.
משביתים את מסך הנעילה.
מניעת הגדרת סיסמאות או טביעות אצבע.
מגדירים רשימת היתרים של הגדרות 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-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 מורידה את הסרטון ומתחילה להפעיל אותו. אחרי שהסרטון יורד, הוא ישמש להפעלה בכל סשני ההדגמה העתידיים. אף אחת מהבדיקות לא מתבצעת שוב עד להפעלה מחדש הבאה.
הנחיות לגבי סרטוני הדגמה
סרטוני ההדגמה חייבים להיות בפריסה לאורך, או אם מדובר בטאבלט, בפריסה הטבעית של המכשיר. אורך הסרטון יכול להיות כלשהו, כל עוד הוא ארוך מ-5 שניות. התוכן לא יכול לגרום לבעיות של 'שריפה' (burn-in), כי הוא יופעל כל הזמן כשהמסך מוצג.
מידע נוסף זמין בהגדרות למפתחים ב-Android לגבי משתמשים, פרופילים וחשבונות, במסמכי התיעוד של Device Policy Manager API ובאפליקציה לדוגמה לבעלים של מכשיר.
אימות
בדיקת CTS לא כוללת את מצב ההדגמה לקמעונאים כי זו תכונה אופציונלית. צריך לבצע בדיקה ידנית או בדיקות יחידה לאפליקציית הדגמה.
סשן הדגמה
הגדרת סשן הדגמה
מכשירי הדגמה לקמעונאים עשויים להפעיל את מצב ההדגמה לקמעונאים אם הם מוגדרים למצב הדגמה כבר במפעל. לחלופין, עובדים בחנות הפיזית יכולים להפעיל את מצב הקמעונאי ישירות מאשף ההגדרה.
איור 2. מצב הדגמה לקמעונאים
הצגת סשן הדגמה
כשהמכשיר עובר למצב קמעונאי, הוא עובר למשתמש הדגמה חדש ומפעיל באופן אוטומטי את מרכז האפליקציות המותאם אישית שצוין במשאב שכבת-העל, כפי שמתואר בקטע הטמעה. כברירת מחדל, מרכז האפליקציות המותאם אישית הזה מפעיל את סרטון ההדגמה שוב ושוב עד שהמשתמש נוגע במסך כדי להתחיל סשן הדגמה של משתמש. בשלב הזה, מרכז האפליקציות המותאם אישית מפעיל את מרכז האפליקציות של המערכת ואז יוצא. יצרני ציוד מקורי יכולים לשנות את מרכז האפליקציות בהתאמה אישית כדי להפעיל שירות או פעילות נוספים ביציאה.
כדי לשמור על תקינות מצב הקמעונאי, מסך הנעילה מושבת, וגם פעולות מסוימות בהגדרות המהירות שעלולות להשפיע לרעה על מצב הקמעונאי אסורות, כולל הפעולות הבאות.
- המתג של מצב הטיסה.
- הסרה או שינוי של נקודות גישה ל-Wi-Fi (הגדרות).
- שינוי ספק (הגדרות).
- הגדרת נקודה לשיתוף אינטרנט (הגדרות).
- החלפת משתמשים.
בנוסף, הגישה חסומה גם לחלק מההגדרות הגלובליות שיכולות להשפיע על מצב הקמעונאי, על ידי השבתת האפשרויות הבאות:
- הגדרות Wi-Fi.
- אפשרויות תצורה של רשתות סלולריות, במיוחד נקודות לשיתוף אינטרנט (Hotspot).
- הגדרת Bluetooth.
- 'גיבוי ואיפוס', 'תאריך ושעה' ו'רשתות סלולריות' (הן לא מופיעות בכלל).
אם המשתמש לא פעיל במשך פרק זמן מסוים (90 שניות כברירת מחדל), במצב קמעונאי תוצג תיבת דו-שיח של המערכת עם בקשה מהמשתמש לצאת מהסשן או להמשיך. אם המשתמש בוחר לצאת או אם אין תגובה במשך חמש שניות, המשתמש הדמו הנוכחי יוסר ממצב הקמעונאי, יוחלף במשתמש דמו חדש והסרטון המקורי יופעל שוב בלולאה. אם המסך נכבה באמצעות לחצן ההפעלה, הוא נדלק מחדש באופן אוטומטי אחרי כמה שניות.
אחרי שתצאו מסשן הדגמה, המכשירים יכובו ויאופסו הגדרות גלובליות מסוימות, כולל:
- בהירות
- סיבוב אוטומטי
- פנס
- Language
- נגישות
יציאה ממצב ההדגמה לקמעונאים
כדי לצאת ממצב קמעונאי, עובדי הקמעונאי צריכים לוודא שמכשיר ההדגמה לא רשום בתוכנית ניהול המכשירים, ולאפס את המכשיר להגדרות המקוריות דרך תוכנת האתחול.