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

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

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

เมื่อคุณใช้ไลบรารีการผสานรวม Google Shortcuts ในแอป ผู้ใช้จะเห็นแป้นพิมพ์ลัดแบบไดนามิกที่คุณพุชไปยัง 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. เพิ่มไลบรารีของ 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() วิธี มีการพุชทางลัด เมื่อใดก็ตามที่ผู้ใช้ดำเนินการที่เกี่ยวข้องในแอปจนเสร็จ ตัวอย่างต่อไปนี้ โค้ดจะพุชทางลัดทุกครั้งที่ผู้ใช้สร้างรายการในแอปโน้ตและลิสต์

ExampleOrderActivity

Kotlin

// Define the dynamic shortcut for an item
var intent = Intent(context, DisplayOrderActivity::class.java)
intent.action = Intent.ACTION_VIEW
var shortcutInfo = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Running")
    .setLongLabel("Start running")
    .addCapabilityBinding(
        "actions.intent.CREATE_ITEM_LIST", "itemList.name", Arrays.asList("My First List")
    )
    .setIntent(intent) // Push the shortcut
    .build()

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

Java

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

ShortcutInfoCompat.Builder shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Running")
    .setLongLabel("Start running")
    .addCapabilityBinding(
      "actions.intent.CREATE_ITEM_LIST", "itemList.name", Arrays.asList("My First List"))
    .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("Create a list")
    .setLongLabel("Create a list")
    .addCapabilityBinding("actions.intent.CREATE_ITEM_LIST")
    .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("Create a list")
  .setLongLabel("Create a list")
  .addCapabilityBinding("actions.intent.CREATE_ITEM_LIST")
  .setIntent(intent)
  .build();

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

ทดสอบทางลัดแบบไดนามิกด้วย Assistant

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

หากต้องการทดสอบทางลัดแบบไดนามิกด้วย Assistant ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างตัวอย่างการดำเนินการของแอปและเตรียมอุปกรณ์ทดสอบหรือ โปรแกรมจำลองสำหรับทดสอบการดำเนินการต่างๆ โดยทำตาม ที่จำเป็นสำหรับปลั๊กอิน Google Assistant
  2. เปิดแอปและกำหนดทางลัดแบบไดนามิกเพื่อพุช จากนั้นดําเนินการให้เสร็จสมบูรณ์ เช่น ถ้าคุณพุชทางลัดเมื่อ ระบบจะสร้างโน้ตในแอปการจดโน้ตของคุณ จากนั้นสร้างโน้ตใหม่
  3. เปิดทางลัดในแอปการตั้งค่า Assistant บนอุปกรณ์ บัญชี ทางลัดแบบไดนามิกจะปรากฏในรายการสำหรับแอปของคุณ