web-dev-qa-db-fra.com

Comment Facebook ajoute-t-il les numéros de badge sur l'icône de l'application dans Android?

Je sais qu'il y a plusieurs questions ici qui demandent s'il est possible d'ajouter des badges à une application Android et ils se retrouvent tous avec une réponse NON ...

Mais en quelque sorte, la dernière version bêta de Facebook pour Android semble faire quelque chose qui ressemble au moins à un badge même si ce n'est pas techniquement exactement cela.

Dans ce post, l'un des commentateurs dit qu'il est en quelque sorte lié à TouchWiz. Et également ici mentionnez-le comme une caractéristique du "S3 TouchWiz Jelly bean Addon".

J'apprécierais toujours des informations sur la façon dont cela peut être fait et s'il existe une API pour cela que je peux utiliser dans ma propre application (lors de l'exécution dans un environnement approprié - c'est-à-dire le même appareil sur lequel FB démontre ce comportement)?

52
epeleg

Salut, vous pouvez utiliser cette bibliothèque simplement.

Prise en charge: Sony, Samsung, LG, HTC, Xiaomi, ASUS, ADW, APEX, NOVA, Huawei, ZUK, OPPO

ShortcutBadger

enter image description here

Ajouter :

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

Retirer :

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

J'ai compris comment cela se fait pour les appareils Sony.

J'ai blogué à ce sujet ici . J'ai également posté une question séparée SO à ce sujet ici .


Les appareils Sony utilisent une classe nommée BadgeReciever.

  1. Déclarez le com.sonyericsson.home.permission.BROADCAST_BADGE autorisation dans votre fichier manifeste:

  2. Diffusez un Intent vers le 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. Terminé. Une fois ce Intent diffusé, le lanceur devrait afficher un badge sur l'icône de votre application.

  4. Pour retirer à nouveau le badge, envoyez simplement une nouvelle diffusion, cette fois avec SHOW_MESSAGE défini sur false:

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

J'ai exclu les détails sur la façon dont j'ai trouvé cela pour garder la réponse courte, mais tout est disponible sur le blog. Cela pourrait être une lecture intéressante pour quelqu'un.

23
Marcus

Mais en quelque sorte, la dernière version bêta de Facebook pour Android fait exactement cela ...

Pas selon le fil du forum qui contient la capture d'écran à laquelle vous avez lié . Citant vakama94:

Eh bien, c'est en fait TouchWiz et pas seulement l'application. J'ai un Galaxy S II exécutant JellyBean 4.1.2 et cela fait la même chose mais avec d'autres applications

Que Samsung ait une API publique pour permettre aux applications de publier des numéros à utiliser comme badges, je ne peux pas le dire. Cela pourrait être quelque chose qu'ils ont fait en privé avec quelques entreprises.

Vous êtes invités à fournir des preuves de la présence de ces badges sur un écran d'accueil de stock Android, tel que l'un des appareils de la série Nexus.

10
CommonsWare