אופטימיזציה של תוכן לפי הקשר עבור Assistant

Android 6.0 Marshmallow מציע דרך חדשה למשתמשים ליצור אינטראקציה עם אפליקציות באמצעות Assistant אפליקציות, כמו Google Assistant. העוזר הדיגיטלי הוא חלון ברמה העליונה שהמשתמשים יכולים לצפות בו כדי לקבל הקשר את הפעולות הרלוונטיות לפעילות הנוכחית. הפעולות האלה עשויות לכלול קישורי עומק לאפליקציות אחרות ב- במכשיר.

המשתמשים מפעילים את Assistant בלחיצה ארוכה על הלחצן הראשי או על ידי אמירת ביטוי מפתח. בתגובה, המערכת פותחת חלון ברמה העליונה שמציג את ההקשר פעולות רלוונטיות.

באפליקציית עוזר דיגיטלי, כמו Google Assistant, מטמיעים את חלון שכבת-העל של Assistant באמצעות תכונה שנקראת Now on Tap, והיא פועלת עם הפונקציונליות ברמת הפלטפורמה של Android. המערכת מאפשר למשתמש לבחור אפליקציית עוזר, שמקבלת מידע הקשרי מהאפליקציה באמצעות Assist API של Android.

במדריך הזה מוסבר איך אפליקציות ל-Android משתמשות ב-Assist API של Android כדי לשפר את העוזר הדיגיטלי חוויית המשתמש. מידע נוסף על יצירה של אפליקציית מדיה כדי ש-Assistant תוכל להפעיל אותה והשליטה בידיים שלכם, אפשר לעיין במאמר Google Assistant ואפליקציות מדיה.

שימוש ב-Assistant

איור 1 ממחיש אינטראקציה אופיינית של משתמש עם העוזר הדיגיטלי. כשהמשתמש לוחץ לחיצה ארוכה לחצן דף הבית, קריאות חוזרות (callbacks) של Assist API מופעלות באפליקציית המקור (שלב 1). ה-Assistant מעבד את חלון שכבת-העל (שלבים 2 ו-3), ואז המשתמש בוחר בפעולה שרוצים לבצע. העוזר הדיגיטלי מבצע את הפעולה שנבחרה כמו הפעלת אובייקט Intent באמצעות קישור עומק לאפליקציית המסעדה (יעד) (שלב 4).

איור 1. דוגמה לאינטראקציה עם Assistant עם התכונה Now on Tap של אפליקציית Google

המשתמשים יכולים להגדיר את העוזר הדיגיטלי על ידי בחירה באפשרות הגדרות > אפליקציות > אפליקציות ברירת מחדל > מסייע ו- קלט קולי. המשתמשים יכולים לשנות אפשרויות מערכת כמו גישה את תוכן המסך כטקסט וגישה לצילום מסך, כפי שמוצג באיור 2.

איור 2. מסייע ו- הגדרות קלט קולי

אפליקציית מקור

כדי להבטיח שהאפליקציה שלך תפעל עם Assistant כמקור מידע למשתמשים, צריך לפעול רק בהתאם לנגישות הטובה ביותר שיטות. בקטע הזה נסביר איך מספקים מידע נוסף כדי לשפר את חוויית המשתמש של Assistant ואת התרחישים שדורשים טיפול מיוחד, כמו תצוגות בהתאמה אישית.

שיתוף פרטים נוספים עם העוזר הדיגיטלי

בנוסף לטקסט ולצילום המסך, האפליקציה יכולה לשתף מידע אחר בעזרת Assistant. למשל, המוזיקה שלכם האפליקציה תוכל לבחור להעביר את פרטי האלבום הנוכחיים כדי שה-Assistant להציע פעולות חכמות יותר שמותאמות לפעילות הנוכחית. שימו לב שממשקי ה-API של Assist מספקים בקרי מדיה. כדי להוסיף פקדי מדיה: Google Assistant ואפליקציות מדיה.

כדי לספק מידע נוסף ל-Assistant, האפליקציה שלכם מספקת הקשר גלובלי לאפליקציות על ידי רישום האזנה לאפליקציה מספקת מידע ספציפי לפעילות עם קריאה חוזרת (callbacks) של פעילות, כפי שמוצג איור 3:

איור 3. תרשים רצף מחזור החיים של Assist API

כדי לספק הקשר גלובלי לאפליקציה, האפליקציה יוצרת הטמעה של Application.OnProvideAssistDataListener ורישום זה מתבצע באמצעות registerOnProvideAssistDataListener(). כדי לספק מידע הקשרי ספציפי לפעילות, הפעילות מבטל את onProvideAssistData() ו-onProvideAssistContent(). שתי שיטות הפעילות נקראות אחרי הפונקציה הגלובלית האופציונלית מופעלת קריאה חוזרת. הקריאות החוזרות מבוצעות ב-thread הראשי, לכן הן אמורות לפעול להשלים הנחיה. הקריאות החוזרות מופעלות רק כשהפעילות פעילה.

הצגת הקשר

כשהמשתמש מפעיל את Assistant, קוראים לפונקציה onProvideAssistData() כדי לבנות ACTION_ASSIST הכוונה עם כל ההקשרים של האפליקציה הנוכחית שמיוצגת כמופע של AssistStructure. אפשר לשנות את השיטה הזו כדי למקם כל מה שתרצו שבחבילה יופיע חלק EXTRA_ASSIST_CONTEXT מכוונת האסיסטנט.

תיאור התוכן

האפליקציה שלך יכולה להטמיע onProvideAssistContent() לשיפור חוויית המשתמש ב-Assistant באמצעות הפניות שקשורות לתוכן שקשורה לפעילות הנוכחית. אפשר לתאר את התוכן של האפליקציה באמצעות אוצר מילים נפוץ מוגדר על ידי Schema.org באמצעות אובייקט JSON-LD. בדוגמה הבאה, אפליקציית מוזיקה נתונים מובְנים שמתארים את אלבום המוזיקה שהמשתמש נמצא כרגע צפייה:

Kotlin

override fun onProvideAssistContent(assistContent: AssistContent) {
    super.onProvideAssistContent(assistContent)

    val structuredJson: String = JSONObject()
            .put("@type", "MusicRecording")
            .put("@id", "https://example.com/music/recording")
            .put("name", "Album Title")
            .toString()

    assistContent.structuredData = structuredJson
}

Java

@Override
public void onProvideAssistContent(AssistContent assistContent) {
  super.onProvideAssistContent(assistContent);

  String structuredJson = new JSONObject()
       .put("@type", "MusicRecording")
       .put("@id", "https://example.com/music/recording")
       .put("name", "Album Title")
       .toString();

  assistContent.setStructuredData(structuredJson);
}

אפשר גם לשפר את חוויית המשתמש בעזרת הטמעות מותאמות אישית של onProvideAssistContent(), שיכול לספק את היתרונות הבאים:

הערה: סביר להניח שיהיה צורך בהטמעה של בחירת טקסט בהתאמה אישית כדי להטמיע את onProvideAssistContent() ולהתקשר setClipData().

הטמעת ברירת מחדל

אם גם onProvideAssistData() וגם לא onProvideAssistContent() הקריאה החוזרת (callback) של האפליקציה, המערכת עדיין ממשיכה ומעבירה שנאסף באופן אוטומטי ל-Assistant, אלא אם החלון מסומן כמאובטח. כפי שמוצג באיור 3, המערכת משתמשת בהטמעות ברירת המחדל של onProvideStructure() ו-onProvideVirtualStructure() כדי לאסוף טקסט ולהציג מידע על היררכיה. אם התצוגה המפורטת כוללת מודעות בהתאמה אישית שרטוט טקסט, צריך לשנות את onProvideStructure() כדי לספק ל-Assistant עם הטקסט שמוצג למשתמש באמצעות התקשרות אל setText(CharSequence).

ברוב המקרים, הטמעת תמיכה בנגישות מאפשרת Assistant כדי להשיג את המידע שהוא צריך. כדי להטמיע תמיכה בנגישות, ליישם את השיטות המומלצות שמתוארות במאמר יצירת אפליקציות נגיש, כולל:

החרגת הצפיות מהעוזרים

כדי לטפל במידע רגיש, האפליקציה שלך יכולה להחריג את התצוגה הנוכחית מ-Assistant. על ידי הגדרה של פרמטר הפריסה FLAG_SECURE של WindowManager. צריך להגדיר את FLAG_SECURE באופן מפורש עבור כל חלון שנוצר בעקבות הפעילות, כולל תיבות דו-שיח. האפליקציה שלך יכולה גם להשתמש setSecure() להחרגה משטח עבודה מה-Assistant. אין מנגנון גלובלי (ברמת האפליקציה) להחרגה של כל הצפיות מה-Assistant. הערה שהשדה FLAG_SECURE לא גורם להפסקת הקריאות החוזרות (callback) של Assist API יריות. הפעילות שמשתמשת ב-FLAG_SECURE עדיין יכולה באופן מפורש לספק מידע לאפליקציית העזרה באמצעות הקריאות החוזרות (callback) שתוארו קודם לכן במדריך הזה.

הערה: בחשבונות ארגוניים (Android for Work), האדמין יכול להשבית איסוף נתוני העוזר הדיגיטלי לפרופיל העבודה באמצעות השיטה setScreenCaptureDisabled() ב-API של DevicePolicyManager.

אינטראקציות קוליות

גם קריאות חוזרות (callback) של API מסייע מופעלות כאשר ביטוי מפתח זיהוי. מידע נוסף זמין במאמר קול תיעוד של פעולות.

שיקולים בקשר לסידור Z

Assistant משתמשת בחלון שכבת-על קליל שמוצג מעל הפעילות הנוכחית. המשתמשים יכולים להפעיל את Assistant בכל שלב, לא ליצור קבוע חלונות התראת המערכת שמפריעים לחלון שכבת-העל, כפי שמוצג איור 4.

איור 4. שכבה מסייעת בסדר Z

אם האפליקציה משתמשת ב- חלונות של התראת מערכת, מסירים אותם מיד מפני שהם מופעלים המסך פוגע בחוויית המשתמש.

אפליקציית היעד

אפליקציות של Assistant בדרך כלל מנצלות את היתרונות של קישורי עומק כדי למצוא אפליקציות יעד. כדי להפוך את מומלץ להוסיף אפליקציית יעד פוטנציאלית, כדאי להוסיף תמיכה בקישורי עומק. ההתאמה בין ההקשר של המשתמש הנוכחי לקישורי עומק או בין פעולות פוטנציאליות אחרות שמוצגות חלון שכבת-העל (מוצג בשלב 3 באיור 1) הוא ספציפי להטמעה של Google Assistant. עבור לדוגמה, אפליקציית Google Assistant משתמשת בקישורי עומק ובקישורים לאפליקציות כדי למשוך תנועה לאפליקציות יעד.

הטמעה של Assistant משלך

מומלץ להטמיע עוזר דיגיטלי משלך. כפי שמוצג באיור 2, המשתמש יכול לבחור את אפליקציית העזרה הפעילה. אפליקציית העזרה חייבת לספק הטמעה של VoiceInteractionSessionService ושל VoiceInteractionSession כמו שמוצג ב- בדוגמה הזו VoiceInteraction. כדי לעשות את זה נדרשת גם ההרשאה BIND_VOICE_INTERACTION. לאחר מכן, Assistant תוכל לקבל את היררכיית הטקסט והתצוגה שמיוצגת כמופע של AssistStructure ב-onHandleAssist(). צילום המסך מתקבל דרך onHandleScreenshot().