تقديم أهداف المشاركة المباشرة

الشكل 1: صف "المشاركة المباشرة" في "قائمة المشاركة"، كما هو موضّح في 1

استخدام أهداف "المشاركة المباشرة" لتسهيل وسرعة مستخدمي التطبيقات الأخرى مشاركة عناوين URL أو الصور أو غيرها من أنواع البيانات مع تطبيقك. أعمال "المشاركة المباشرة" من خلال مشاركة جهات الاتصال من تطبيقات المراسلة والتواصل الاجتماعي مباشرةً على Android "قائمة مشاركة البيانات"، بدون أن يضطر المستخدمون إلى اختيار التطبيق ثم البحث عن جهة الاتصال

ShortcutManagerCompat هي واجهة برمجة تطبيقات AndroidX توفّر اختصارات المشاركة، وهي متوافقة مع الإصدارات القديمة من واجهة برمجة التطبيقات ChooserTargetService التي تمّ إيقافها نهائيًا. هذا هو المفضل لنشر كل من اختصارات المشاركة وChooserTargets. للاطّلاع على التعليمات راجِع استخدام AndroidX لتوفير كل من اختصارات المشاركة وChooserTargets. في هذه الصفحة.

نشر أهداف "المشاركة المباشرة"

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

  1. في ملف موارد XML الخاص بتطبيقك، أدخِل عناصر share-target.

    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity">
        <data android:mimeType="text/plain" />
        <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" />
    </share-target>
    </shortcuts>
    
  2. عند بدء تشغيل تطبيقك، يمكنك استخدام setDynamicShortcuts لترتيب الاختصارات الديناميكية حسب الأهمية.

    يشير انخفاض المؤشر إلى أهمية أكبر. إذا كنت بصدد إنشاء تطبيق للتواصل، يمكن أن تكون هذه الرموز المختصرة هي أهم المحادثات مرتبة حسب الأحدث كما تظهر في تطبيقك. لا تنشر اختصارات قديمة، لأنّ المحادثة التي لم يتم فيها تسجيل أي نشاط للمستخدم في آخر 30 يومًا تُعدّ قديمة.

    Kotlin

    ShortcutManagerCompat.setDynamicShortcuts(myContext, listOf(shortcut1, shortcut2, ..))

    Java

    List<ShortcutInfoCompat> shortcuts = new ArrayList<>();
    shortcuts.add(shortcut1);
    shortcuts.add(shortcut2);
    ...
    ShortcutManagerCompat.setDynamicShortcuts(myContext, shortcuts);
  3. إذا كنت تُطوّر تطبيقًا للتواصل، أبلِغ عن استخدام الاختصار من خلال pushDynamicShortcut فورًا في كل مرة يتلقّى فيها المستخدم رسالة من جهة اتصال أو يرسل إليها رسالة. راجِع الإبلاغ عن استخدام الاختصارات لـ تطبيقات التواصل في هذه الصفحة لمزيد من المعلومات. على سبيل المثال، الإبلاغ عن استخدام الرسائل التي أرسلها المستخدم من خلال تحديد ارتباطات الإمكانيات في الاختصار من خلال ShortcutInfoCompat.Builder#addCapabilityBinding مع إمكانية actions.intent.SEND_MESSAGE.

    Kotlin

    val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
      ...
      .setShortLabel(firstName)
      .setLongLabel(fullName)
      .setCategories(matchedCategories)
      .setLongLived(true)
    .addCapabilityBinding("actions.intent.SEND_MESSAGE").build()
    ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

    Java

    ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
      ...
      .setShortLabel(firstName)
      .setLongLabel(fullName)
      .setCategories(matchedCategories)
      .setLongLived(true)
      .addCapabilityBinding("actions.intent.SEND_MESSAGE")
      .build();
    
    ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
  4. إذا حذف المستخدم جهة اتصال، فاستخدم removeLongLivedShortcut هذه هي الطريقة المفضّلة لإزالة الاختصار بغض النظر عمّا إذا كانت خدمات النظام قد أنشأت ذاكرة تخزين مؤقت للاختصار. يعرض مقتطف الرمز التالي مثالاً على كيفية إجراء ذلك.

    Kotlin

    val deleteShortcutId = "..."
    ShortcutManagerCompat.removeLongLivedShortcuts(myContext, listOf(deleteShortcutId))

    Java

    String deleteShortcutId = "...";
    ShortcutManagerCompat.removeLongLivedShortcuts(
        myContext, Arrays.asList(deleteShortcutId));

تحسين ترتيب استهدافات المشاركة المباشرة

تعرِض شاشة المشاركة في Android عددًا ثابتًا من استهدافات المشاركة المباشرة. يتم ترتيب هذه الاقتراحات حسب ترتيبها. يمكنك تحسين ترتيب الاختصارات من خلال اتّباع الخطوات التالية:

  • تأكَّد من أنّ جميع قيم shortcutIds فريدة ولا تتم إعادة استخدامها مطلقًا لاستهدافات مختلفة.
  • ضمان استمرار ظهور الاختصار من خلال استدعاء setLongLived(true)
  • الإبلاغ عن استخدام الاختصارات المتعلقة بالمحادثات للرسائل الصادرة والواردة من خلال إعادة نشر الاختصارات المقابلة من خلال ShortcutManagerCompat.pushDynamicShortcut. راجِع قسم الإبلاغ عن استخدام اختصارات تطبيقات الاتصالات في هذا للحصول على التفاصيل.
  • تجنَّب تقديم استهدافات غير ملائمة أو قديمة للمشاركة المباشرة، مثل جهات الاتصال التي لم يراسلها المستخدم خلال آخر 30 يومًا.
  • بالنسبة إلى تطبيقات الرسائل القصيرة، تجنَّب توفير اختصارات للرموز القصيرة أو المحادثات التي تم رصدها على أنّها رسائل غير مرغوب فيها. من غير المرجح جدًا أن يشارك المستخدمون مع تلك المحادثات.
  • يمكنك طلب setCategories() لربط الاختصار بالرمز مناسب mimeType . على سبيل المثال: بالنسبة إلى تطبيقات الرسائل القصيرة SMS، إذا لم تكن جهة الاتصال متوافقة مع خدمات الاتصالات التفاعلية (RCS) أو رسائل الوسائط المتعددة، فلن يتم ربط الاختصار المقابل بأنواع MIME غير نصية، مثل "image/*" وvideo/*"
  • بالنسبة إلى محادثة معيّنة، بعد نشر اختصار ديناميكي والإبلاغ عن الاستخدام، لا تغيّر معرّف الاختصار. ويضمن ذلك الاحتفاظ ببيانات الاستخدام لتحديد الترتيب.

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

واجهة برمجة تطبيقات اختصارات المشاركة

بدءًا من نظام التشغيل Android 10 (المستوى 29 من واجهة برمجة التطبيقات)، أضاف ShortcutInfo.Builder طرقًا وتحسينات التي توفّر معلومات إضافية حول هدف المشاركة:

setCategories()
بدءًا من Android 10، يتم استخدام الفئات أيضًا لفلترة الاختصارات التي يمكنها معالجة نوايا المشاركة أو الإجراءات. الاطّلاع على الإعلان عن مشاركة المستهدفة للاطّلاع على التفاصيل. هذا الحقل مطلوب للاختصارات لاستخدامها كأهداف للمشاركة
setLongLived()

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

ويمكن أن يؤدي إنشاء اختصار طويل الأمد إلى تحسين ترتيبه. اطّلِع على تحقيق أفضل ترتيب للاطّلاع على التفاصيل.

setShortLabel()، setLongLabel()

عند نشر اختصار لشخص، يُرجى تضمين كامل اسم باللغة setLongLabel() وأي اسم مختصر، مثل اللقب أو الاسم الأول في اللغة setShortLabel().

اطّلِع على مثال على نشر اختصارات المشاركة على GitHub.

تقديم صور للاختصارات

لإنشاء اختصار مشاركة، يجب إضافة صورة من خلال setIcon().

يمكن أن تظهر اختصارات المشاركة على مساحات عرض النظام وقد يتم تغيير شكلها. بالإضافة إلى ذلك، بعض الأجهزة التي تعمل بالإصدار 7 أو 8 أو 9 من نظام التشغيل Android (مستويات واجهة برمجة التطبيقات 25، 26 و27 و28) قد تعرض رموزًا نقطية فقط بدون خلفية، مما يقلل التباين بشكل كبير. لضمان ظهور الاختصار بالشكل المطلوب، قدِّم صورة نقطية قابلة للتكيّف باستخدام IconCompat.createWithAdaptiveBitmap().

تأكّد من أنّ الصور النقطية التكيُّفية تتّبع نفس الإرشادات والسمات التي تم ضبطها للرموز التكيُّفية. الطريقة الأكثر شيوعًا لتحقيق ذلك هي تغيير حجم الصورة النقطية المربعة المقصودة إلى صورة بحجم 72x72 بكسل مستقل الكثافة في وسط لوحة شفافة بحجم 108x108 بكسل مستقل الكثافة إذا كان الرمز مناطق شفافة، عليك تضمين لون للخلفية؛ وإلا، تظهر المناطق الشفافة باللون الأسود.

لا تقدِّم صورًا تم حجبها لتظهر على شكل معيّن. على سبيل المثال، قبل Android 10 (المستوى 29 من واجهة برمجة التطبيقات)، كان من الشائع تقديم صور رمزية للمستخدمين لميزة "المشاركة المباشرة" ChooserTarget تم إخفاؤها في دائرة. في نظام التشغيل Android 10، أصبحت لوحة المشاركة في Android ومساحات عرض النظام الأخرى تحدّد شكل صور الاختصارات وتصميمها. إنّها الطريقة المفضّلة لتوفير اختصارات المشاركة من خلال ShortcutManagerCompat، تشكيل كائنات المشاركة المباشرة العكسية تلقائيًا ChooserTarget ودوائر من أجلك.

تحديد هدف حصة

يجب الإفصاح عن أهداف المشاركة في ملف موارد التطبيق، على غرار تعريفات الاختصارات الثابتة. أضِف تعريفات مشاركة الاستهداف داخل عنصر الجذر <shortcuts> في ملف الموارد، بالإضافة إلى تعريفات الاختصارات الثابتة الأخرى. كل عنصر <share-targets> يحتوي على معلومات حول نوع البيانات المشتركة والفئات المطابقة الفئة المستهدفة التي ستتعامل مع نية المشاركة. يبدو رمز XML شيئًا النحو التالي:

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity">
    <data android:mimeType="text/plain" />
    <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" />
  </share-target>
</shortcuts>

يشبه عنصر البيانات في هدف المشاركة مواصفات البيانات في فلتر أهداف. يمكن أن يكون لكل هدف مشاركة فئات متعددة، والتي لا تُستخدم إلا لمطابقة الاختصارات المنشورة لتطبيق معيّن مع تعريفات أهداف المشاركة. يمكن أن تحتوي الفئات على أي قيم مُعيّنة عشوائية تحدّدها التطبيقات.

في حال اختار المستخدم اختصار المشاركة في "قائمة مشاركة البيانات" في Android تتطابق مع مثال حصة الهدف أعلاه، سيحصل التطبيق على ما يلي الرغبة في المشاركة:

Action: Intent.ACTION_SEND
ComponentName: {com.example.android.sharingshortcuts /
                com.example.android.sharingshortcuts.SendMessageActivity}
Data: Uri to the shared content
EXTRA_SHORTCUT_ID: <ID of the selected shortcut>

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

الإبلاغ عن استخدام الاختصارات لتطبيقات التواصل

إذا كنت تُطوّر تطبيقًا للتواصل، يمكنك تحسين ترتيبك في ملف مشاركة التطبيقات على Android من خلال الإبلاغ عن استخدام كلٍّ من الرسائل الصادرة والواردة. لإجراء ذلك، عليك إعادة نشر اختصار المحادثة الذي يمثّل جهة الاتصال من خلال ShortcutManagerCompat.pushDynamicShortcut.

تتوافق روابط استخدام الاختصارات والإمكانات مع الإصدارات القديمة من Android 5.0. (واجهة برمجة التطبيقات 21).

الإبلاغ عن استخدام الاختصارات للرسائل الصادرة

يشبه إعداد التقارير عن استخدام الرسائل التي أرسلها المستخدم من الناحية الوظيفية والنقر على "إرسال" بعد إنشاء رسالة.

لبدء إعداد تقارير الاستخدام، عليك تحديد عمليات ربط الإمكانيات في الاختصار. من خلال ShortcutInfoCompat.Builder#addCapabilityBinding مع إمكانية actions.intent.SEND_MESSAGE.

Kotlin

val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(firstName)
  .setLongLabel(fullName)
  .setCategories(matchedCategories)
  .setLongLived(true)
.addCapabilityBinding("actions.intent.SEND_MESSAGE").build()
ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

Java

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(firstName)
  .setLongLabel(fullName)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.SEND_MESSAGE")
  .build();

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);

إذا كانت الرسالة الصادرة لمحادثة جماعية، يجب أيضًا إضافة Audience قيمة المعلمة على أنها recipient نوع معين مرتبطًا بالقدرة.

Kotlin

val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(groupShortTitle)
  .setLongLabel(groupLongTitle)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", listOf("Audience")).build()

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

Java

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(groupShortTitle)
  .setLongLabel(groupLongTitle)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", Arrays.asList("Audience"))
  .build();

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);

الإبلاغ عن استخدام الاختصار للرسائل الواردة

لتشغيل تقارير الاستخدام عندما يتلقّى المستخدم رسالة مثل SMS، رسالة محادثة أو بريد إلكتروني أو إشعارات، يجب تحديد إمكانية الروابط في الاختصار من خلال ShortcutInfoCompat.Builder#addCapabilityBinding مع إمكانية actions.intent.RECEIVE_MESSAGE.

Kotlin

val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(firstName)
  .setLongLabel(fullName)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE").build()

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

Java

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(firstName)
  .setLongLabel(fullName)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE")
  .build();

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);

إذا كانت الرسالة الواردة واردة من محادثة جماعية، يجب أيضًا إضافة قيمة المَعلمة Audience لأنّ نوع sender مرتبط بالقدرة.

Kotlin

val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(groupShortTitle)
  .setLongLabel(groupLongTitle)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", listOf("Audience")).build()

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

Java

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(groupShortTitle)
  .setLongLabel(groupLongTitle)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", Arrays.asList("Audience"))
  .build();

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);

استخدام AndroidX لتوفير كل من اختصارات المشاركة وSelectrTargets

ولكي تتمكّن من العمل مع مكتبة التوافق مع AndroidX، يجب أن يتضمن بيان أن يحتوي على مجموعة البيانات الوصفية selectr-target-service و intent-filters. عرض واجهة برمجة تطبيقات ChooserTargetService Direct Share الحالية.

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

في المثال التالي، يتم تنفيذ ChooserTargetService باستخدام androidx.core.content.pm.ChooserTargetServiceCompat، والذي سبق أن تم تعريفه في AndroidX:

<activity
    android:name=".SendMessageActivity"
    android:label="@string/app_name"
    android:theme="@style/SharingShortcutsDialogTheme">
    <!-- This activity can respond to Intents of type SEND -->
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
    <!-- Only needed if you import the sharetarget AndroidX library that
         provides backwards compatibility with the old DirectShare API.
         The activity that receives the Sharing Shortcut intent needs to be
         taken into account with this chooser target provider. -->
    <meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value="androidx.sharetarget.ChooserTargetServiceCompat" />
</activity>

الأسئلة الشائعة حول ميزة "مشاركة الاختصارات"

كيف يتم تخزين بيانات استخدام الاختصار وهل يتم مغادرتها الجهاز؟

يتم تخزين الاختصارات بالكامل على الجهاز في دليل بيانات النظام في تقسيم القرص المشفر. المعلومات التي تظهر في اختصارات مثل الرمز والهدف أو أسماء الأشخاص والموارد فقط بواسطة خدمات النظام التطبيق نفسه الذي ينشر الاختصارات.

ما هو تاريخ ميزة "المشاركة المباشرة"؟

لقد طرحنا ميزة "المشاركة المباشرة" في الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات) للسماح للتطبيقات ب توفير عناصر ChooserTarget من خلال ChooserTargetService. تم استرجاع النتائج بشكل تفاعلي عند الطلب، ما أدّى إلى بطء وقت تحميل الاستهدافات.

في Android 10 (المستوى 29 من واجهة برمجة التطبيقات)، تم استبدال واجهة برمجة التطبيقات ChooserTargetService Direct مشاركة واجهات برمجة التطبيقات مع واجهة برمجة التطبيقات لاختصارات المشاركة الجديدة بدلاً من استرداد النتائج بشكل تفاعلي عند الطلب، تتيح واجهة برمجة التطبيقات لاختصارات لوحة المفاتيح للتطبيقات إمكانية نشر "المشاركة المباشرة". الأهداف مسبقًا. أدّى ذلك إلى تسريع عملية استرداد ملفّات مشاركة التطبيقات المباشرة المستهدفة عند إعداد ShareSheet. المشاركة المباشرة في ChooserTargetService الآلية، إلا أنّ النظام يصنّف الأهداف المقدَّمة بهذه الطريقة أقل من أي هدف يستخدم واجهة برمجة تطبيقات اختصارات المشاركة.

تم إيقاف خدمة ChooserTargetService نهائيًا في نظام Android 11 (المستوى 30 من واجهة برمجة التطبيقات) ويُرجى العِلم بأنّ واجهة برمجة التطبيقات لاختصارات المشاركة هي الطريقة الوحيدة لتوفير أهداف "المشاركة المباشرة".

كيف تختلف الاختصارات المنشورة لأهداف المشاركة عن مشغّل التطبيقات؟ (الاستخدام المعتاد للاختصارات عند الضغط مع الاستمرار على أيقونات التطبيقات في Google Cloud Platform)؟

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

ما هي الإرشادات المتعلقة بعدد اختصارات المشاركة التي يجب أن ينشرها المستخدم؟

يقتصر عدد اختصارات المشاركة على الحد الأقصى نفسه للاختصارات الديناميكية المتوفّرة من خلال getMaxShortcutCountPerActivity(android.content.Context). يمكن نشر أي عدد ضمن هذا الحدّ، ولكن يجب مراعاة أنّ اختصارات المشاركة يمكن أن تظهر عند الضغط مع الاستمرار على مشغّل التطبيقات وفي لوحة المشاركة. معظم مشغّلات التطبيقات مفعَّلة الضغط مع الاستمرار لعرض أربعة أو خمسة اختصارات كحد أقصى في الوضع الرأسي وثمانية في الوضع الأفقي. يمكنك الاطّلاع على الأسئلة الشائعة التالية للحصول على مزيد من التفاصيل والإرشادات حول مشاركة الاختصارات.