اختصارات التطبيق

الإعلانات

ادارة اختصارات التطبيق

 

بعد إنشاء اختصارات التطبيق، قد تحتاج إلى إدارتها طوال مدة تطبيقك. مثال، قد ترغب في تحسين تطبيقك من خلال تحديد..

عدد مرات إكمال المستخدمين، لإجراءات محددة، بإستخدام إختصاراتك. في حالة أخرى، قد تقرر تعطيل اختصار مثبت..

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

 

 

 

سلوك الاختصار


تحتوي الأقسام التالية على معلومات عامة حول سلوك الاختصار بما في ذلك الرؤية وترتيب العرض والرتبه.

 

 

رؤية الاختصار

 

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

 

تظهر الإختصارات الثابتة والإختصارات الحيوية، في المشغل المدعوم، عندما ينفذ المستخدم إيماءة محددة.

على المشغلات المدعومة حالياً، تعد هذه الإيماءة، ضغط مطول على أيقونة مشغل التطبيق، ولكن قد تختلف الإيماءة الفعلية، في تطبيقات المشغل الأخرى.

توفر فئة LauncherApps واجهات برمجة لتطبيقات المشغل، للوصول إلى الإختصارات.

لأن الإختصارات المثبتة، التي تظهر في المشغل نفسه، تكون دائماً مرئية. تتم إزالة الإختصار المثبت من المشغل فقط في الحالات التالية:

– عندما يقوم المستخدم بإزالته.

– عندما يتم إلغاء تثبيت التطبيق المرتبط بالإختصار.

– عندما يمسح المستخدم بيانات التطبيق من خلال الإنتقال إلى الإعدادات> التطبيقات والإشعارات، وتحديد أحد التطبيقات، ثم الضغط على التخزين> مسح ذاكرة التخزين.

 

 

 

ترتيب عرض اختصار

عندما يعرض المشغل اختصارات للتطبيق، يجب أن تظهر بالترتيب التالي:

1- اختصارات ثابتة: اختصارات تقوم دالتها ()isDeclaredInManifest بإرجاع القيمة “صحيح”.
2- اختصارات حيويه: اختصارات تقوم دالتها ()ShortcutInfo.isDynamic بإرجاع القيمة “صحيح”.

بداخل كل نوع إختصار (الثابت و الحيوي)، يتم فرز الإختصارات بترتيب متزايد وفقاً لـ ()ShortcutInfo.getRank .

الرتب هي أعداد صحيحة غير سالبه، متسلسلة. يمكنك تحديث رتب الإختصارات الموجودة عند إستدعاء (updateShortcuts(List أو (addDynamicShortcuts (List أو (setDynamicShortcuts(List.

 

ملاحظة: يتم ضبط الرتب تلقائياً بحيث تكون فريدة لكل نوع من الإختصارات (ثابت أو حيوي). على سبيل المثال..

إذا كانت هناك ثلاثة إختصارات حيوية ذات الرتب 0 و 1 و 2 ، فإن إضافة إختصار ديناميكي آخر برتبة 1 يمثل طلباً لوضع هذا الإختصار في الموضع الثاني.

إستجابةً لذلك، يقترب الإختصاران الثالث والرابع من الجزء السفلي من قائمة الإختصارات، مع تغيير ترتيبهما إلى 2 و 3، على التوالي.

 

 

 

 

ادارة الأغراض والأنشطة المتعددة


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

يمكنك تحقيق ذلك عن طريق تعيين أغراض متعددة، أو بدء نشاط من نشاط آخر، أو إعداد علامات الغرض، بناءً على نوع الإختصار.

 

 

 

تعيين عدة أغراض

عند إنشاء إختصار بإستخدام ShortcutInfo.Builder ، يمكنك إستخدام ()setIntents بدلاً من ()setIntent .

من خلال إستدعاء ()setIntents ، يمكنك إطلاق العديد من الأنشطة، بداخل تطبيقك عندما يحدد المستخدم إختصاراً..

مع وضع جميع الأنشطة، ما عدا النشاط الأخير، في قائمة الكومة الخلفية. إذا قرر المستخدم بعد ذلك..

الضغط على زر الرجوع الخاص بالجهاز، فسيشاهد نشاطاً آخر في تطبيقك، بدلاً من العودة إلى المشغل.

ملاحظة: عندما يختار المستخدم إختصاراً ثم يضغط على زر الرجوع، فإن تطبيقك يبدأ النشاط المتوافق مع غرض الإختصار من “الثانية إلى الأخيرة” المدرجة في ملف المصدر.

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

عندما يضغط المستخدم على زر الرجوع ، يقوم النظام بإعادته إلى المشغل.

 

 

 

 

بدء نشاط من نشاط آخر

لا يمكن أن تحتوي الإختصارات الثابتة على علامات مخصصة. سيكون لدى الغرض الأول من الإختصار الثابت دائماً..

تعيين Intent.FLAG_ACTIVITY_NEW_TASK و Intent.FLAG_ACTIVITY_CLEAR_TASK. وهذا يعني أنه عندما يكون التطبيق قيد التشغيل بالفعل..

يتم إتلاف جميع الأنشطة الموجودة في تطبيقك عند تشغيل الإختصار الثابت. إذا لم يكن هذا السلوك مرغوباً..

فيمكنك إستخدام نشاط الترامبولين، أو نشاط غير مرئي يبدأ نشاط آخر في

(Activity.onCreate (Bundle ، ثم يستدعي ()Activity.finish :

1- في ملف AndroidManifest.xml، يجب أن يتضمن نشاط الترامبولين تعيين السمة ""=android:taskAffinity .

2- في ملف مصادر الإختصارات، يجب أن يشير الغرض بداخل الإختصار الثابت إلى نشاط الترامبولين.

لمزيد من المعلومات حول أنشطة الترامبولين، اقرأ بدء نشاط من نشاط آخر.

 

 

 

 

مجموعة أعلام الغرض

يمكن نشر الإختصارات الحيويه مع أي مجموعة من أعلام الغرض.

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

لمعرفة المزيد حول المهام وأعلام الغرض، اطلع على دليل المهام والكومة الخلفية.

 

 

 

تحديث الإختصارات

يمكن أن تحتوي أيقونة مشغل كل تطبيق على أكثر من رقم ()getMaxShortcutCountPerActivity من الإختصارات الثابتة والحيويه المدمجة.

على الرغم من ذلك، لا يوجد حد لعدد الإختصارات المثبتة التي يمكن للتطبيق إنشاؤها.

عند تثبيت إختصار حيوي، حتى عندما يزيله الناشر كإختصار حيوي، سيبقى الإختصار المثبت مرئياً و يمكن تشغيله.

يتيح هذا للتطبيق الحصول على أكثر من عدد الإختصارات  ()GetMaxShortcutCountPerActivity.

مثال، أفترض أن ()getMaxShortcutCountPerActivity هي أربعة: إدارة الإختصارات

1- تطبيق دردشة، ينشر أربعة إختصارات حيويه، تمثل المحادثات الأربعة الأخيرة (c1، c2، c3، c4).

2- يثبت المستخدم الإختصارات الأربعة كلها.

3- في وقتٍ لاحق، بدأ المستخدم ثلاث محادثات إضافية (c5 و c6 و c7)، لذلك يعيد تطبيق الناشر، نشر إختصاراته الحيويه.

قائمة الإختصارات الحيويه الجديده هي: c4 ، c5 ، c6 ، c7.

يجب أن يزيل التطبيق c1 و c2 و c3 لأنه لا يمكنه عرض أكثر من أربعة إختصارات حيويه.

ومع ذلك، لا تزال المحادثات c1 و c2 و c3 مثبته في الإختصارات التي يمكن للمستخدم الوصول إليها وتشغيلها.

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

وذلك لأن الإجمالي، يتضمن كلا من الحد الأقصى لعدد الإختصارات، والإختصارات الثلاثة المثبتة.

4- يمكن للتطبيق إستخدام (updateShortcuts (List لتحديث أي من الإختصارات السبعة الموجودة.

مثال، قد تقوم بتحديث هذه المجموعة من الإختصارات عند تغير أيقونات أقران “مستخدمي” الدردشة.

5- يمكن أيضاً إستخدام دوال (addDynamicShortcuts (List و (setDynamicShortcuts (List لتحديث الإختصارات الموجودة بإستخدام نفس المعرفات.

ومع ذلك، لا يمكن إستخدامها، لتحديث الإختصارات غير الحيويه، و الإختصارات المثبتة لأن هاتين الدالتين تحاولان تحويل قوائم الإختصارات المحددة إلى إختصارات حيويه.

لمعرفة المزيد حول إرشاداتنا الخاصة لإختصارات التطبيقات، بما في ذلك تحديث الإختصارات، اقرأ أفضل الممارسات.

 

 

 

التعامل مع تغييرات النظام المحليه

يجب على التطبيقات تحديث الإختصارات الحيويه والمُثبَّتة عند تلقي بث Intent.ACTION_LOCALE_CHANGED، مشيراً إلى تغير الإعدادات المحلية للنظام.

 

 

 

تتبع إستخدام الإختصار


لتحديد الحالات التي يجب أن تظهر خلالها الإختصارات الثابته والحيويه، يفحص المشغل محفوظات تنشيط الإختصارات.

يمكنك تتبع وقت قيام المستخدمين بإكمال إجراءات محددة داخل تطبيقك عن طريق إستدعاء الدالة ()reportShortcutUsed وتمرير معرف الإختصار، في حالة حدوث أي من الأحداث التالية:

  •  يحدد المستخدم الإختصار، ذو المعرف المحدد.

 

  • ضمن التطبيق، يقوم المستخدم بإكمال الإجراء المطابق، لنفس الإختصار يدوياً.

 

 

 

 

 

تعطيل الإختصارات


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

يمكن أن توجه المستخدمين، إلى إجراءات داخل تطبيقك، والتي قد تكون قديمة أو لم تعد موجودة.

للتعامل مع هذه الحالة، يمكنك تعطيل الإختصارات، التي لا تريد أن يختارها المستخدمون عن طريق إستدعاء ()disableShortcuts ..

والتي تزيل الإختصارات المحددة من قائمة الإختصارات الثابتة والحيويه وتعطل أي نسخ مثبتة من هذه الإختصارات.

يمكنك أيضاً إستخدام إصدار زائد من هذه الدالة، والذي يقبل CharSequence كرسالة خطأ مخصصة.

تظهر رسالة الخطأ هذه عندما يحاول المستخدمون تشغيل أي إختصار مُعطل.

ملاحظة: إذا قمت بإزالة بعض إختصارات التطبيق الثابتة عند تحديث تطبيقك، سيقوم النظام بتعطيل هذه الإختصارات تلقائياً.

 

 

 

حد المعدل


عند إستخدام دوال ()setDynamicShortcuts  أو ()addDynamicShortcuts أو ()updateShortcuts ، ضع في اعتبارك..

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

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

يتم إستخدام هذه الميزة لمنع ShortcutManager من الإفراط في إستهلاك موارد الجهاز.

عندما يكون حد المعدل نشط، تقوم ()isRateLimitingActive بإرجاع القيمة “صحيح”. ومع ذلك، تتم إعادة تعيين حد المعدل أثناء أحداث معينة..

لذلك يمكن حتى لتطبيقات الخلفية إستدعاء دوال ” ادارة اختصارات ” ShortcutManager إلى أن يتم الوصول إلى حد المعدل مجدداً. تتضمن هذه الأحداث ما يلي:

– يأتي أحد التطبيقات إلى المقدمة.
– تتغير الإعدادات المحليه للنظام.
– ينفذ المستخدم إجراء الرد المضمن على إشعار.

إذا واجهت حد المعدل أثناء التطوير أو الإختبار، فيمكنك تحديد خيارات المطورين> إعادة تعيين حد معدل ShortcutManager ” ادارة اختصارات “، من إعدادات الجهاز، أو يمكنك إدخال الأمر التالي في adb:

 

 

 

 

 

النسخ الإحتياطي و الإستعادة


يمكنك السماح للمستخدمين بإجراء عمليات النسخ الإحتياطي والإستعادة على تطبيقك عند تغيير الأجهزة من خلال..

تضمين تعيين السمة "android:allowBackup ="true في ملف الإيضاح الخاص بتطبيقك. إذا سمحت بالنسخ الإحتياطي والإستعادة..

فضع في إعتبارك النقاط التالية حول إختصارات التطبيقات:

– يتم إعادة نشر الإختصارات الثابتة تلقائياً، ولكن فقط بعد أن يعيد المستخدم تثبيت تطبيقك على جهاز جديد.

– لا يتم الإحتفاظ بنسخة إحتياطية من الإختصارات الحيويه، لذلك يجب عليك تضمين المنطق في تطبيقك..

لإعادة نشرها عندما يفتح أحد المستخدمين تطبيقك على جهاز جديد.

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

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

يعرض مقتطف الكود التالي أفضل طريقة لإستعادة الإختصارات الحيويه للتطبيق وكيفية التحقق مما إذا تم حفظ الإختصارات المثبتة لتطبيقك أم لا:

KOTLIN 

class MyMainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val shortcutManager = getSystemService(ShortcutManager::class.java)

        if (shortcutManager!!.dynamicShortcuts.size == 0) {
            // Application restored. Need to re-publish dynamic shortcuts.
            if (shortcutManager.pinnedShortcuts.size > 0) {
                // Pinned shortcuts have been restored. Use
                // updateShortcuts() to make sure they contain
                // up-to-date information.
            }

        }
    }
    // ...
}

JAVA

public class MainActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ShortcutManager shortcutManager =
                getSystemService(ShortcutManager.class);

        if (shortcutManager.getDynamicShortcuts().size() == 0) {
            // Application restored. Need to re-publish dynamic shortcuts.
            if (shortcutManager.getPinnedShortcuts().size() > 0) {
                // Pinned shortcuts have been restored. Use
                // updateShortcuts() to make sure they contain
                // up-to-date information.
            }
        }
    }
    // ...
}

 

 

 

مصادر إضافية


يوضح نموذج تطبيق اختصارات الأندرويد مزيداً من إستخدام سير العمل المغطى في هذه الصفحة.

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات