דחיפת קיצורי דרך דינמיים ל-Assistant

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

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

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

הגדרת פרויקט הפיתוח

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

כדי להוסיף את ספריית Jetpack הזו ולהגדיר את הפרויקט:

  1. צריך לעדכן את הקובץ gradle.properties כדי לטפל בספריות Jetpack:

    gradle.properties

    android.useAndroidX=true
    # Automatically convert third-party libraries to use AndroidX
    android.enableJetifier=true
    
  2. מוסיפים את יחסי התלות של ספריית Jetpack ל-build.gradle:

    app/build.gradle

    dependencies {
     implementation "androidx.core:core:1.6.0"
     implementation "androidx.core:core-google-shortcuts:1.0.1"
     ...
    }
    

    בקוד לדוגמה הקודם, ציינתם שתי ספריות Jetpack של יחסי התלות. הספרייה androidx.core:core:1.6.0 מכילה את כיתה אחת (ShortcutManagerCompat), שמשמשת אותך כדי לדחוף קיצורים דינמיים אל Google.

    androidx.core:core-google-shortcuts:1.0.1 היא אפליקציית Google ספריית שילוב של קיצורי דרך. הספרייה הזו לא מכילה תוכן למפתחים API. על ידי הוספת התלות הזאת, Assistant תוכל לקבל קיצורי דרך דינמיים שלוחצים עליהם באמצעות המחלקה ShortcutManagerCompat.

העברת קיצורי דרך דינמיים

כדי לדחוף קיצורי דרך דינמיים שאפשר להציג ב-Assistant, קודם כל צריך ליצור את קיצור הדרך באמצעות ShortcutInfoCompat.Builder() בכיתה.

לאחר מכן דוחפים את קיצור הדרך באמצעות אמצעי תשלום אחד (ShortcutManagerCompat.pushDynamicShortcut()). קיצורי הדרך נדחפים בכל פעם שמשתמש משלים פעולה רלוונטית באפליקציה שלכם. הדוגמה הבאה באמצעות קוד, דוחף קיצור דרך בכל פעם שמשתמש מבצע הזמנה באפליקציה למשלוחי אוכל:

ExampleOrderActivity

Kotlin

// Define the dynamic shortcut for a menu item
var intent = Intent(context, DisplayOrderActivity::class.java)
intent.action = Intent.ACTION_VIEW
var shortcutInfo = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Cappuccino")
    .setLongLabel("Order another cappuccino")
    .addCapabilityBinding(
        "actions.intent.ORDER_MENU_ITEM", "menuItem.name", Arrays.asList("cappuccino")
    )
    .setIntent(intent) // Push the shortcut
    .build()

// Push the shortcut
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo)

Java

// Define the dynamic shortcut for a menu item
Intent intent = new Intent(context, DisplayOrderActivity.class);
intent.setAction(Intent.ACTION_VIEW);

ShortcutInfoCompat.Builder shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Cappuccino")
    .setLongLabel("Order another cappuccino")
    .addCapabilityBinding(
      "actions.intent.ORDER_MENU_ITEM", "menuItem.name", Arrays.asList("cappuccino"))
    .setIntent(intent)
    .build();

// Push the shortcut
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

השדה id שהוזכר בשיטה ShortcutInfoCompat.Builder בסעיף הקודם קוד לדוגמה מגדיר את shortcutId של אובייקט קיצור הדרך שנוצר. הid הזה חייב להיות ליטרל מחרוזת ייחודי. פרטים נוספים זמינים במאמר מסמכי תיעוד בנושא קיצורי דרך ב-Android.

בדוגמה הקודמת, ה-method addCapabilityBinding מקשרת את הדינמיקה קיצור דרך אל capability של אותו android:name שהוגדר shortcuts.xml השיטה הזו מאפשרת לשייך את קיצור הדרך פרמטר סמנטי של Intent מובנה (BII).

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

Kotlin

var intent: Intent = Intent(context, DisplayOrderActivity::class.java)
intent.setPackage(this, "com.sample.app")
intent.setAction(Intent.ACTION_VIEW)

var shortcutInfo: ShortcutInfoCompat = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Order coffee")
    .setLongLabel("Order a cup of coffee")
    .addCapabilityBinding("actions.intent.ORDER_MENU_ITEM")
    .setIntent(intent)
    .build()

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

Java

Intent intent = new Intent(context, DisplayOrderActivity.class);
intent.setPackage(this, "com.sample.app");
intent.setAction(Intent.ACTION_VIEW);

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
  .setShortLabel("Order coffee")
  .setLongLabel("Order a cup of coffee")
  .addCapabilityBinding("actions.intent.ORDER_MENU_ITEM")
  .setIntent(intent)
  .build();

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

בדיקה של מקשי הקיצור הדינמיים באמצעות Assistant

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

כדי לבדוק את מקשי הקיצור הדינמיים באמצעות Assistant:

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