Saat menerapkan Action Aplikasi untuk aplikasi Android, Anda mungkin mendapati diri Anda
harus menangani permintaan yang
bervariasi pada tema. Misalnya,
aplikasi kebugaran menerapkan intent bawaan (BII) START_EXERCISE
agar
pengguna memulai berbagai aktivitas olahraga dengan menanyakan hal-hal seperti,
"Ok Google, mulai lari di Aplikasi Contoh".
Untuk memenuhi intent ini, logika pencocokan permintaan Anda harus menangani setiap intent jenis latihan fisik, termasuk variasi seperti "joging", "sprint", atau "ras". Logika ini dengan cepat menjadi rumit saat olahraga yang didukung meningkat.
Untuk BII yang didukung, seperti START_EXERCISE
, Anda dapat menghindari pencocokan kompleks ini
logika menggunakan inventaris inline. Inventaris inline adalah kumpulan
Pintasan Android yang ditentukan di shortcuts.xml
yang merepresentasikan fitur dan konten
dalam aplikasi Anda.
Setiap pintasan berisi ID item dan daftar sinonim mewakili variasi dalam bagaimana pengguna mungkin merujuk pada item. 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 BII yang diberikan ke aplikasi Anda selama pemanggilan Action Aplikasi.
Inventaris inline berfungsi seperti tabel pemeta untuk parameter BII, mengekspresikan berbagai cara pengguna merujuk ke fitur atau konten di aplikasi Anda menggunakan pengidentifikasi item yang Anda tentukan. Menyederhanakan pencocokan permintaan aplikasi logika dengan memungkinkan fulfillment Anda mengantisipasi ID item dari BII parameter.
Batasan dan alternatif
Pintasan inventaris inline memiliki batasan berikut:
- Batas pintasan: Maksimum 1.000 pintasan inventaris inline dapat yang 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 dari aplikasi Anda.
Mengingat persyaratan konfigurasi statis, inventaris inline adalah pilihan terbaik cocok untuk memperluas informasi aplikasi yang tidak sering berubah dan tidak dipersonalisasi untuk 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. Inventaris web kueri terjadi secara real time selama pemanggilan, yang memungkinkan Anda memperluas katalog produk, postingan media sosial, dan konten lain yang sering diperbarui ke Asisten.
Pintasan dinamis: memperluas inventaris konten aplikasi yang dipersonalisasi ke Asisten. Pintasan dinamis memungkinkan pengguna memutar ulang kata kunci dengan cepat tindakan, seperti memesan ulang minuman favorit mereka dari aplikasi pemesanan makanan atau menarik daftar belanja di aplikasi pencatat.
Membuat inventaris inline
Inventaris inline menyederhanakan pengembangan dengan memberikan cara praktis kepada Asisten untuk menerjemahkan berbagai cara pengguna meminta konten dan fitur aplikasi ke dalam ID yang dapat diprediksi yang diharapkan oleh aplikasi Anda. Sebagai misalnya, aplikasi Anda menawarkan beragam olahraga yang bisa mulai digunakan pengguna suara mereka, dan aplikasi Anda mengharapkan pengguna membuat permintaan berikut untuk jenis latihan yang sama:
- Ok Google, mulai sesi 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. Kemudian, Anda menentukan "{i>run<i}" dan
"joget" sebagai sinonim yang terkait dengan shortcutId
. Kemudian, saat pengguna memicu
Action Aplikasi Anda dengan kueri sebelumnya, Asisten menggunakan ID
"CARDIO_RUN"
untuk parameter BII saat menghasilkan intent fulfillment.
Cuplikan berikut dari contoh file app/res/shortcuts.xml
mengimplementasikan
dalam hal 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>
.
Resource array string @array/run_names
menentukan daftar sinonim dalam
res/values/arrays.xml
yang dikenali Asisten dan dipetakan 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>
Saat <url-template>
disediakan untuk kemampuan tersebut, shortcutId
untuk
nilai yang cocok dimasukkan ke dalam URL yang dihasilkan di
{i>placeholder<i} 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
diimplementasikan
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>
Pada contoh sebelumnya, jika kueri pengguna cocok dengan nilai inventaris inline
untuk parameter exercise.name
, tag <shortcut-fulfillment>
menetapkan bahwa intent
dari 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
. Ini
BII yang biasa digunakan memungkinkan pengguna menerapkan deep link ke fitur aplikasi tertentu
menggunakan Asisten.
BII fitur aplikasi terbuka memerlukan inventaris inline dari nama fitur aplikasi untuk
memverifikasi bahwa ada fitur yang diminta pengguna sebelum melakukan deep linking pengguna ke
aplikasi Anda.
Kode berikut dari contoh file app/res/shortcuts.xml
mengimplementasikannya
BII 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 di 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. Iklan inline
inventaris berfungsi dengan mengganti nilai yang disediakan pengguna dari BII yang terikat inventaris
dengan shortcutId
dari pintasan inventaris inline yang cocok.
Sebagai
misalnya, kemampuan BII START_EXERCISE
mungkin menggunakan inventaris inline untuk
terjemahkan parameter BII yang disediakan pengguna "run" untuk latihan yang sesuai
ID, "CARDIO_RUN"
.
Plugin Asisten Google memungkinkan Anda melihat pratinjau Aplikasi inventaris inline Tindakan 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 parameter value yang dihasilkan yang disediakan Asisten untuk aplikasi selama fulfillment Action Aplikasi.