دمج "مهام التطبيقات" مع تطبيقات Android المصغّرة

الشكل 1. جارٍ إطلاق أداة لـ GET_EXERCISE_OBSERVATION

بالنسبة إلى العديد من الأهداف، يكون أفضل ردّ هو تقديم إجابة بسيطة ومختصرة أو تأكيد أو تجربة تفاعلية سريعة للمستخدم. يمكنك عرض تطبيق Android المصغّر في "مساعد Google" لتحقيق هذه الأنواع من الأهداف

يتناول هذا الدليل كيفية تنفيذ طلبات مستخدمي "مساعد Google" باستخدام التطبيقات المصغّرة وطريقة تنفيذ هذه الإجراءات. تحسين تجربة استخدام التطبيق المصغّر في "مساعد Google" باستخدام خدمة "مهامّ في التطبيقات" مكتبة إضافات التطبيقات المصغّرة:

المزايا

التطبيقات المصغّرة هي عروض مصغّرة للتطبيقات يمكن تضمينها في نظام التشغيل Android. الأسطح مثل مشغّل التطبيقات أو شاشة القفل باستخدام خدمة "مهامّ في التطبيقات"، يمكنك زيادة تأثير تطبيقاتك المصغّرة من خلال جعلها مؤهَّلة للعرض في "مساعد Google":

  1. الاستكشاف: عرض الأدوات بشكل استباقي استجابةً لطلبات المستخدمين لطلبات البحث باللغة الطبيعية.
  2. التفاعل: يمكنك عرض التطبيقات المصغّرة في سياقات بدون لمس الجهاز، مثلاً عند يقدّم "مساعد Google" النتائج الشخصية على شاشة القفل وعلى Android Auto:
  3. الاحتفاظ بالبيانات: السماح للمستخدمين بتثبيت الأدوات المعروضة في "مساعد Google" على مشغّل التطبيقات تتطلب وظيفة التثبيت مكتبة إضافات التطبيقات المصغّرة:

آلية "مساعد Google" في عرض التطبيقات المصغّرة

هناك طريقتان يمكن للمستخدمين من خلالها استدعاء التطبيقات المصغّرة على "مساعد Google":

استدعاء صريح

لاستدعاء التطبيقات المصغّرة بشكل صريح لأي تطبيق مثبَّت، يمكن للمستخدمين طلب المساعدة من "مساعد Google" أشياء مثل:

  • "Ok Google، أريد عرض تطبيق ExampleApp المصغّر"
  • "التطبيقات المصغّرة من ExampleApp".

يعرض "مساعد Google" هذه التطبيقات المصغّرة مع مقدمة عامة: "ExampleApp" يقول، إليك تطبيق مصغّر". يعرض "مساعد Google" في الأصل التطبيقات المصغّرة المطلوبة بهذه الطريقة بدون أي مجهود من مطور التطبيق، فإن طريقة الاستدعاء هذه يتطلب أن يكون لدى المستخدم معرفة صريحة بالأداة لطلبها. إلى لتبسيط اكتشاف التطبيق المصغَّر، واستخدام طريقة تنفيذ الأهداف الموضحة بالتفصيل في القسم التالي.

تحقيق النية

يمكنك تسهيل العثور على التطبيقات المصغّرة من خلال استخدامها لتوفير الطلبات اللغوية التي يُجريها المستخدمون على "مساعد Google" على سبيل المثال، يمكنك إرجاع تطبيق مصغّر عندما يشغّل المستخدم GET_EXERCISE_OBSERVATION BII في في تطبيق اللياقة البدنية من خلال قول: "Ok Google، كم ميلاً ركضت هذا الأسبوع في ExampleApp؟" بالإضافة إلى تبسيط عملية الاكتشاف، يمكن دمج التطبيقات المصغّرة مع توفّر خدمة "مهامّ في التطبيقات" المزايا التالية:

  • الوصول إلى المَعلمة: يوفّر "مساعد Google" مَعلمات الغرض التي تم استخراجها. من طلب بحث المستخدم إلى الأداة، مما يتيح ردود مخصّصة
  • مقدّمات مخصّصة لميزة "تحويل النص إلى كلام" (TTS): يمكنك توفير سلسلة تعمل على تحويل النص إلى كلام. لكي يعلن "مساعد Google" عند عرض تطبيقك المصغّر
  • تثبيت التطبيقات المصغّرة: يعرض "مساعد Google" زر إضافة هذا التطبيق المصغّر بالقرب من تطبيقك المُصغَّر، ما يتيح للمستخدمين تثبيت التطبيقات المصغّرة بسهولة في مشغِّل التطبيقات.

تنفيذ التطبيقات المصغّرة

لتنفيذ التطبيقات المصغّرة لأهدافك، يُرجى اتّباع الخطوات التالية:

  1. استخدِم تطبيق Android المصغّر باتّباع الخطوات الموضّحة في إنشاء تطبيق مصغّر بسيط
  2. في ملف الموارد shortcuts.xml لتطبيقك، أضِف العنصر <app-widget> إلى إمكاناتك التي تحتوي على تفاصيل تنفيذ الطلب وعلامات BII <parameter>. تحديث أداة للتعامل مع المعلمات.
  3. أضِف مكتبة إضافة Widgets المطلوبة، التي تتيح يمرِّر "مساعد Google" أسماء ومَعلمات BII إلى التطبيقات المصغّرة. كما أنه يمكّن مقدّمات مخصّصة لتقنية "تحويل النص إلى كلام" (TTS) وتثبيت التطبيقات المصغّرة الأخرى.

يصف القسم التالي مخطّط <app-widget> للمَعلمة shortcuts.xml.

مخطط الأداة

يتم تعريف عناصر <app-widget> على أنّها عمليات تنفيذ ضمن <capability> في shortcuts.xml. تتطلب ما يلي: ما لم يُذكر على أنها اختيارية:

علامة `shortcuts.xml`موجود فيالسمات
<app-widget> <capability>
  • android:identifier
  • android:targetClass
<parameter> <app-widget>
<extra> <app-widget>
  • android:name (لا ينطبق إلا على ميزة "تحويل النص إلى كلام")
  • android:value (اختياري)

وصف مخطط الأداة

<التطبيق المصغَّر>

عنصر التنفيذ المصغّر ذو المستوى الأعلى

السمات:

  • android:identifier: معرّف طريقة التنفيذ هذه يجب أن تكون هذه القيمة أن تكون فريدة عند تنفيذ <app-widget> و<intent> العناصر المحددة في <capability>.
  • android:targetClass: الاسم الكامل لفئة AppWidgetProvider التعامل مع المقصد.

<parameter>

تربط مَعلمة BII بقيمة <parameter> في الغرض. يمكنك تحديد صفر أو مزيد من المعلَمات لكل عنصر <app-widget>. أثناء تنفيذ الطلب، بإمكان "مساعد Google" تمرر المعلمات من خلال تحديث العناصر الإضافية لمثيل الأداة كأزواج المفتاح/القيمة، بالتنسيق التالي:

  • المفتاح: قيمة android:key المحددة للمعلَمة.
  • القيمة: القيمة التي يستخلصها BII من الإدخال الصوتي للمستخدم.

يمكنك الوصول إلى هذه الميزات الإضافية من خلال الاتصال بالرقم getAppWidgetOptions() على الجهاز المرتبط AppWidgetManager، الذي يعرض Bundle تحتوي على اسم المشغل BII ومعاملاته. عرض استخراج قيم المَعلمات لمعرفة التفاصيل

للحصول على مزيد من المعلومات عن مطابقة معلمات BII، راجع بيانات المَعلمات والمطابقة:

<إضافية>

علامة اختيارية توضح استخدام مقدمة مخصصة لتحويل النص إلى كلام هذه الأداة. تتطلب هذه العلامة قيم السمات التالية:

  • android:name: "hasTts"
  • android:value: "true"

نموذج التعليمات البرمجية

يوضّح المثال التالي من ملف shortcuts.xml تطبيقًا مصغّرًا إعدادات التنفيذ لـ إمكانات GET_EXERCISE_OBSERVATION BII:

<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);
    }
}

مكتبة إضافات التطبيقات المصغّرة

تحسّن مكتبة إضافة App Actions Widgets التطبيقات المصغّرة من تجارب "مساعد Google" لإعادة التوجيه الصوتي. تتيح هذه المكتبة لتطبيقاتك المصغّرة معلومات التنفيذ المهمة من عامل التشغيل BII، بما في ذلك BII وأيّ مَعلمات أهداف مستخلَصة من طلب بحث المستخدِم.

تتيح لك مكتبة Maven هذه تقديم مقدّمة مخصّصة حول ميزة "تحويل النص إلى كلام" (TTS). لكل تطبيق مصغّر، ما يتيح لخدمة "مساعد Google" الإعلان عن ملخّص للمحتوى بشكل مرئي للمستخدمين. ويتيح ذلك أيضًا تثبيت مشغّل التطبيقات، مما يجعل كان من السهل على المستخدمين حفظ التطبيقات المصغّرة المعروضة في "مساعد Google" على مشغّل التطبيقات لديهم الشاشات.

يمكنك البدء بإضافة المكتبة إلى قسم التبعيات في ملف واحد (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;
بعد ذلك، استخدم المكتبة لتحديد سلاسل المقدمة وتحديث التطبيق المصغَّر، كما هو موضّح في "ExampleAppWidget":

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);
    }

}

اقتراحات نمط النص المحوَّل إلى كلام

استخدام الاقتراحات التالية بشأن التصاميم لتحسين التطبيق المصغّر المخصّص مقدمات "تحويل النص إلى كلام" والطلبات المعروضة.

مقترَح القيمة المقترَحة هي غير مستحسن
انقباضات
استخدام الاختصارات في طلبات "تحويل النص إلى كلام" صوت رسائل بدون اختصارات منهجية متينة وروبوتية بدلاً من أن تكون طبيعية وحوارية. قراءة الكلمات مثل "لا يمكن" و"لا تفعل" يمكن أن يبدو عقابًا وقاسيًا.
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)
ركضت 1.5 ميل اليوم.

ResponseText
ركضت 1.5 ميل اليوم.
ResponseSpeech (TTS)
لقد ركضت 1.5 ميل اليوم.

ResponseText
لقد ركضت 1.5 ميل اليوم.
الوقت
استخدِم الأرقام: "5:15," بدلاً من "خمسة وخمسون" أو "ربع بعد الخامسة". بالنسبة إلى تنسيق 12 ساعة، استخدِم صباحًا أو مساءً.
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 مليغرام/دي لتر.
ResponseSpeech (TTS)
كان مستوى الغلوكوز في الدم ما قبل الأخير 126.

ResponseText
كان مستوى الغلوكوز في الدم ما قبل الأخير 126.

تثبيت مشغّل التطبيقات

تسمح مكتبة إضافات التطبيقات المصغّرة بعرض الزر إضافة هذا التطبيق المصغّر. باستخدام تطبيقك المصغّر في "مساعد Google" لتفعيل التثبيت، أضِف المُستلِم التالي تعريف إلى 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>

مدى التوفّر في المستودع

يمكن لمعرّفات BII التي تتيح المستودع المضمّن أو المستودع الإعلاني على الويب توسيع نطاق إلى عمليات تنفيذ تطبيقاتك المصغّرة.

المستودع المضمّن

يوضح الرمز التالي من نموذج ملف shortcuts.xml إمكانات START_EXERCISE BII يتم إعداده للمستودع المضمّن وتنفيذ التطبيقات المصغّرة:

<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>

في العيّنة السابقة، عندما يشغّل المستخدم هذه الإمكانية عن طريق طرح المساعد، "بدء التشغيل باستخدام 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>

اختبار "مهامّ في التطبيقات"

استخدِم أداة اختبار مهام التطبيق، وهي ميزة متاحة في مكوّن "مساعد Google" الإضافي "استوديو Android": لاختبار التطبيقات المصغّرة على جهاز فعلي أو افتراضي. للاستخدام أداة الاختبار، اتبع الخطوات التالية:

  1. اربط جهاز الاختبار بالتطبيق قيد التشغيل.
  2. في "استوديو Android"، انتقِل إلى الأدوات >. الإجراءات في التطبيق > اختبار "مهامّ في التطبيقات" الأداة.
  3. انقر على إنشاء معاينة.
  4. باستخدام "استوديو Android"، يمكنك تشغيل تطبيقك على جهاز الاختبار.
  5. يُرجى استخدام تطبيق "مساعد Google" على الجهاز الاختباري لاختبار إجراء التطبيق. بالنسبة على سبيل المثال، يمكنك قول "Ok Google، كم ميلاً مشيت؟ هذا الأسبوع على ExampleApp؟"
  6. راقِب سلوك تطبيقك أو استخدِم برنامج تصحيح الأخطاء في "استوديو Android" من أجل للتحقق من نتيجة الإجراء المطلوبة.

إرشادات الجودة

يسلط هذا القسم الضوء على المتطلبات الأساسية وأفضل الممارسات عند دمج "مهامّ في التطبيقات" مع التطبيقات المصغّرة

المحتوى في التطبيقات المصغّرة

  • (مطلوب) عدم عرض إعلانات في أدواتك.
  • تركيز محتوى الأداة بالكامل على تحقيق الهدف. الإجراءات غير المستحسنة محاولة تحقيق أغراض متعددة باستخدام أداة واحدة أو إضافة محتوى غير ملائم

التعامل مع المصادقة

  • (مطلوب) عندما تكون مصادقة المستخدم مطلوبة لإكمال تدفق المستخدم، إرجاع أداة توضح أن المستخدم بحاجة إلى المتابعة في التطبيق. مصادقة المستخدم المضمّنة في "مساعد Google" غير متاحة للتطبيق الإجراءات.
  • إذا سمح المستخدمون لتطبيقك بعرض بيانات باستخدام الأدوات، يمكنك عرض تطبيق خطأ في وقت التشغيل للمستخدمين غير المصرح لهم.

الأهداف الاحتياطية

  • (مطلوب) في shortcuts.xml، احرِص دائمًا على توفير خيار احتياطي. <intent> بالإضافة إلى تنفيذ الأداة قدرات معينة. الغرض الاحتياطي هو عنصر <intent> بدون الحاجة إلى <parameter> من القيم.

    يتيح ذلك لخدمة "مساعد Google" تنفيذ إجراء معيّن عند أنّ طلب بحث المستخدم لا يحتوي على مَعلمات مطلوبة في طريقة التنفيذ الأخرى والعناصر المحددة في القدرة. والاستثناء من ذلك هو عندما لا تكون هناك والمعايير المطلوبة لتلك الإمكانية، وفي هذه الحالة سيكون التطبيق المصغَّر مطلوبة.

  • استخدِم الغرض الاحتياطي لفتح التطبيق على الشاشة ذات الصلة وليس الشاشة الرئيسية.

يوضح الرمز التالي من نموذج ملف 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

يسرد هذا القسم بيانات المستخدمين النهائيين التي تم جمعها من خلال أحدث إصدار مكتبة إضافات Widgets.

ترسل حزمة تطوير البرامج (SDK) هذه ردودًا من مطوّر البرامج على ميزة تحويل النص إلى كلام. أعلن عنه "مساعد Google" للمستخدم باستخدام الكلام في "مساعد Google" التكنولوجيا. ولا تخزِّن Google هذه المعلومات.

قد تتضمن الإجراءات على التطبيق أيضًا جمع البيانات الوصفية لتطبيقات العميل للأغراض التالية:

  • مراقبة معدلات استخدام إصدارات مختلفة من حزمة SDK
  • لقياس استخدام ميزة حزمة تطوير البرامج (SDK) في جميع التطبيقات