إنشاءshortcut.xml

بعد تحديد الوظيفة داخل التطبيق والقصد المضمّن المرتبط بها (BII) المطلوب تنفيذه، عليك الإفصاح عن الوظائف المضمّنة التي تتيحها الوظيفة من خلال تعريف عنصر capability في ملف موارد shortcuts.xml. الإعلان عن مهنة الطب والجراحة (BII) ولأنّ capability تسجّل توافقًا مع هذا الغرض الدلالي في تطبيقك، تتيح تنفيذ الطلبات الصوتية للغرض باستخدام "مساعد Google".

يستخدم "مساعد Google" تقنية "معالجة اللغات الطبيعية" لاستخراج المَعلمات من المستخدم طلب البحث. يسرد مرجع الأهداف المضمّنة الحقول التي يتضمّنها كل عنصر معلومات أساسي. قادرًا على استخراجها من طلب بحث مرتبط بالمستخدم على سبيل المثال، إذا كان لدى مستخدم باستدعاء الميزة [actions.intent.GET_FOOD_OBSERVATION][] في تطبيقك من خلال القول، "Ok Google، اسأل ExampleApp ما الذي تناولته على الغداء يوم الجمعة الماضي"، مساعد Google لاستخراج معلمات BII التالية من طلب المستخدم:

  • foodObservation.forMeal = "https://schema.googleapis.com/MealTypeLunch"
  • foodObservation.startTime = "2024-09-06T00:00:00"
  • foodObservation.endTime = "2024-09-06T23:59:59"

يمرِّر "مساعد Google" مَعلمات BII إلى عملية التنفيذ intent المحدّدة في capability يمكن تعريف عنصر intent واحد أو أكثر في إحدى الإمكانات للتمكّن من مراعاة الطرق المختلفة التي قد يستخدِم بها المستخدم واجهة برمجة التطبيقات لخدمات الويب. على سبيل المثال، يمكنك تعريف عملية تنفيذ intent تتطلّب مَعلمتَي BII في المثال أعلاه. يمكنك بعد ذلك تحديد نية ثانية تتطلّب مَعلمة BII واحدة، foodObservation.forMeal، تُبلغ عن جميع الوجبات في يوم معيّن، مثل "Ok Google، أريد أن أسأل تطبيق ExampleApp ما الذي أكلته للغداء".

نظرة عامة

يمكنك إعداد خدمة "مهامّ في التطبيقات" باستخدام ملف "shortcuts.xml" متوفّر في تطبيقك. لدليل res/xml الخاص بالمشروع، ثم إنشاء مرجع إلى shortcuts.xml في بيان التطبيق. يُرجى إضافة إشارة إلى shortcuts.xml في بيان التطبيق. باتّباع الخطوات التالية:

  1. في ملف البيان لتطبيقك (AndroidManifest.xml)، ابحث عن نشاط يتم ضبط فلاتر الأهداف على الإجراء android.intent.action.MAIN وكذلك على الفئة android.intent.category.LAUNCHER.

  2. أضِف إشارة إلى shortcuts.xml في AndroidManifest.xml باستخدام علامة <meta-data> في Activity التي تحتوي على فلاتر النيّة لكلّ من MAIN وLAUNCHER، على النحو التالي:

    <meta-data
       android:name="android.app.shortcuts"
       android:resource="@xml/shortcuts" />
    

يُعلن المثال أعلاه عن مرجع XML لملف xml/shortcuts.xml في حزمة APK. لمزيد من التفاصيل حول تهيئة الاختصارات، راجع أنشئ اختصارات ثابتة في مستندات مطوّري برامج Android.

مكتبة Jetpack androidx.core:core:1.6.0 (أو أعلى) مطلوبة في مشروع Android لتجنُّب أخطاء التحويل البرمجي. عند تحديد إمكانات "مهامّ في التطبيقات" في "shortcuts.xml". للحصول على التفاصيل، يمكنك مراجعة بدء استخدام Android Jetpack

الاختصارات الثابتة

عند تحديد capability، يمكنك الإعلان عن عناصر shortcut الثابتة في shortcuts.xml لتوسيع وظائف هذه الميزة. الاختصارات الثابتة يستوعب "مساعد Google" بياناتك عند تحميل إصدار إلى Google Play Console. نظرًا لأنه لا يمكن إنشاء الاختصارات الثابتة وتحديثها إلا من خلال إنشاء إصدارات جديدة، تكون مفيدة للغاية لتسليط الضوء على الأنشطة والمحتوى الشائع في تطبيقك.

يمكنك تفعيل وظائف "مهامّ في التطبيقات" التالية باستخدام الاختصارات الثابتة:

  • اختصارات الإمكانيات: إنشاء اختصارات لتشغيل مثيل capability تحتوي على قيم مَعلمات intent المحدَّدة مسبقًا. على سبيل المثال: يمكنك تعريف اختصار التطبيق "بدء التشغيل" مما يستدعي START_EXERCISE BII في تطبيق اللياقة البدنية.

    تحتوي هذه الاختصارات على سمات intent وshortLabel وlongLabel، وتأهيلها لاقتراحها وتقديمها ضمن شرائح بشكل استباقي مساحات العرض، مثل "مساعد Google" أو عند الضغط مع الاستمرار على رمز أحد التطبيقات في نظام التشغيل Android مشغّلات التطبيقات. يمكن أيضًا استخدام اختصار الإجراء كاختصار للكيان، وهو مفصل أدناه، من خلال ربطها بـ capability باستخدام <capability-binding>.

  • اختصارات العناصر: توفّر اختصارات الكيانات قائمة بالمَعلمات المتوافقة قيم تنفيذ الطلب الصوتي لـ capability. على سبيل المثال، يمكن اعتبار أحد الكيانات قائمة بأنواع التمارين ("hike" و"run" وغير ذلك) المرتبطة المعلمة exercise.name BII START_EXERCISE قدراتي. إذا تطابق عبارة المستخدم مع كيان، سيتم استخدام رقم تعريف shortcutId. تمريره إلى الغرض بدلاً من قيمة طلب بحث المستخدم الأولية.

    Entity اختصارات لا تحدد intent أو shortLabel أو longLabel وبالتالي لا يتم اقتراحها على مساحات العرض الاستباقية. للاطّلاع على التفاصيل، يُرجى الاطّلاع على مستودع إعلانات مضمّنة لإجراءات التطبيقات.

مخطط الإمكانات

يوضّح الجدول التالي مخطط "مهامّ في التطبيقات" لعناصر capability. في shortcuts.xml. عند تضمين علامة، تكون جميع سماتها مطلوبة ما لم يتم وضع علامة "اختياري" عليه.

علامة Shortcuts.xml موجود في السمات
<capability> <shortcuts>

android:name

app:queryPatterns (ينطبق على الروابط المخصّصة حسب النية بالشراء فقط)

<intent> <capability>

android:action (اختياري)

android:targetClass (اختياري)

android:targetPackage (اختياري)

android:data (اختياري)

<url-template> <intent>

android:value

<extra> <intent>

android:key

android:value

ينطبق فقط على استدعاء التطبيقات التي تعمل في المقدّمة

<parameter> <intent>

android:name

android:key

android:mimeType (ينطبق على الروابط المخصّصة حسب النية بالشراء فقط)

android:required (اختياري)

app:shortcutMatchRequired (اختياري)

<shortcut-fulfillment> <capability> لا ينطبق إلا على المستودع المضمّن
<parameter> <shortcut-fulfillment> android:name
<slice> <capability>

لا ينطبق إلا على شرائح Android

وصف مخطّط الإمكانات

يوضِّح هذا القسم عناصر مخطط capability.

<capability>

capability يحدِّد هدف "إجراء التطبيق" الذي يتوافق معه تطبيقك على كل يجب أن يوفّر العنصر <capability> في ملف shortcuts.xml عنصرًا واحدًا على الأقل. <intent> لمعالجة تنفيذ الإجراء.

السمات:

  • android:name: معرّف الإجراء المضمَّن (على سبيل المثال، [actions.intent.GET_FOOD_OBSERVATION][]). للحصول على قائمة بالأجهزة المتوافقة الأهداف المضمّنة، اطّلِع على مرجع الغرض المضمّن.
  • app:queryPatterns: مورد مصفوفة سلسلة لطلبات البحث المتوقعة من المستخدم لهذا الغرض. تنطبق هذه السمة فقط على روابط وعناصر إعلانية حسب نية العميل، لأنّ BII تتضمّن نماذج أو الطرق الشائعة التي يعبر بها المستخدمون عن المهام التي يحاولون القيام بها أو المعلومات التي يسعون إليها.

<intent>

عنصر Android intent الذي يحدّد كيفية طلب بحث المستخدم باستخدام وظيفة داخل التطبيق. يمكن للمطوِّرين تقديم عدة تطبيقات <intent> العلامات في capability. يحاول "مساعد Google" تنفيذ طلب بحث المستخدم باستخدام <intent> الأولى في capability التي تم توفير جميع المَعلمات المطلوبة لها.

السمات:

  • android:action: النوع Action الغرض القيمة التلقائية هي ACTION_VIEW.
  • android:targetClass: فئة النشاط المستهدَف، على سبيل المثال: "com.example.exercise.ExerciseActivity"
  • android:targetPackage: الحزمة التي تحتوي على فئة النشاط المستهدف، مثال: "com.example.exercise
  • android:data: تم استبدال هذا الحقل بـ <url-template>. إذا تم تعريف هذه العلامة في intent.

<url-template>

نموذج لإنشاء معرّف موارد منتظم (URI) لرابط لصفحة في التطبيق من أجل أن يتم فتحه على الجهاز. يمكن توسيع النماذج باستخدام مَعلمات اتّجاه مدمجة إذا كانت جميع المَعلمات المطلوبة للنماذج متاحة. للاطّلاع على أمثلة على نموذج عنوان URL المستخدِم بروتوكول HTTP، يُرجى الاطّلاع على مقالة Wikipedia حول نماذج عناوين URL. تشير رسالة الأشكال البيانية يتبع تنسيق النموذج مواصفات نموذج معرّف الموارد المنتظم (URI) RFC6570.

في ما يلي بعض الأمثلة على قيم نماذج عناوين URL:

النموذج القيم قيمة موسّعة
https://example.com/test{?foo,bar} "foo": "123"

"bar": "456"

https://example.com/test?foo=123&bar=456
https://example.com/test?utm_campaign=appactions{&foo,bar} "foo": "123"

"bar": "456"

https://example.com/test?utm_campaign=appactions&foo=123&bar=456
https://example.com/test?utm_campaign=appactions{#foo} "foo": "123" https://example.com/test?utm_campaign=appactions#foo=123
myapp://example/{foo} "foo": "123" myapp://example/123

لمزيد من المعلومات عن ضبط نماذج عناوين URL، يُرجى الاطّلاع على مقالة نماذج عناوين URL في مرحلة التسليم.

<إضافية>

تحدِّد هذه السياسة البيانات الإضافية للسمة intent. بالنسبة إلى "مهامّ في التطبيقات"، لا يُستخدَم هذا الحقل إلّا للأغراض التالية: تفعيل [استدعاء التطبيق الذي يعمل في المقدّمة][] لـ capability

<parameter>

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

السمات:

  • android:name: اسم المعلَمة BII المطلوب ربطها بهذا intent . يجب أن يكون الاسم حقلاً على مستوى الورقة للمعلمة BII (لـ مثل foodObservation.aboutFood.name).
  • android:key: مفتاح يحدده المطوّر لقيمة مَعلمة BII على سبيل المثال: يمكنك تعريف contact_name لـ message.recipient.name BII .
  • android:mimeType: mimeType للمَعلمة، مثل text/*. هذا النمط يكون مطلوبًا فقط لمعلمات الروابط والعناصر الإعلانية حسب النية بالشراء.
  • android:required: يفصح عن ما إذا كان طلب بحث المستخدم بحاجة إلى تضمين هذا العنصر. لالغرض من استخدامه في التنفيذ. إذا لم تكن المعلمة متاح، يحاول "مساعد Google" تنفيذ طلب بحث المستخدم باستخدام تم تحديد intent للسمة capability.

<shortcut-fulfillment>

تُحدِّد السياسة intent الذي تم تحديده في اختصار مستودع مضمّن. استخدام المَعلمة المحدّدة للتنفيذ. لمعرفة التفاصيل، يُرجى الاطّلاع على التنفيذ باستخدام أهداف الاختصارات.

<parameter> (لـ <shortcut-fulfillment>)

سمة اختيارية تربط مَعلمة BII واحدة بالمستودع المضمّن تنفيذ الاختصار. لمعرفة التفاصيل، يُرجى الاطّلاع على التنفيذ باستخدام أهداف الاختصارات.

السمة:

  • android:name: اسم مَعلمة BII المطلوب ربطها بالمستودع المضمّن تنفيذ الاختصار. يجب أن يكون الاسم حقلاً على مستوى ورقة البيانات في BII (على سبيل المثال، menuItem.name).

<slice>

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

مخطّط الاختصار

يوضّح الجدول التالي سمات عناصر shortcut المستخدَمة للأغراض التالية: تفعيل وظائف "مهامّ في التطبيقات" عند تضمين علامة، يجب أن تصبح جميع سماتها ما لم يتم وضع علامة "اختياري" عليها.

علامة Shortcuts.xml موجود في السمات
<shortcut> <shortcuts>

android:shortcutId

android:shortcutShortLabel

android:shortcutLongLabel (اختياري)

android:icon (اختياري)

<intent> <shortcut>

android:action

android:targetClass (اختياري)

android:targetPackage (اختياري)

android:data (اختياري)

<capability-binding> <shortcut>

android:key

<parameter-binding> <capability-binding>

android:key (اختياري)

android:value

<extra> <shortcut>

android:name (اختياري)

android:value

لا ينطبق إلا على مطابقة مَعلمات Enum.

وصف مخطط الاختصار

يوضِّح هذا القسم عناصر مخطط shortcut.

<shortcut>

<shortcut> لنظام التشغيل Android تمّ تحديده في shortcuts.xml باستخدام سمات معيّنة تكون ذات صلة بإجراءات التطبيق قيم السلسلة لـ shortcutShortLabel وshortcutLongLabel تتم الإشارة إليها عبر ملف APK مصادر السلسلة

السمات:

  • android:shortcutId: معرّف هذا الاختصار
  • android:shortcutShortLabel: مورد سلسلة يمثّل اختصارًا موجزًا عبارة. على سبيل المثال، "@string/callDavidShort" الذي يمثل القيمة "اتصال ديفيد".
  • android:shortcutLongLabel: مورد سلسلة يمثّل اختصارًا طويلاً عبارة. على سبيل المثال، "@string/callDavidLong" الذي يمثل القيمة "إنشاء مكالمة صوتية إلى ديفيد".

<intent>

هدف Android المرتبط بهذا الاختصار يتم تنفيذ intent عندما يشغِّل المستخدم هذا الاختصار باستخدام الصوت أو اللمس.

shortcut سمات intent مماثلة لـ capability intent ذات الصلة.

<capability-binding>

تربط السمة shortcut بالإجراء capability في التطبيقات. إضافة هذا العنصر إلى توفّر السمة shortcut طريقة التنفيذ بالصوت باستخدام Assistant.

السمات:

  • android:key: السمة android:name للسمة capability التالية shortcut مقترن بـ. على سبيل المثال: actions.intent.START_EXERCISE

<parameter-binding>

سمة اختيارية تربط shortcut بمَعلمة واحدة في أحد التطبيقات الإجراءات capability. إذا تم تحديد parameter-binding للسمة shortcut، سيتم يمكن استخدام اختصار لتوفير كيان مستودع مضمّن لمعلَمة BII. لمزيد من التفاصيل، يُرجى الاطّلاع على المستودع الإعلاني المضمّن لميزة "المهام مع مساعد Google".

السمات:

  • android:key: اسم مَعلمة BII‏ capability لربط هذا الاختصار بها. على سبيل المثال، exercise.name.
  • android:value: القيمة entity يمكن أن تكون قيمة الحقل "entity" أو قائمة الموارد.

<إضافية>

بيانات حزمة extra للاختصار sameAs هي البيانات الوحيدة ذات صلة بعناصر shortcut الخاصة بـ "إجراءات التطبيقات" يشير عنوان URL sameAs إلى تشير إلى صفحة ويب تحدد الكيان بوضوح. يتم استخدامه لتحديد فقط إذا كان نوع معلَمة الغرض نوعًا فرعيًا من schema.org/Enumeration: يجب ملء هذا الحقل لحقول المَعلمات وأنواعها هي أنواع فرعية من schema.org/Enumeration (على سبيل المثال: MealTypeBreakfast).

السمات:

  • android:key: القيمة المسموح بها لـ "مهامّ في التطبيقات" هي: sameAs
  • android:value: قيمة عنوان URL للسمة sameAs

وللمزيد من التفاصيل، يُرجى الاطّلاع على مطابقة قيم المَعلمات المعدودة.

خيارات تنفيذ الأهداف

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

تتوفّر خيارات التسليم التالية:

  • المقصودات الصريحة: يمكنك تشغيل مكوّن تطبيق معيّن من خلال تحديد سمتَي targetClass وtargetPackage للعنصر intent. هذه هي طريقة تنفيذ "مهامّ في التطبيقات" المقترَحة.

  • الروابط لصفحات في التطبيق: يمكنك إطلاق وجهات التطبيقات باستخدام روابط لصفحات في التطبيق في Android عن طريق تحديد علامة <url-template> داخل العنصر intent. وتكون هذه المحاولة مفيدة إذا كان تنقّل تطبيقك يعتمد على الروابط لصفحات في التطبيق.

  • بيانات الغرض: يمكنك تقديم معرّف موارد منتظم (URI) للتنفيذ في intent. السمة android:data يتم استبدال هذا الحقل ببيانات <url-template> إذا تم تحديد هذه العلامة أيضًا ضمن intent.

بيانات المَعلمات والمطابقة

يُرسِل "مساعد Google" تلقائيًا مَعلمات BII المستخلصة من طلب بحث المستخدم إلى التطبيق باعتباره بيانات extra من intent لنظام التشغيل Android المحدّد في capability.

يمكنك بدلاً من ذلك الإعلان عن علامة <url-template> في capability يحتوي على عناصر نائبة للمعلمات الديناميكية. هذا النموذج لأحد أنشطتك على Android، باستخدام عنوان URL لروابط التطبيقات، مخطط مخصّص أو عنوان URL مستند إلى الغرض.

استخدام عناصر واجهة المستخدم الإضافية

يوضّح المثال التالي نية صريحة محدّدة لعملية capability تنفيذ:

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

وبالنظر إلى النموذج أعلاه، بالنسبة إلى طلب بحث أحد المستخدمين، مثل: "Ok Google، أريد طلب قهوة لاتيه من ExampleApp"، يتلقّى التطبيق الرمز intent الذي يستدعي المكوِّن: targetPackage، targetClass. يتلقى المكون عنصرًا إضافيًا مع key = "exercise"، value = "Running".

إذا كان تطبيقك قادرًا بالفعل على التعامل مع عناوين URL المرتبطة بالتطبيق مع المعلمات الديناميكية، يمكنك تحديد <url-template> في intent لإنشاء Android روابط لصفحات معيّنة في التطبيق يحدد النموذج التالي السمة <url-template>:

<capability android:name="actions.intent.START_EXERCISE">
  <intent>
    <url-template android:value="myapp://start{?exercise}" />
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</capability>

استنادًا إلى العيّنة أعلاه، إذا أدخل المستخدم طلبًا مثل "Ok Google، أريد طلب قهوة لاتيه من ExampleApp"، سيتلقّى التطبيق عنوان URL الذي تم إنشاؤه: "myapp://start?exercise=Running".

لربط المَعلمة BII بموضع في عنوان URL، يمكنك استخدام السمة android:name للعلامة <parameter>. هذه السمة مع القيمة android:key في نموذج عنوان URL الذي تريد واستبدالها بمعلومات من المستخدم. يجب أن تكون قيمة android:key متوفّرة. في <url-template> ومحاطة بأقواس معقوفة ({}).

مطابقة قيم المَعلمات العددية

تقدم بعض مَعلمات BII قيمًا معدودة لهدف التنفيذ المثال، القيم النصية المسموح بها لـ RECORD_FOOD_OBSERVATION BII. بالنسبة هذه المعلمات، يُطابق "مساعد Google" طلب بحث المستخدم ("إفطار") كيان تتطابق قيمة sameAs مع عنوان URL لمخطط التعداد (https://schema.googleapis.com/MealTypeBreakfast). لربط التعداد قيمة entity متوافقة، وعليك الإشارة إلى ارتباط sameAs في shortcut. يوضّح النموذج التالي عملية ربط sameAs بـ اختصار الكيان المضمّن:

<shortcut android:shortcutId="meal_breakfast" >
    <capability-binding android:key="actions.intent.RECORD_FOOD_OBSERVATION">
        <parameter-binding android:key="foodObservation.forMeal" />
    </capability-binding>
    <extra
        android:key="sameAs"
        android:value="http://schema.googleapis.com/MealTypeBreakfast" />
</shortcut>

<capability android:name="actions.intent.RECORD_FOOD_OBSERVATION">
  <intent targetPackage="com.example.app" targetClass="com.example.app.Class">
    <parameter android:name="foodObservation.forMeal" android:key="for_meal" />
  </intent>
</capability>

في المثال أعلاه، إذا أدّت ميزة RECORD_FOOD_OBSERVATION إلى بدء عملية مطابقة لنوع الوجبة "فطور"، يتم إرسال العنصر الإضافي التالي مع العنصر الذي يمثّل المنتج intent:

  • key = "for_meal"
  • value = "meal_breakfast"

الميزات

تتوفّر ميزات "مهامّ في التطبيقات" التالية في shortcuts.xml.

مستودع مضمّن لخدمة "مهامّ في التطبيقات"

بالنسبة إلى بعض مَعلمات BII، يمكن استخدام الاختصارات لتوجيه عملية استخراج العناصر إلى مجموعة من العناصر المتوافقة المحدّدة في shortcuts.xml، والتي تُعرف باسم المستودع الإعلاني المضمّن. لمعرفة التفاصيل، يُرجى الاطّلاع على المستودع المضمّن.

مخصّص حسب نيّة الشراء

يمكن الإعلان عن النوايا المخصّصة حسب النية بالشراء في shortcuts.xml لتفعيل الميزات بالصوت في تطبيقك التي لا تتطابق مع معرّفات BII المتاحة بينما تشبه في لوظيفة بتعريف BII، تتطلب الأهداف المخصصة تقديم اثنتين إضافيتين السمات في shortcuts.xml:

  • app:queryPatterns: مورد مصفوفة يعرّف عن أنماط طلبات بحث مختلفة حسب النية بالشراء

  • android:mimeType: نوع مَعلمة الغرض المخصّص حسب النية بالشراء هذا الحقل هو ليست مطلوبة لمعيار BII حيث يكون نوع المعلمة معروفًا. مخصّص حسب نيّة الشراء ، يجب الإعلان عن نوع دلالي متوافق.

لمزيد من التفاصيل، راجِع الروابط المخصّصة حسب النية بالشراء.