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

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

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

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

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

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

  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 المناسبة. على سبيل المثال، في تطبيق الرسائل القصيرة، إذا لم تكن جهة الاتصال مفعَّلة لاستخدام خدمة RCS أو رسائل الوسائط المتعددة، لن تتم ربط الاختصار المقابل بأنواع MIME غير النصية، مثل image/* وvideo/*.
  • بالنسبة إلى محادثة معيّنة، بعد نشر اختصار ديناميكي والإبلاغ عن الاستخدام، لا تغيّر معرّف الاختصار. ويضمن ذلك الاحتفاظ ببيانات الاستخدام لتحديد الترتيب.

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

Sharing Shortcuts API

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

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

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

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

setShortLabel()، setLongLabel()

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

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

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

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

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

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

لا تقدِّم صورًا تم حجبها لتظهر على شكل معيّن. على سبيل المثال، قبل الإصدار Android 10 (المستوى 29 من واجهة برمجة التطبيقات)، كان من الشائع توفير صور رمزية للمستخدمين في رمز مشاركة مباشرة ChooserTarget تم حجبه في دائرة. أصبحت الآن لوحة المشاركة في Android ومنصات النظام الأخرى في Android 10 الآن صورًا لاختصارات الأشكال والمظاهر. الطريقة المفضّلة لتقديم اختصارات المشاركة، من خلال 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 لتوفير كل من اختصارات المشاركة وChooserTargets

لكي تتمكّن من استخدام مكتبة التوافق AndroidX، يجب أن يحتوي بيان التطبيق على مجموعة فلاتر الأهداف والخدمات واختيار البيانات الوصفية. اطّلِع على واجهة برمجة التطبيقات الحالية 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 Share API بواجهة برمجة التطبيقات الجديدة Sharing Shortcuts API. بدلاً من استرداد النتائج بشكل تفاعلي عند الطلب، تسمح واجهة برمجة التطبيقات Sharing Shortcuts API للتطبيقات بنشر أهداف مشاركة التطبيقات مباشرةً مسبقًا. أدى ذلك إلى تسريع عملية استرداد أهداف "المشاركة المباشرة" عند إعداد ShareSheet. سيستمر عمل آلية ChooserTargetService المشاركة المباشرة ، ولكن يصنّف النظام الاستهدافات المقدَّمة بهذه الطريقة على أنّها أقل أهمية من أي استهداف يستخدم واجهة برمجة التطبيقات Sharing Shortcuts API.

أوقف نظام التشغيل Android 11 (المستوى 30 لواجهة برمجة التطبيقات) خدمة ChooserTargetService نهائيًا، وتعد واجهة برمجة التطبيقات Sharing Shortcuts API هي الطريقة الوحيدة لتوفير استهدافات المشاركة المباشرة.

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

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

ما هي الإرشادات حول عدد اختصارات المشاركة التي يجب نشرها؟

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