it-swarm.dev

كيف يضيف Facebook أرقام الشارات على أيقونة التطبيق في Android؟

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

لكن بطريقة ما ، يبدو أن أحدث إصدار تجريبي على Facebook لنظام Android يفعل شيئًا يبدو على الأقل وكأنه شارة حتى لو لم يكن ذلك تقنيًا بالضبط.

في هذا المنشور ، يقول أحد المعلقين إنه مرتبط بطريقة أو بأخرى بـ TouchWiz. و هنا أيضًا ذكرها كميزة من ميزات "S3 TouchWiz Jelly bean Addon".

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

52
epeleg

مرحبا يمكنك استخدام هذا ليب ببساطة.

الدعم: سوني ، سامسونج ، LG ، HTC ، Xiaomi ، ASUS ، ADW ، APEX ، NOVA ، Huawei ، ZUK ، OPPO

ShortcutBadger

enter image description here

أضف:

int badgeCount = 1;
ShortcutBadger.applyCount(context, badgeCount);  

إزالة :

ShortcutBadger.applyCount(context, 0);
28
Ahmad Aghazadeh

لقد اكتشفت كيف يتم ذلك لأجهزة سوني.

لقد قمت بالتدوين حول هذا الموضوع هنا . لقد قمت أيضًا بنشر سؤال منفصل [SO عن هذا هنا .


تستخدم أجهزة Sony فئة تسمى BadgeReciever.

  1. قم بتعريف إذن com.sonyericsson.home.permission.BROADCAST_BADGE في ملف البيان الخاص بك:

  2. بث Intent إلى BadgeReceiver:

    Intent intent = new Intent();
    
    intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE");
    intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", "com.yourdomain.yourapp.MainActivity");
    intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true);
    intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", "99");
    intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", "com.yourdomain.yourapp");
    
    sendBroadcast(intent);
    
  3. فعله. بمجرد بث هذا الاسم Intent ، يجب أن يعرض المشغّل شارة على رمز التطبيق الخاص بك.

  4. لإزالة الشارة مرة أخرى ، ما عليك سوى إرسال بث جديد ، هذه المرة مع SHOW_MESSAGE لتعيين false:

    intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false);
    

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

23
Marcus

لا توجد طريقة قياسية لتحقيق ذلك ؛ قام العديد من المصنّعين مثل Sony أو Samsung بتطبيقه بتخصيص Android الخاص بهم.

على سبيل المثال في Samsung ، يتعين عليك بث نية باستخدام إجراء BADGE_COUNT_UPDATE ، واسمحوا MainActivity أن تكون فئة النشاط الرئيسية و count هو الرقم الذي تريد عرضه في أيقونة التطبيق الخاص بك ، لاحظ أن 0 سيخفي الشارة:

Intent intent = new Intent("Android.intent.action.BADGE_COUNT_UPDATE");
intent.putExtra("badge_count", count); 
intent.putExtra("badge_count_package_name", context.getPackageName());
intent.putExtra("badge_count_class_name", MainActivity.class.getName());
context.sendBroadcast(intent);

تستخدم أجهزة Sony إجراء "com.sonyericsson.home.action.UPDATE_BADGE" مع إضافاتها المخصصة مثلMarcus Answerered ، لذلك يتعين عليك إضافة إذن "com.sonyericsson.home.permission.BROADCAST_BADGE" إلى بيان التطبيق الخاص بك و:

Intent intent = new Intent("com.sonyericsson.home.action.UPDATE_BADGE");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", MainActivity.class.getName());
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true);
intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", String.valueOf(count));
intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", context.getPackageName());
context.sendBroadcast(intent);

ملاحظة: من المستحسن الاستعلام عن بيانات التطبيق الخاص بك (context.getPackageName() ، MainActivity.class.getName()) بدلاً من hardcode ، فقط في حالة قيامك ببعض عمليات إعادة البناء في المستقبل.

12
Jorge Arimany

لكن بطريقة ما أحدث إصدار تجريبي من Facebook لنظام التشغيل Android يفعل ذلك ...

ليس وفقًا لـ خيط المنتدى الذي يحتوي على لقطة الشاشة التي قمت بربطها . نقلا عن vakama94:

حسنا ، هذا هو في الواقع TouchWiz وليس فقط التطبيق. لدي جهاز Galaxy S II يعمل بنظام JellyBean 4.1.2 ، وهو يجعل نفس الشيء ولكن مع بعض التطبيقات الأخرى

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

مرحبًا بك لتقديم دليل على رؤية هذه الشارات على شاشة أندرويد الرئيسية ، مثل أحد أجهزة سلسلة Nexus.

10
CommonsWare