ส่งทางลัดแบบไดนามิกไปยัง Assistant

แป้นพิมพ์ลัดสำหรับ Android ช่วยให้ผู้ใช้ วิธีดำเนินการหรือเข้าถึงเนื้อหาในแอป Assistant สามารถแนะนําทางลัดแบบไดนามิกสำหรับ Android ของคุณให้กับผู้ใช้ที่ ที่เกี่ยวข้อง เพื่อช่วยให้ผู้ใช้ค้นพบและเล่นซ้ำ ฟังก์ชันที่พร้อมใช้งานเสียง

เช่น คุณจะพุชทางลัดสำหรับโน้ตแต่ละรายการที่ผู้ใช้สร้างได้ แอปการจดบันทึก คุณทำให้ ลิงก์แบบไดนามิกที่มีสิทธิ์แสดงในแพลตฟอร์มของ Google เช่น Assistant โดยเพิ่มไลบรารี Jetpack การผสานรวมทางลัดของ Google ลงในโปรเจ็กต์ของคุณ ไลบรารีนี้ช่วยให้ Assistant สามารถใช้แป้นพิมพ์ลัดแบบไดนามิกที่คุณพุชโดยใช้ ShortcutManagerCompat ซึ่งเป็น Wrapper ของ Jetpack สำหรับฟังก์ชัน ShortcutManager API

เมื่อคุณใช้ไลบรารีการผสานรวมทางลัดของ Google ในแอปไดนามิก ทางลัดที่คุณพุชไปยัง Google จะปรากฏให้ผู้ใช้เห็นเป็นคำแนะนำทางลัดเสียง ในแอป Assistant คุณสามารถพุชแป้นพิมพ์ลัดแบบไดนามิกได้ไม่จำกัดจำนวนไปยัง Assistant ที่ใช้เมธอด pushDynamicShortcut() ของ ไลบรารี ShortcutManagerCompat

กำหนดค่าโปรเจ็กต์การพัฒนา

การเพิ่มฟังก์ชันทางลัดแบบไดนามิกลงในแอปของคุณต้องใช้ ไลบรารีการผสานรวมทางลัดของ Google ซึ่งเป็นไลบรารี Android Jetpack ส่วนนี้จะอธิบายวิธีกำหนดค่าโปรเจ็กต์การพัฒนาแอปให้รวม ไลบรารีนี้

โปรดทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มไลบรารี Jetpack นี้และกำหนดค่าโปรเจ็กต์

  1. อัปเดตไฟล์ gradle.properties เพื่อจัดการไลบรารี Jetpack ดังนี้

    gradle.properties

    android.useAndroidX=true
    # Automatically convert third-party libraries to use AndroidX
    android.enableJetifier=true
    
  2. เพิ่มทรัพยากร Dependency ของไลบรารี Jetpack ไปยัง build.gradle:

    app/build.gradle

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

    ในโค้ดตัวอย่างก่อนหน้านี้ คุณแสดงไลบรารี Jetpack 2 รายการเป็น ทรัพยากร Dependency ไลบรารี androidx.core:core:1.6.0 ประกอบด้วย คลาส ShortcutManagerCompat ซึ่งคุณใช้เพื่อพุชทางลัดแบบไดนามิกไปยัง Google

    androidx.core:core-google-shortcuts:1.0.1 คือกลุ่ม Google ไลบรารีการผสานรวมทางลัด ไลบรารีนี้ไม่มีหน้าสำหรับนักพัฒนาซอฟต์แวร์ API การเพิ่มแอปเป็นทรัพยากร Dependency จะทำให้ Assistant สามารถ แป้นพิมพ์ลัดแบบไดนามิกที่คุณพุชโดยใช้คลาส ShortcutManagerCompat

พุชทางลัดแบบไดนามิก

วิธีพุชทางลัดแบบไดนามิกที่มีสิทธิ์แสดงบน Assistant คุณสร้างทางลัดเป็นครั้งแรกโดยใช้ ShortcutInfoCompat.Builder()

จากนั้นพุชทางลัดโดยใช้ ShortcutManagerCompat.pushDynamicShortcut() วิธี มีการพุชทางลัด เมื่อใดก็ตามที่ผู้ใช้ดำเนินการที่เกี่ยวข้องในแอปจนเสร็จ ตัวอย่างต่อไปนี้ โค้ดจะพุชทางลัดทุกครั้งที่ผู้ใช้สั่งอาหารในแอปจัดส่งอาหาร ดังนี้

ตัวอย่างกิจกรรมการสั่งซื้อ

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

ในตัวอย่างก่อนหน้านี้ เมธอด 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 ในอุปกรณ์ บัญชี ทางลัดแบบไดนามิกจะปรากฏในรายการสำหรับแอปของคุณ