![](https://developer.android.com/static/guide/app-actions/images/Fitness4-widget.png?authuser=9&hl=he)
GET_EXERCISE_OBSERVATION
בשביל כוונות רבות, התגובה הטובה ביותר היא לתת תשובה פשוטה, אישור, או חוויה אינטראקטיבית מהירה למשתמש. אפשר להציג הווידג'ט של האפליקציה ל-Android ב-Google Assistant שיעזור לכם להשיג את סוגי הכוונות האלה.
במדריך הזה מוסבר איך למלא שאילתות של משתמשים ב-Assistant באמצעות ווידג'טים ואיך אפשר לשפר את חוויית הווידג'ט ב-Assistant באמצעות 'פעולות באפליקציה' ספריית התוספים לווידג'טים.
יתרונות
ווידג'טים הם תצוגות זעירות של אפליקציות שאפשר להטמיע ב-Android כמו מרכז האפליקציות או מסך הנעילה. בעזרת 'פעולות באפליקציה' אפשר להגדיל את ההשפעה של הווידג'טים שלכם אם הם עומדים בדרישות להצגה ב-Assistant:
- Discovery: הצגה יזומה של ווידג'טים בתגובה למשתמשים בשאילתות בשפה טבעית (NLP).
- מעורבות: הצגת ווידג'טים בהקשרים של הפעלה קולית, למשל כאשר Assistant מספקת תוצאות אישיות במסך הנעילה ובהפעלה Android Auto.
- שמירה: המשתמשים יכולים להצמיד את הווידג'טים שמוצגים Assistant במרכז האפליקציות. לפונקציונליות ההצמדה נדרשת ספריית התוספים לווידג'טים.
איך Assistant מציגה ווידג'טים
יש שתי דרכים שבהן משתמשים יכולים להפעיל ווידג'טים ב-Assistant:
- בקשה מפורשת לווידג'ט לפי שם.
- הקראת שאילתה ל-Assistant שמפעילה קהל מובנה עם כוונת רכישה (BII) או קהל בהתאמה אישית עם כוונת רכישה שהוגדר עבור ומילוי ווידג'ט.
הפעלה מפורשת
כדי להפעיל ווידג'טים באופן מפורש לכל אפליקציה מותקנת, המשתמשים יכולים לבקש מ-Assistant דברים כמו:
- "Ok Google, show ExampleApp widget" (אני רוצה לראות את הווידג'ט של ExampleApp).
- "ווידג'טים מ-ExampleApp"
Assistant מציגה את הווידג'טים האלה עם התיאור הגנרי: "ExampleApp אומר, הנה ווידג'ט." למרות ש-Assistant מחזירה במקור ווידג'טים שנדרשים עבורה באופן הזה, ללא צורך בעבודה נוספת על ידי מפתח האפליקציה, שיטת ההפעלה הזו דורש מהמשתמש ידע מפורש לגבי הווידג'ט כדי לבקש אותו. שפת תרגום לפשט את תהליך הגילוי של הווידג'טים, להשתמש בשיטה למילוי הכוונה, שמפורטת בקטע הבא.
מימוש Intent
הקל על מציאת הווידג'טים שלך על ידי שימוש בהם כדי למלא את
שאילתות שפה שהמשתמשים מבצעים ב-Assistant. לדוגמה, אפשר להחזיר את
בכל פעם שמשתמש מפעיל את ה-BII של GET_EXERCISE_OBSERVATION
אפליקציית כושר גופני כששואלים "Hey Google, כמה קילומטרים רצתי השבוע
ExampleApp? " בנוסף לפישוט הגילוי, שילוב ווידג'טים עם
פעולות באפליקציה מספקות את היתרונות הבאים:
- גישה לפרמטרים: Assistant מספקת את הפרמטרים של כוונת הרכישה שחולצו. משאילתת המשתמש לווידג'ט, מה שמאפשר תשובות מותאמות אישית.
- הקדמות TTS בהתאמה אישית: אפשר ליצור מחרוזת של המרת טקסט לדיבור (TTS) כדי ש-Assistant תכריז כשהווידג'ט יוצג.
- הצמדת ווידג'ט: ב-Assistant מוצג הלחצן הוספת הווידג'ט הזה ליד הווידג'ט, כדי לאפשר למשתמשים להצמיד בקלות את הווידג'טים למרכז האפליקציות שלהם.
הטמעת מילוי הזמנות בווידג'ט
כדי להטמיע מילוי ווידג'ט בשביל הכוונות שלכם, צריך לבצע את השלבים הבאים:
- כדי להטמיע ווידג'ט ל-Android, פועלים לפי השלבים שמתוארים בקטע יצירת ווידג'ט פשוט
- בקובץ המשאבים
shortcuts.xml
של האפליקציה, צריך להוסיף רכיב<app-widget>
ביכולת להכיל פרטי מילוי הזמנה ותגי<parameter>
BII. עדכון של כדי לטפל בפרמטרים. - צריך להוסיף את ספריית התוספים לווידג'טים הנדרשת, שמאפשרת Assistant מעבירה שמות ופרמטרים של BII לווידג'טים. היא גם מאפשרת הקדמות TTS בהתאמה אישית והצמדת ווידג'ט החדשה.
בקטע הבא מתוארת הסכימה <app-widget>
של shortcuts.xml
.
סכימת הווידג'ט
רכיבי <app-widget>
מוגדרים כמילוי הזמנות בתוך
<capability>
רכיבים ב-shortcuts.xml
. הם דורשים את הדברים הבאים
אלא אם צוין כאופציונלי:
התג 'shorts.xml' | בתוך | מאפיינים |
---|---|---|
<app-widget> |
<capability> |
|
<parameter> |
<app-widget> |
|
<extra> |
<app-widget> |
|
תיאור הסכימה של הווידג'ט
<app-widget>
רכיב מילוי הזמנות של ווידג'ט ברמה העליונה.
מאפיינים:
android:identifier
: המזהה של מילוי ההזמנות. הערך הזה צריך להיות ייחודיים בכל מילוי ההזמנות של<app-widget>
ו-<intent>
שמוגדרים בתוך<capability>
.android:targetClass
: השם המלא של המחלקה בAppWidgetProvider
מתוך הכוונה.
<parameter>
מיפוי פרמטר BII לערך Intent <parameter>
. אפשר להגדיר את הערך אפס
פרמטרים נוספים לכל רכיב <app-widget>
. בתהליך מילוי ההזמנה, Assistant
מעבירה פרמטרים על ידי עדכון התוספות במופע של הווידג'ט בתור צמדי מפתח-ערך,
בפורמט הבא:
- מפתח:
android:key
שהוגדר לפרמטר. - ערך: הערך שה-BII שולף מהקלט הקולי של המשתמש.
כדי לגשת לתוספות האלה, עליך להתקשר אל getAppWidgetOptions()
אובייקט AppWidgetManager
, שמחזיר Bundle
שמכיל את השם של
ה-BII המפעיל והפרמטרים שלו. צפייה
חילוץ ערכי פרמטרים לקבלת פרטים.
למידע נוסף על התאמה לפרמטרים של BII, ראו נתוני פרמטרים והתאמה.
<extra>
תג אופציונלי שמצהיר שהקדמה מותאמת אישית ל-TTS משמשת עבור לווידג'ט הזה. לתג הזה נדרשים ערכי המאפיינים הבאים:
android:name
:"hasTts"
android:value
:"true"
קוד לדוגמה
הדוגמה הבאה מקובץ shortcuts.xml
ממחישה ווידג'ט
הגדרת מילוי הזמנה
יכולת BII של GET_EXERCISE_OBSERVATION
:
<capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
<app-widget
android:identifier="GET_EXERCISE_OBSERVATION_1"
android:targetClass="com.exampleapp.providers.exampleAppWidgetProvider"
android:targetPackage="com.exampleapp">
<parameter
android:name="exerciseObservation.aboutExercise.name"
android:key="exercisename">
</parameter>
<extra android:name="hasTts" android:value="true"/>
</app-widget>
</capability>
אפשר לציין כמה רכיבי <app-widget>
או להשתמש בשילוב של
רכיבים של <app-widget>
ו-<intent>
לכל יכולת. הגישה הזו מאפשרת
לספק חוויה מותאמת אישית שמבוססת על שילובים שונים של פרמטרים
שסופקו על ידי משתמשים. למשל, אם המשתמש לא מציין מיקום נשלף
בשאילתה שלהם אפשר להפנות אותם לפעילות באפליקציה שמופיעה
להגדרת מיקומי האיסוף וההורדה. לצפייה
הקטע כוונות חלופי מכיל מידע נוסף
על הגדרה של כוונות חלופיות.
חילוץ ערכי פרמטרים
במחלקה AppWidgetProvider
לדוגמה הבאה, הפונקציה הפרטית
updateAppWidget()
משמש לחילוץ השם והפרמטרים של ה-BII
אפשרויות הווידג'ט Bundle
:
Kotlin
package com.example.exampleapp //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension /** * Implementation of App Widget functionality. */ class MyAppWidget : AppWidgetProvider() { override fun onUpdate( context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray ) { // There might be multiple widgets active, so update all of them for (appWidgetId in appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId) } } private fun updateAppWidget( context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int ) { val widgetText: CharSequence = context.getString(R.string.appwidget_text) // Construct the RemoteViews object val views = RemoteViews(context.packageName, R.layout.my_app_widget) views.setTextViewText(R.id.appwidget_text, widgetText) // Extract the name and parameters of the BII from the widget options val optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId) val bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII) // "actions.intent.CREATE_TAXI_RESERVATION" val params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS) if (params != null && params.containsKey("dropoff")) { val dropoffLocation = params.getString("dropoff") // Build your RemoteViews with the extracted BII parameter // ... } appWidgetManager.updateAppWidget(appWidgetId, views) } }
Java
package com.example.exampleapp; //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension; /** * Implementation of App Widget functionality. */ public class MyAppWidget extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // There might be multiple widgets active, so update all of them for (int appWidgetId : appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId); } } private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { CharSequence widgetText = context.getString(R.string.appwidget_text); // Construct the RemoteViews object RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_app_widget); views.setTextViewText(R.id.appwidget_text, widgetText); // Extract the name and parameters of the BII from the widget options Bundle optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId); String bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII); // "actions.intent.CREATE_TAXI_RESERVATION" Bundle params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS); if (params != null && params.containsKey(("dropoff"))){ String dropoffLocation = params.getString("dropoff"); // Build your RemoteViews with the extracted BII parameter // ... } appWidgetManager.updateAppWidget(appWidgetId, views); } }
ספריית התוספים לווידג'טים
ספריית התוספים לווידג'טים של פעולות באפליקציה משפרת את הווידג'טים להעביר הודעות קוליות בעזרת Assistant. הספרייה הזו מאפשרת לווידג'טים שלך לקבל מידע חשוב על מילוי הזמנות מה-BII שמפעיל, כולל ה-BII השם וכל הפרמטרים של Intent שנשלפו מהשאילתה של המשתמש.
ספריית Maven הזו מאפשרת לך לספק מבוא בהתאמה אישית של המרת טקסט לדיבור (TTS) עבור כל ווידג'ט, וכך Assistant תוכל להכריז על סיכום של התוכן יוצגו למשתמשים באופן חזותי. היא גם מאפשרת הצמדת מרכז אפליקציות, וכך למשתמשים יהיה קל לשמור את הווידג'טים שמוצגים ב-Assistant במרכז האפליקציות שלהם מסכים.
כדי להתחיל, צריך להוסיף את הספרייה לקטע של יחסי התלות
קובץ build.gradle
למודול האפליקציה:
dependencies {
//...
implementation "com.google.assistant.appactions:widgets:0.0.1"
}
גרסאות פתיחה בהתאמה אישית
אחרי שמייבאים את ספריית התוספים לווידג'טים, אפשר לספק טקסט טקסט מותאם אישית
של הווידג'טים האלה. כדי להוסיף את ההגדרה שלך לווידג'ט
AppWidgetProvider
, פותחים את הכיתה בסביבת הפיתוח המשולבת (IDE) ומייבאים את תוסף הווידג'טים
ספרייה:
Kotlin
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
Java
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
Kotlin
package com.example.exampleapp //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension /** * Implementation of App Widget functionality. */ object MyAppWidget : AppWidgetProvider() { fun updateAppWidget( context: Context?, appWidgetManager: AppWidgetManager, appWidgetId: Int ) { val appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech("Hello world") // TTS to be played back to the user .setResponseText("Hello world!") // Response text to be displayed in Assistant .build() // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId) // Update widget UI appWidgetManager.updateAppWidget(appWidgetId, views) } }
Java
package com.example.exampleapp; //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension; /** * Implementation of App Widget functionality. */ public class MyAppWidget extends AppWidgetProvider { static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { AppActionsWidgetExtension appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech("Hello world") // TTS to be played back to the user .setResponseText("Hello world!") // Response text to be displayed in Assistant .build(); // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId); // Update widget UI appWidgetManager.updateAppWidget(appWidgetId, views); } }
המלצות לסגנון של TTS
אפשר להיעזר בהמלצות לסגנונות הבאות כדי לשפר את הווידג'ט המותאם אישית מבוא ל-TTS וההנחיות שמוצגות.
המלצה | מומלץ: | לא מומלץ |
---|---|---|
התכווצושימוש בכיווץ בהנחיות של טקסט TTS. הודעות ללא צליל כיווץ מאויש ורובוטי ולא טבעי ולא דיבורי. אומרים מילים כמו "לא יכול" ו"לא מומלץ" יכול להישמע מעניש וקשה. |
ResponseSpeech (TTS)מצטערת, לא הצלחתי למצוא הזמנה. ResponseText סליחה, לא הצלחתי למצוא הזמנה. |
ResponseSpeech (TTS)סליחה, לא הצלחתי למצוא הזמנה. ResponseText סליחה, לא הצלחתי למצוא הזמנה. |
פסיקמשפרים את הבהירות באמצעות פסיקים סידוריים ברשימות של שלושה פריטים או יותר. בלי הפסיק הסידורי, פריטים בודדים ברשימה עשויים להיות שלא שמעתם נכון, או שנקראו כקבוצות. לדוגמה, ב"נרקיסים, חינניות וחמניות", "חרציות וחמניות" נשמעות כאילו הן חופפות. בקטע "נרקיסים, חינניות וחמניות", בין כל השלוש יש הפרדה ברורה. |
ResponseSpeech (TTS)הנושאים הפופולריים ביותר שלנו כוללים ורדים צהובים, נרקיסים, חינניות וחמניות. ResponseText הנושאים הפופולריים ביותר שלנו כוללים ורדים צהובים, נרקיסים, חינניות וחמניות. |
ResponseSpeech (TTS)הפעילויות הפופולריות ביותר שלנו כוללות ורדים צהובים, נרקיסים, חינניות וחמניות. ResponseText הפעילויות הפופולריות ביותר שלנו כוללות ורדים צהובים, נרקיסים, חינניות וחמניות. |
ספרותכדי שיהיה קל יותר להסתכל על התוכן החזותי, כדאי להשתמש בספרות במקום בטקסט. |
ResponseSpeech (TTS)לחץ הדם שלך הוא 100 מעל 80. ResponseText לחץ הדם שלך הוא 100/80. |
ResponseSpeech (TTS)לחץ הדם שלך הוא 100/80. ResponseText לחץ הדם שלך הוא מאה ושמונים. |
סמליםכדי לשפר את התוכן החזותי, כדאי להשתמש בסמלים מיוחדים במקום בטקסט במבט מהיר. |
ResponseSpeech (TTS)הרכישה האחרונה שלך הייתה בסך 24.65$. ResponseText הרכישה האחרונה שלך הייתה בסך 24.65$. |
ResponseSpeech (TTS)הרכישה האחרונה שלך הייתה בסך עשרים וארבעה דולרים ושישים וחמישה דולר. ResponseText הרכישה האחרונה שלך הייתה בסך עשרים וארבעה דולרים ושישים וחמישה דולר. |
נמנעים מממתקיםמידות יפות גורמות לתשובות להרגיש מרוחקות ורשמיות. נוטשים אותן ושומרים ידידותית ולא רשמית. |
ResponseSpeech (TTS)ההזמנה שלך נמסרה. ResponseText ההזמנה שלך נמסרה. |
ResponseSpeech (TTS)בטח, אני יכול לומר לך. ההזמנה שלך נמסרה. ResponseText בטח, אני יכול לומר לך. ההזמנה שלך נמסרה. |
הימנעות מסימני קריאהאפשר להתייחס אליהם כאל צעקות. |
ResponseSpeech (TTS)רצת היום 2.5 מייל. ResponseText רצת היום 2.5 מייל. |
ResponseSpeech (TTS)רצת 2.5 מייל היום! ResponseText רצת 2.5 מייל היום! |
שעההשתמש בספרות: "5:15," במקום 'חמש וחמש עשרה' או "רבעון אחרי חמש". כדי לציין שעון של 12 שעות, יש להשתמש ב-AM או ב-PM. |
ResponseSpeech (TTS)המשלוח אמור להגיע עד 8:15. ResponseText המשלוח אמור להגיע עד 8:15. |
ResponseSpeech (TTS)המשלוח אמור להגיע היום תוך 15 דקות ו-8 בבוקר. ResponseText המשלוח אמור להגיע היום תוך 15 דקות ו-8 בבוקר. |
אל תשתמשו במונולוגיםהתשובה צריכה להיות אינפורמטיבית, אבל תמציתית. לא להיכנס לידיים כבדות פרטים ללא יתרון ברור למשתמש. |
ResponseSpeech (TTS)בחודש שעבר צרכת 159 שעות של אנרגיה. ResponseText בחודש שעבר צרכת 159 שעות של אנרגיה. |
ResponseSpeech (TTS)חיסכון באנרגיה חשוב מאוד לכדור הארץ ולסביבה. חודש שעבר צרכת 159 שעות של אנרגיה. בחודש הזה ניצלת 58 שעות אנרגיה. ResponseText חיסכון באנרגיה חשוב מאוד לכדור הארץ ולסביבה. חודש שעבר צרכת 159 שעות של אנרגיה. בחודש הזה ניצלת 58 שעות אנרגיה. |
להשתמש במילים קצרות ופשוטותשפה פשוטה ופשוטה היא המשיכה הכי גבוהה, ולכן היא נגישה אנשים מכל הרקעים. |
ResponseSpeech (TTS)ערך הסוכר האחרון שלך היה 126. ResponseText המדידה האחרונה של רמת הסוכר בדם הייתה 126 מ"ג ל-dL. |
ResponseSpeech (TTS)רמת הסוכר הלפניום בדם הייתה 126. ResponseText רמת הסוכר הלפניום בדם הייתה 126. |
הצמדה של מרכז האפליקציות
ספריית התוספים לווידג'טים מאפשרת להציג את הלחצן הוספת הווידג'ט הזה
באמצעות הווידג'ט ב-Assistant. כדי להפעיל את ההצמדה, צריך להוסיף את המקלט הבא
ההגדרה של AndroidManifest.xml
:
<application>
<receiver android:name="com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.google.assistant.appactions.widgets.COMPLETE_PIN_APP_WIDGET" />
</intent-filter>
</receiver>
<service
android:name=
"com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action
android:name="com.google.assistant.appactions.widgets.PIN_APP_WIDGET" />
</intent-filter>
</service>
</application>
זמינות של מלאי שטחי פרסום
ספקי BI שתומכים במלאי מוטבע או במלאי באינטרנט יכולים להרחיב את בין מלאי שטחי הפרסום לאספקה בווידג'טים.
מלאי מוטבע
הקוד הבא מקובץ shortcuts.xml
לדוגמה מדגים
יכולת BII של START_EXERCISE
מוגדר למילוי הזמנות של מלאי שטחי פרסום ולמילוי ווידג'טים:
<capability
android:name="actions.intent.START_EXERCISE">
<app-widget
android:identifier="START_EXERCISE_1"
android:targetClass="com.example.exampleapp.StartExerciseAppWidgetProvider">
<parameter
android:name="exercise.name"
android:key="exerciseName"
app:shortcutMatchRequired="true">
</parameter>
</app-widget>
</capability>
<shortcut android:shortcutId="RunningShortcut">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="com.example.exampleapp.StartExcerciseActivity" />
<capability-binding
android:capability="actions.intent.START_EXERCISE"
android:parameter="exercise.name"
android:value="running;runs" />
</shortcut>
בדוגמה הקודמת, כשמשתמש מפעיל את היכולת הזו על ידי בקשה
Assistant, "Start running with ExampleApp", חבילת האפשרויות של
מילוי ההזמנות של <app-widget>
מכיל את צמד המפתח/ערך הבא:
- מפתח =
“exerciseName”
- ערך =
“RunningShortcut”
מלאי באינטרנט
הקוד הבא מקובץ shortcuts.xml
לדוגמה מציג יכולת
מופעל למלאי באינטרנט ולמילוי ווידג'טים:
<shortcuts>
<capability
android:name="actions.intent.START_EXERCISE">
<app-widget
android:identifier="START_EXERCISE_1"
android:targetClass="com.example.exampleapp.CreateTaxiAppWidgetProvider">
<parameter
android:name="exercise.name"
android:key="exerciseName"
android:mimeType="text/*">
<data android:pathPattern="https://exampleapp.com/exercise/.*" />
</parameter>
</app-widget>
</capability>
</shortcuts>
בדיקת פעולות באפליקציה
צריך להשתמש ב-App Actions Test Tool, תכונה בפלאגין של Google Assistant לצורך Android Studio, כדי לבדוק ווידג'טים במכשיר פיזי או וירטואלי. כדי להשתמש ב- בכלי הבדיקה, בצעו את השלבים הבאים:
- מחברים את מכשיר הבדיקה לאפליקציה שפועלת.
- ב-Android Studio, עוברים אל כלים > פעולות באפליקציה > בדיקת פעולות באפליקציה כלי.
- לוחצים על יצירת תצוגה מקדימה.
- באמצעות Android Studio, מפעילים את האפליקציה במכשיר הבדיקה.
- צריך להשתמש באפליקציית Assistant במכשיר הבדיקה כדי לבדוק את הפעולה באפליקציה. עבור לדוגמה, אפשר לומר משהו כמו "Ok Google, How many kilometers have I run? השבוע ב-ExampleApp?"
- חשוב לבדוק את התנהגות האפליקציה או להשתמש בכלי לניפוי באגים ב-Android Studio כדי מאמתים את התוצאה של הפעולה הרצויה.
הנחיות איכות
בסעיף הזה נדגיש את הדרישות העיקריות והשיטות המומלצות, לשלב 'פעולות באפליקציה' עם ווידג'טים.
תוכן בווידג'טים
- (חובה) לא להציג מודעות בווידג'טים.
- למקד לגמרי את תוכן הווידג'ט למימוש הכוונה. לא מומלץ לנסות למלא כוונות מרובות באמצעות ווידג'ט אחד, או להוסיף תוכן לא רלוונטי.
טיפול באימות
- (חובה) כשנדרש אימות משתמש כדי להשלים תהליך של משתמש, להחזיר ווידג'ט שמסביר שהמשתמש צריך להמשיך באפליקציה. באפליקציה אין תמיכה באימות משתמש מוטבע ב-Google Assistant פעולות.
- אם המשתמשים מתירים לאפליקציה להציג נתונים באמצעות ווידג'טים, אפשר להחזיר ווידג'ט שגיאה בזמן הריצה למשתמשים לא מורשים.
כוונות חלופיות
(חובה) ב
shortcuts.xml
, תמיד צריך לספק חלופה<intent>
בנוסף למילוי ההזמנות של הווידג'ט היכולת הנתונה. Intent חלופי הוא רכיב<intent>
ללא צורך<parameter>
ערכים.כך Assistant תוכל לבצע פעולה אם שאילתת המשתמש לא מכילה פרמטרים שנדרשים על ידי מילוי הבקשה האחר שמוגדרים ביכולת. היוצא מן הכלל הוא כאשר אין את הפרמטרים הנדרשים ליכולת הזו. במקרה כזה, רק הווידג'ט נדרש מילוי הזמנה.
משתמשים ב-Intent החלופי כדי לפתוח את האפליקציה במסך הרלוונטי, לא למסך הבית.
הקוד הבא מקובץ shortcuts.xml
לדוגמה מדגים
<capability>
עם חלופה <intent>
שתומכת בשדה ראשי
מילוי הזמנה של <app-widget>
:
<shortcuts>
<capability
android:name="actions.intent.CREATE_TAXI_RESERVATION">
<!-- Widget with required parameter, specified using the "android:required" attribute. -->
<app-widget
android:identifier="CREATE_TAXI_RESERVATION_1"
android:targetClass="com.example.myapplication.CreateTaxiAppWidgetProvider">
<parameter
android:name="taxiReservation.dropoffLocation.name"
android:key="dropoff"
android:required="true">
</parameter>
</app-widget>
<!-- Fallback intent with no parameters required to successfully execute. -->
<intent
android:identifier="CREATE_TAXI_RESERVATION_3"
android:action="myapplication.intent.CREATE_TAXI_RESERVATION_1"
android:targetClass="com.example.myapplication.TaxiReservationActivity">
</intent>
</capability>
</shortcuts>
גילוי נאות לגבי נתונים ב-Google Play
בקטע הזה מפורטים הנתונים של משתמשי הקצה שנאספו באמצעות הגרסה האחרונה של ספריית התוספים לווידג'טים.
ערכת ה-SDK הזו שולחת תגובות טקסט לדיבור (TTS) שסופקו על ידי המפתח שהוכרז למשתמש על ידי Google Assistant באמצעות הדיבור של Assistant טכנולוגית. המידע הזה לא מאוחסן על ידי Google.
אפשר גם לבצע פעולות באפליקציה איסוף מטא-נתונים של אפליקציית לקוח למטרות הבאות:
- כדי לעקוב אחר שיעורי ההטמעה של גרסאות SDK שונות.
- כדי לכמת את השימוש בתכונות ה-SDK באפליקציות שונות.