Saat menerapkan Action Aplikasi untuk aplikasi Android, Anda mungkin
harus menangani permintaan yang merupakan variasi pada suatu tema. Misalnya, aplikasi
kebugaran Anda mengimplementasikan intent bawaan (BII) START_EXERCISE
untuk memungkinkan
pengguna memulai berbagai olahraga dengan meminta hal-hal kepada Asisten seperti,
"Ok Google, mulai berlari di Aplikasi Contoh".
Untuk memenuhi intent ini, Anda memerlukan logika pencocokan permintaan untuk menangani setiap jenis olahraga, termasuk variasi seperti "jogja", "sprint", atau "lomba". Logika ini dengan cepat menjadi rumit saat olahraga yang didukung meningkat.
Untuk BII yang didukung, seperti START_EXERCISE
, Anda dapat menghindari logika pencocokan
yang kompleks ini dengan menggunakan inventaris inline. Inventaris inline adalah kumpulan pintasan
Android statis yang ditentukan di shortcuts.xml
yang merepresentasikan fitur dan konten
di aplikasi Anda.
Setiap pintasan berisi ID item dan daftar sinonim yang mewakili variasi dalam cara pengguna merujuk ke item tersebut. Selama pemanggilan, BII membandingkan parameter BII yang diberikan pengguna dengan daftar sinonim. Jika ditemukan kecocokan, parameter BII akan diperbarui ke ID item pintasan yang cocok.
Inventaris inline memungkinkan Asisten Google menyederhanakan parameter value BII yang diberikan untuk aplikasi Anda selama pemanggilan Action Aplikasi.
Inventaris inline berfungsi seperti tabel pencarian untuk parameter BII, yang mengekspresikan berbagai cara pengguna merujuk ke fitur atau konten di aplikasi Anda menggunakan ID item yang Anda tentukan. Fungsi ini menyederhanakan logika pencocokan permintaan aplikasi dengan memungkinkan fulfillment Anda mengantisipasi ID item dari parameter BII.
Batasan dan alternatif
Pintasan inventaris inline memiliki batasan berikut:
- Batas pintasan: Maksimum 1.000 pintasan inventaris inline dapat ditentukan per aplikasi.
- Batas sinonim: Setiap pintasan inventaris inline dapat berisi maksimum 20 nilai sinonim.
- Definisi statis: Pintasan inventaris inline dideklarasikan secara statis
di
shortcuts.xml
dan hanya dapat diperbarui untuk pengguna Anda dengan memublikasikan versi baru aplikasi.
Dengan mempertimbangkan persyaratan untuk konfigurasi statis, inventaris inline paling cocok untuk memperluas informasi aplikasi yang tidak sering berubah dan tidak dipersonalisasi ke Asisten, seperti item menu, rute bus, atau ukuran minuman. Untuk jenis konten lainnya, pertimbangkan alternatif berikut:
Inventaris web: memungkinkan Asisten membuat kueri konten web publik saat mencocokkan kueri pengguna dengan ID konten aplikasi yang didukung. Kueri inventaris web terjadi secara real time selama pemanggilan, sehingga Anda dapat memperluas katalog produk, postingan media sosial, dan konten lainnya yang sering diperbarui ke Asisten.
Pintasan dinamis: memperluas inventaris konten aplikasi yang dipersonalisasi ke Asisten. Pintasan dinamis memungkinkan pengguna memutar ulang tindakan umum dengan cepat, seperti mengurutkan ulang minuman favorit dari aplikasi pemesanan makanan atau membuka daftar belanja di aplikasi pencatatan.
Membuat inventaris inline
Inventaris inline menyederhanakan pengembangan dengan memberikan cara yang praktis kepada Asisten untuk menerjemahkan berbagai cara pengguna meminta konten dan fitur aplikasi ke dalam ID yang dapat diprediksi yang diharapkan oleh aplikasi Anda. Misalnya, aplikasi Anda menawarkan olahraga yang berbeda sehingga pengguna dapat mulai menggunakan suaranya, dan aplikasi Anda mengharapkan pengguna membuat permintaan berikut untuk jenis olahraga yang sama:
- Ok Google, mulai lari di Aplikasi Contoh.
- Ok Google, mulai joging di Aplikasi Contoh.
Dalam pintasan inventaris inline, Anda menetapkan shortcutId
ke "CARDIO_RUN"
,
ID olahraga yang diharapkan oleh aplikasi Anda. Anda kemudian menentukan "run" dan
"jog" sebagai sinonim yang terkait dengan shortcutId
. Kemudian, saat pengguna memicu
Action Aplikasi Anda dengan kueri sebelumnya, Asisten akan menggunakan ID
"CARDIO_RUN"
untuk parameter BII saat membuat intent fulfillment.
Cuplikan berikut dari contoh file app/res/shortcuts.xml
mengimplementasikan
kasus ini:
<capability android:name="actions.intent.START_EXERCISE">
<intent
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.ExerciseActivity">
<parameter android:name="exercise.name" android:key="exercise" />
</intent>
</capability>
<shortcut android:shortcutId="CARDIO_RUN">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/run_names" />
</capability-binding>
</shortcut>
Pada contoh sebelumnya, shortcut
inventaris inline mendeklarasikan
tag <parameter-binding>
dalam elemen <capability-binding>
,
yang mengikatnya ke parameter BII exercise.name
yang ditentukan dalam
<capability>
.
@array/run_names
resource array string menentukan daftar sinonim dalam
res/values/arrays.xml
yang dikenali dan dipetakan Asisten ke
ID item "CARDIO_RUN"
:
<!-- Synonym values for "CARDIO_RUN" inline inventory -->
<resources>
<string-array name="run_names">
<item>Run</item>
<item>Jog</item>
<item>Sprint</item>
</string-array>
</resources>
Jika <url-template>
disediakan untuk kemampuan, shortcutId
untuk
nilai yang cocok disisipkan dalam URL yang dihasilkan pada placeholder
yang sesuai untuk parameter. Kode berikut dari contoh file
app/res/shortcuts.xml
mengimplementasikan kasus ini:
<capability android:name="actions.intent.START_EXERCISE">
<intent>
<url-template android:value="myapp://workout{?exercise}" />
<parameter android:name="exercise.name" android:key="exercise" />
</intent>
</capability>
<shortcut android:shortcutId="CARDIO_RUN">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/run_names" />
</capability-binding>
</shortcut>
Pada contoh sebelumnya, Asisten membuat deep link fulfillment
myapp://workout?exercise=CARDIO_RUN
.
Fulfillment menggunakan intent pintasan
Secara default, pintasan menyediakan shortcutId
dari nilai inventaris inline
yang cocok dengan intent
dari capability
tempat pintasan terikat, sebagaimana
dideklarasikan di tag <capability-binding>
pintasan. Anda dapat
menentukan secara opsional bahwa intent
yang ditentukan dalam pintasan itu sendiri digunakan untuk
fulfillment dengan menambahkan tag <shortcut-fulfillment>
ke capability
.
Kode berikut dari contoh file app/res/shortcuts.xml
menerapkan
fulfillment pintasan:
<capability android:name="actions.intent.START_EXERCISE">
<shortcut-fulfillment>
<parameter android:name="exercise.name"/>
</shortcut-fulfillment>
</capability>
<shortcut android:shortcutId="CARDIO_RUN">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/run_names" />
</capability-binding>
<intent android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.ExerciseActivity">
<parameter android:name="exercise.name" android:key="exercise" />
</intent>
</shortcut>
Dalam contoh sebelumnya, jika kueri pengguna cocok dengan nilai inventaris inline
untuk parameter exercise.name
, tag <shortcut-fulfillment>
akan menentukan bahwa intent
pintasan terikat digunakan untuk fulfillment.
Inventaris inline untuk BII fitur aplikasi terbuka
Meskipun secara umum inventaris inline merupakan kemampuan opsional untuk BII yang
mendukungnya, inventaris ini diperlukan untuk BII tertentu, seperti OPEN_APP_FEATURE
. BII
yang biasa digunakan ini memungkinkan pengguna melakukan deep link ke fitur aplikasi tertentu
menggunakan Asisten.
BII fitur aplikasi terbuka memerlukan inventaris inline nama fitur aplikasi untuk
memverifikasi bahwa fitur yang diminta pengguna ada sebelum melakukan deep linking pengguna ke
aplikasi Anda.
Kode berikut dari contoh file app/res/shortcuts.xml
mengimplementasikan
BII ini dengan satu pintasan yang mewakili fitur status pesanan aplikasi:
<capability android:name="actions.intent.OPEN_APP_FEATURE">
<intent
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.MyClass">
<parameter
android:name="feature"
android:key="featureParam" />
</intent>
<!-- Required fallback fulfillment to handle when parameters are missing from user query. -->
<intent
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.MyClass">
<parameter
android:name="HOME_SCREEN"
android:key="featureParam" />
</intent>
</capability>
<!-- Inline inventory for OPEN_APP_FEATURE. -->
<shortcut android:shortcutId="ORDER_STATUS">
<capability-binding android:key="actions.intent.OPEN_APP_FEATURE">
<parameter-binding
android:key="feature"
android:value="@array/order_status_names" />
</capability-binding>
</shortcut>
Resource array string dalam res/values/arrays.xml
,
@array/order_status_names
, menentukan daftar
sinonim fitur ini:
<resources>
<string-array name="order_status_names">
<item>Order status</item>
<item>Orders</item>
<item>Order history</item>
</string-array>
</resources>
Dengan kemampuan sebelumnya, Asisten dapat memenuhi berbagai frasa untuk fitur yang sama:
- "Ok Google, tampilkan status pesanan saya di Aplikasi Contoh".
- "Ok Google, tampilkan pesanan saya di Aplikasi Contoh".
- "Ok Google, tampilkan histori pesanan saya di Aplikasi Contoh".
Menguji inventaris inline
Uji inventaris Anda dengan memeriksa parameter value BII yang disediakan Asisten untuk
aplikasi Anda, sekaligus memenuhi kemampuan Action Aplikasi yang relevan. Inventaris
inline berfungsi dengan mengganti nilai yang diberikan pengguna dari parameter BII
terikat inventaris dengan shortcutId
pintasan inventaris inline yang cocok.
Misalnya, kemampuan BII START_EXERCISE
mungkin menggunakan inventaris inline untuk
menerjemahkan parameter BII yang diberikan pengguna "run" ke ID olahraga
yang sesuai, "CARDIO_RUN"
.
Plugin Asisten Google memungkinkan Anda melihat pratinjau Action Aplikasi inventaris inline di Asisten pada perangkat pengujian. Uji inventaris Anda menggunakan plugin dengan mengikuti langkah-langkah berikut:
- Konfigurasikan parameter terikat inventaris kemampuan BII Anda dengan nilai sinonim yang terkait dengan inventaris inline Anda.
- Picu BII dari plugin, panggil BII di perangkat pengujian Anda.
- Periksa hasil parameter value yang diberikan Asisten untuk aplikasi Anda selama fulfillment Action Aplikasi.