بعد تحديد الوظيفة داخل التطبيق والقصد المضمّن المرتبط بها
(BII) المطلوب تنفيذه، عليك الإفصاح عن الوظائف المضمّنة التي تتيحها الوظيفة من خلال تعريف
عنصر capability
في ملف موارد shortcuts.xml
. يؤدي تحديد عنصر BII
كcapability
إلى تسجيل توفّر هذا الإجراء الدلالي في تطبيقك، ويؤدي
إلى تفعيل تنفيذ الطلب الصوتي من خلال "مساعد Google".
يستخدم "مساعد Google" معالجة اللغات الطبيعية لاستخراج المَعلمات من طلبات بحث المستخدِم. يسرد مرجع الأهداف المضمّنة الحقول التي يمكن لكل BII استخراجها من طلب بحث مرتبط بالمستخدم. على سبيل المثال، إذا استخدَم مستخدم
إمكانية [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"
يُرسِل المساعد مَعلمات BII إلى intent
التسليم المحدّد في
capability
. يمكن تحديد عنصر intent
واحد أو أكثر في إمكانية استيعاب الطرق المختلفة التي قد يستدعي المستخدم بها BII. على سبيل المثال،
يمكنك تعريف عملية تنفيذ intent
تتطلّب مَعلمتَي BII في المثال
أعلاه. يمكنك بعد ذلك تحديد نية ثانية تتطلّب مَعلمة BII
واحدة، foodObservation.forMeal
، تُبلغ عن جميع الوجبات في يوم معيّن، مثل "Ok Google، أريد أن أسأل تطبيق ExampleApp ما الذي أكلته في الغداء".
نظرة عامة
يمكنك ضبط خدمة "مهامّ في التطبيقات" باستخدام ملف shortcuts.xml
موضوع في دليل res/xml
الخاص بمشروع تطبيقك، ثم إنشاء مرجع إلى shortcuts.xml
في بيان التطبيق. أضِف إشارة إلى shortcuts.xml
في بيان تطبيقك
من خلال اتّباع الخطوات التالية:
في ملف بيان تطبيقك (
AndroidManifest.xml
)، ابحث عن نشاط تم ضبط فلاتر أهدافه على الإجراءandroid.intent.action.MAIN
والفئةandroid.intent.category.LAUNCHER
.أضِف إشارة إلى
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 لتجنُّب أخطاء الترجمة compiling
عند تحديد إمكانات "إجراءات التطبيق" في 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> |
|
<intent> |
<capability> |
|
<url-template> |
<intent> |
|
<extra> |
<intent> |
لا ينطبق إلا على تشغيل التطبيقات في المقدّمة |
<parameter> |
<intent> |
|
<shortcut-fulfillment> |
<capability> |
ينطبق فقط على المستودع المضمّن. |
<parameter> |
<shortcut-fulfillment> |
android:name |
<slice> |
<capability> |
لا ينطبق إلا على Android Slices |
وصف مخطّط القدرات
يوضِّح هذا القسم عناصر مخطط capability
.
<capability>
capability
يحدّد هدف "إجراء التطبيق" الذي يتوافق معه تطبيقك يجب أن يقدّم كل عنصر
<capability>
في ملف shortcuts.xml
عنصر
<intent>
واحدًا على الأقل لمعالجة تنفيذ الإجراء.
السمات:
android:name
: رقم تعريف إجراء النيّة المضمّنة (على سبيل المثال، [actions.intent.GET_FOOD_OBSERVATION
][]). للحصول على قائمة بالنيّات المضمّنة المتوافقة، اطّلِع على مرجع النيّة المضمّنة.app:queryPatterns
: مورد مصفوفة سلاسل من طلبات البحث المتوقّعة من العميل لطلب البحث هذا. لا تنطبق هذه السمة إلا على المقصودات المخصّصة، لأنّ طلبات البحث عن المعلومات تتضمّن حاليًا نماذج للطرق الشائعة التي يعبّر بها المستخدمون عن المهام التي يحاولون تنفيذها أو المعلومات التي يبحثون عنها.
<intent>
عنصر intent
في Android الذي يحدِّد كيفية معالجة طلب بحث المستخدِم باستخدام الوظائف داخل التطبيق يمكن للمطوّرين تقديم علامات <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 لرابط لصفحة في التطبيق لفتح التطبيق على الجهاز يمكن توسيع النموذج باستخدام مَعلمات intent المضمّنة في حال توفُّر جميع المَعلمات المطلوبة للنموذج. للحصول على أمثلة على نموذج عنوان URL المستخدِم بروتوكول HTTP، اطّلِع على مقالة Wikipedia عن نماذج عناوين URL. يتّبع تنسيق ال نموذج مواصفات نموذج معرّف الموارد المنتظم RFC6570.
في ما يلي بعض الأمثلة على قيم نماذج عناوين URL:
النموذج | القيم | القيمة الموسّعة |
---|---|---|
https://example.com/test{?foo,bar} |
"foo": "123"
|
https://example.com/test?foo=123&bar=456 |
https://example.com/test?utm_campaign=appactions{&foo,bar} |
"foo": "123"
|
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 في مرحلة التسليم.
<extra>
تُحدِّد بيانات إضافية لعنصر intent
. بالنسبة إلى إجراءات التطبيقات، لا يُستخدَم هذا الحقل إلا ل
تفعيل [invocation of foreground app][] لcapability
.
<parameter>
تربط مَعلمة BII بقيم مَعلمات النية. للمزيد من المعلومات، يُرجى الاطّلاع على بيانات المَعلمات والمطابقة.
السمات:
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> |
|
<intent> |
<shortcut> |
|
<capability-binding> |
|
|
<parameter-binding> |
<capability-binding> |
|
<extra> |
<shortcut> |
لا ينطبق إلا على مطابقة مَعلمات Enum. |
وصف مخطّط الاختصار
يصف هذا القسم عناصر مخطّط 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
: اسم مَعلمةcapability
BII المطلوب ربط هذا الاختصار بها. على سبيل المثال،exercise.name
.android:value
: قيمةentity
يمكن أن يكون هذاentity
واحدًا أو قائمة موارد.
<extra>
extra
حِزمة بيانات الاختصار. sameAs هي البيانات الوحيدة
ذات الصلة بعناصر shortcut
"إجراءات التطبيق". يشير عنوان URL sameAs إلى
صفحة ويب مرجعية تحدِّد الكيان بوضوح. تُستخدَم لتحديد قيمة
تصنيف إذا كان نوع مَعلمة النيّة هو نوع فرعي من
schema.org/Enumeration فقط. وهو مطلوب لحقول المَعلمات
التي تكون أنواعها أنواعًا فرعية من schema.org/Enumeration
(على سبيل المثال:
MealTypeBreakfast
).
السمات:
android:key
: القيمة المسموح بها لإجراءات التطبيق هي:sameAs
android:value
: قيمة عنوان URLsameAs
لمزيد من التفاصيل، يُرجى الاطّلاع على مطابقة قيم المَعلمات المُدرَجة.
خيارات تلبية النية
يمكنك تحديد عناصر intent
ضمن <capability>
للإشارة إلى كيفية تفاعل "مساعد Google" مع الطلبات الصوتية التي يوجّهها المستخدم والتي تتطابق مع هذه الإمكانية أو تنفيذها. هناك
عدة طرق لضبط كيفية إطلاق intent
لوجهة تسليم
في تطبيقك، استنادًا إلى بنية التنقّل في تطبيقك.
تتوفّر خيارات توصيل الطلبات التالية:
المقصودات الصريحة: يمكنك تشغيل مكوّن تطبيق معيّن من خلال تحديد سمتَي
targetClass
وtargetPackage
للعنصرintent
. هذه هي طريقة الوفاء المُقترَحة للمهام في التطبيق.الروابط لصفحات في التطبيق: يمكنك إطلاق وجهات التطبيق باستخدام روابط لصفحات في التطبيق على Android من خلال تحديد علامة
<url-template>
ضمن العنصرintent
. تكون هذه المحاولة مفيدة إذا كان تنقّل تطبيقك يعتمد على الروابط لصفحات في التطبيق.بيانات الغرض: يمكنك توفير معرّف الموارد المنتظم (URI) للتنفيذ في السمة
intent
android:data
. يتم استبدال هذا الحقل ببيانات<url-template>
إذا تم تحديد هذه العلامة أيضًا ضمنintent
.
بيانات المَعلمات والمطابقة
يُرسِل "مساعد Google" تلقائيًا مَعلمات BII المستخرَجة من طلب المستخدم إلى
تطبيقك كبيانات extra
لتطبيق Android intent
المحدَّدة في 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 لروابط صفحات معيّنة في Android
إذا كان تطبيقك قادرًا على معالجة عناوين 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" طلب المستخدم ("BreakFast") مع
كيان تتطابق قيمة 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
لتفعيل الميزات التي لا تتطابق مع معرّفات BIIs المتاحة في
تطبيقك باستخدام الصوت. على الرغم من تشابه وظيفتها مع تعريف BII، تتطلّب النوايا المخصّصة حسب النية بالشراء سمتَين إضافيتَين في shortcuts.xml
:
app:queryPatterns
: مورد مصفوفة يعرِض أنماط طلبات البحث المختلفة لهدف مخصّص.android:mimeType
: نوع مَعلمة الجمهور المخصّص حسب النية بالشراء. هذا الحقل غير مطلوب لمعرّفات BII، حيث يكون نوع المعلمة معروفًا. بالنسبة إلى المَعلمات المخصّصة حسب النية بالشراء، يجب الإعلان عن نوع دلالي متوافق.
لمزيد من التفاصيل، راجِع الروابط المخصّصة حسب النية بالشراء.