عند تنفيذ "مهامّ في التطبيقات" في تطبيق Android، قد تجد نفسك
الاضطرار إلى التعامل مع الطلبات التي تمثل اختلافات في موضوع ما. على سبيل المثال، لنفترض أن
ينفِّذ تطبيق اللياقة البدنية ميزة START_EXERCISE
المدمجة (BII) للسماح
يبدأ المستخدمون مجموعة واسعة من التمارين عن طريق توجيه طلبات إلى "مساعد Google" مثلاً
"Ok Google، أريد تشغيل التطبيق على تطبيق Example".
يتطلب تحقيق هذا الغرض منطق مطابقة طلبك للتعامل مع كل ونوع التمرين، بما في ذلك الأشكال المختلفة مثل "الركض" و"سباق" أو "العرق". يصبح هذا المنطق مرهقًا بسرعة مع زيادة التمارين المتوافقة.
بالنسبة إلى معرّفات BII المتوافقة، مثل START_EXERCISE
، يمكنك تجنُّب هذه المطابقة المعقدة
باستخدام مخزون مضمّن. المستودع المضمّن هو مجموعة من العناصر الثابتة
تم تحديد اختصارات Android في shortcuts.xml
لتمثيل الميزات والمحتوى.
في تطبيقك.
يحتوي كل اختصار على معرّف عنصر وقائمة من المرادفات تمثل الاختلافات في كيفية إشارة المستخدمين إلى العنصر. أثناء الاستدعاء، تقارن BII معلمة BII المقدمة من المستخدم بقائمة المرادفات. عندما تم العثور على مطابقة، فسيتم تحديث المعلمة BII إلى عنصر الاختصار المطابق المُعرف.
يتيح المستودع المضمّن استخدام "مساعد Google" لتبسيط المَعلمة BII. القيم المقدمة لتطبيقك أثناء استدعاءات إجراءات التطبيق.
دالة المستودعات المضمنة مثل جداول البحث لمعلمات BII، للتعبير عن الطرق المتنوعة التي يشير بها المستخدمون إلى الميزات أو المحتوى في تطبيقك باستخدام معرّفات السلع التي تحدّدها. تبسيط مطابقة طلبات تطبيقك من خلال السماح لعمليات التنفيذ بتوقُّع معرّفات السلع من BII. المعلَمات.
![مخطّط بياني لتدفق مستخدم المستودع الإعلاني](https://developer.android.google.cn/static/guide/app-actions/images/appactions-inline-inventory-flow.png?authuser=9&hl=ar)
START_EXERCISE
التي تستخدم
مستودع مضمّن لتفسير أسماء التمارين المقدَّمة من المستخدم للمعايير المتاحة
أنواع التمارين الرياضية في التطبيق.
القيود والبدائل
تخضع اختصارات المستودع المضمّنة للقيود التالية:
- حد الاختصار: يمكن استخدام 1,000 اختصار مستودع مضمّن كحدّ أقصى محددة لكل تطبيق.
- حد المرادف: يمكن أن يحتوي كل اختصار مستودع مضمّن على 20 اختصارًا كحد أقصى. قيم المرادفات.
- تعريف ثابت: يتم الإعلان عن اختصارات المستودع المضمّنة بشكل ثابت.
في
shortcuts.xml
ولا يمكن تعديلها إلا للمستخدمين من خلال نشر من تطبيقك.
نظرًا لمتطلب التهيئة الثابتة، فإن المستودع المضمّن هو الأفضل تلائم توسيع نطاق معلومات التطبيقات غير المخصصة التي تتغير بشكل نادر "مساعد Google"، مثل عناصر القائمة أو مسارات الحافلات أو أحجام المشروبات بالنسبة إلى الأنواع الأخرى من المحتوى، ننصحك بالتفكير في البدائل التالية:
المستودع الإعلاني على الإنترنت: تتيح هذه الميزة لخدمة "مساعد Google" إجراء طلب بحث عن محتوى الويب العلني في حال مطابقة طلبات بحث المستخدمين بمعرّفات محتوى التطبيق المتوافق. مستودع الويب الطلبات تحدث في الوقت الفعلي أثناء الاستدعاء، مما يتيح لك تمديد كتالوجات المنتجات ومشاركات على وسائل التواصل الاجتماعي وغيرها من المحتوى الذي يتم تعديله باستمرار إلى "مساعد Google".
الاختصارات الديناميكية: لتوسيع مستودع محتوى التطبيق المخصّص إلى "مساعد Google". تسمح الاختصارات الديناميكية للمستخدمين بإعادة تشغيل الملفات الشائعة بسرعة مثل إعادة طلب مشروبهم المفضل من تطبيق لطلب الطعام أو فتح قائمة تسوق في تطبيق تدوين الملاحظات.
إنشاء مستودع مضمّن
يساعد المستودع المضمّن في تبسيط عملية التطوير من خلال منح "مساعد Google" طريقة سهلة ترجمة الطرق المختلفة التي يطلب بها المستخدمون محتوى تطبيقك وميزاته إلى المعرّفات التي يمكن توقّعها والمتوقّعة في تطبيقك. بالنسبة لنفترض مثلاً أنّ تطبيقك يقدّم تمارين مختلفة يمكن للمستخدمين البدء في استخدامها ويتوقّع تطبيقك من المستخدمين تقديم الطلبات التالية نفس نوع التمرين:
- Ok Google، أريد بدء تمرين الجري على Example App.
- Ok Google، أريد بدء ركض خفيف على تطبيق Example.
في اختصار المستودع المضمّن، يمكنك ضبط shortcutId
على "CARDIO_RUN"
،
معرِّف التمرين المتوقع من تطبيقك. ثم تحدد "run" أو
"ركض" باعتبارها مرادفات لكلمة shortcutId
. بعد ذلك، عندما يقوم المستخدم بتشغيل
إجراء التطبيق مع الطلبات السابقة، يستخدم "مساعد Google" المعرّف
"CARDIO_RUN"
للمَعلمة BII عند إنشاء نية التنفيذ.
يتم تنفيذ المقتطف التالي من نموذج ملف app/res/shortcuts.xml
هذا الطلب:
<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>
في العيّنة السابقة، يعرِّف المستودع المضمّن shortcut
<parameter-binding>
داخل العنصر <capability-binding>
،
ربطه بالمعلمة exercise.name
BII المحددة في
<capability>
يحدد مورد صفيف السلسلة @array/run_names
قائمة من المرادفات في
res/values/arrays.xml
التي يتعرّف عليها "مساعد Google" ويربطها
معرّف عنصر واحد ("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>
عند توفير <url-template>
لهذه الميزة، يتم عرض shortcutId
يتم إدراج قيمة مطابقة في عنوان URL الذي تم إنشاؤه في علامة
العنصر النائب للمعلمة. التعليمة البرمجية التالية من عينة
ينفذ ملف app/res/shortcuts.xml
هذه الحالة:
<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>
في العيّنة السابقة، ينشئ "مساعد Google" الرابط لصفحة في التطبيق الخاص بعملية التنفيذ.
myapp://workout?exercise=CARDIO_RUN
التنفيذ باستخدام أهداف الاختصار
يوفّر الاختصار تلقائيًا shortcutId
لمستودع مضمّن مطابق.
إلى intent
من capability
الذي يرتبط به الاختصار، كما هو موضح
في العلامة <capability-binding>
للاختصار. يمكنك
بالتناوب بين تحديد استخدام intent
المحددة في الاختصار نفسه،
التنفيذ من خلال إضافة العلامة <shortcut-fulfillment>
إلى capability
.
يتم تنفيذ الرمز التالي من نموذج ملف app/res/shortcuts.xml
تنفيذ الاختصار:
<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>
في العيّنة السابقة، إذا تطابق طلب بحث المستخدم مع قيمة مستودع مضمّنة
للمَعلمة exercise.name
، والعلامة <shortcut-fulfillment>
يتم استخدام intent
للاختصار المرتبط في التنفيذ.
مستودع مضمّن لميزة التطبيق المفتوح BII
على الرغم من أنّ المستودع المضمّن هو بشكل عام إمكانية اختيارية لمعرّفات BII التي
التي تدعمها، فهي مطلوبة لمعرّفات BII معيّنة، مثل OPEN_APP_FEATURE
. هذا النمط
يتيح BII الشائعة الاستخدام للمستخدمين إنشاء روابط تؤدي إلى ميزات محددة في التطبيق
باستخدام "مساعد Google".
تتطلب ميزة التطبيق المفتوح BII مخزونًا مضمّنًا من أسماء ميزات التطبيقات
التحقق من وجود الميزة التي طلبها المستخدم قبل الربط بصفحة معيّنة لدى المستخدم
تطبيقك.
ينفذ الرمز التالي من نموذج ملف app/res/shortcuts.xml
هذا
BII باختصار واحد يمثل ميزة حالة الطلب الخاصة بالتطبيق:
<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>
موارد مصفوفة السلسلة في res/values/arrays.xml
،
@array/order_status_names
، تحدد قائمة
مرادفات هذه الميزة:
<resources>
<string-array name="order_status_names">
<item>Order status</item>
<item>Orders</item>
<item>Order history</item>
</string-array>
</resources>
مع استخدام الإمكانات السابقة، يمكن لخدمة "مساعد Google" تنفيذ مجموعة متنوعة من العبارات الخاصة بالميزة نفسها:
- "Ok Google، أريد عرض حالة طلبي على تطبيق Example".
- "Ok Google، أريد عرض طلباتي على تطبيق Example".
- "Ok Google، أريد عرض سجلّ طلباتي على تطبيق Example".
اختبار المستودع المضمّن
يمكنك اختبار المستودع من خلال فحص قيم مَعلمة BII التي يوفّرها "مساعد Google".
تطبيقك مع توفير إمكانات إجراءات التطبيق ذات الصلة.
يعمل المستودع الإعلاني عن طريق استبدال القيمة المقدَّمة من المستخدم لـ BII المرتبط بالمستودع
معلَمة shortcutId
لاختصار مستودع مضمّن مطابق.
بالنسبة
على سبيل المثال، قد تستخدم إمكانية START_EXERCISE
BII مستودعًا مضمّنًا
ترجمة مَعلمة BII التي يقدّمها المستخدم "run" إلى التمرين المقابل له
رقم التعريف، "CARDIO_RUN"
يتيح لك مكون "مساعد Google" الإضافي معاينة تطبيق المستودع المضمّن المهام في "مساعد Google" على جهاز اختباري اختبر مستودعك باستخدام المكون الإضافي عن طريق باتباع الخطوات التالية:
- ضبط المَعلمات المرتبطة بالمستودع الإعلاني لميزة BII باستخدام قيم المرادفات المرتبطة بمستودعك المضمّن
- شغِّل عنصر BII من المكوّن الإضافي، مع استدعائه على جهاز الاختبار.
- فحص قيم المَعلمة الناتجة التي يوفّرها "مساعد Google" التطبيق أثناء تنفيذ "إجراءات التطبيق".