Comment Facebook ajoute-t-il des numéros de badge sur l'icône de l'application dans Android?
je sais qu'il y a plusieurs questions ici qui demandent si c'est possible d'ajouter des badges à une application android et ils finissent tous avec une réponse sans réponse...
mais d'une certaine manière la dernière version bêta 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 un des commentateurs dit qu'il est en quelque sorte lié à TouchWiz. Et aussi ici ils le mentionne 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 y a une API pour cela que je peux utiliser dans ma propre application (lors de l'exécution dans un environnement approprié - c.-à-d. le même périphérique où FB démontre ce comportement) ?
4 réponses
Salut Vous pouvez utiliser cette lib tout simplement.
Support: Sony, Samsung,LG,HTC,Xiaomi,ASUS,ADW,APEX,NOVA,Huawei,ZUK, OPPO
ajouter:
int badgeCount = 1;
ShortcutBadger.applyCount(context, badgeCount);
Supprimer:
ShortcutBadger.applyCount(context, 0);
j'ai trouvé comment faire pour les appareils de Sony.
j'ai blogué à ce sujet ici . J'ai aussi posté une question séparée sur ce ici .
Sony utilisation de dispositifs d'une classe nommée BadgeReciever
.
-
déclarez la permission
com.sonyericsson.home.permission.BROADCAST_BADGE
dans votre fichier manifeste: -
a diffusé un
Intent
auBadgeReceiver
: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);
-
fait. Une fois que ce
Intent
est diffusé, le lanceur doit afficher un badge sur l'icône de votre application. -
pour retirer à nouveau l'insigne, il suffit d'envoyer une nouvelle émission, cette fois avec
SHOW_MESSAGE
mis à 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é ceci à garder la réponse courte, mais tout est disponible sur le blog. Peut-être une lecture intéressante pour quelqu'un.
il n'y a pas un moyen standard pour atteindre cet objectif; de nombreux fabricants tels que Sony ou Samsung l'ont mis en œuvre dans leur propre customisation Android.
par exemple dans Samsung, vous devez diffuser une intention avec L'action BADGE_COUNT_UPDATE, laissez MainActivity
être votre classe d'activité principale et count
être le numéro que vous voulez afficher dans votre icône d'application, notez que 0 masquera le badge:
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);
périphériques Sony utilise des "com.sonyericsson.home.action.UPDATE_BADGE"
action avec leurs extras personnalisés comme @Marcus a répondu, donc vous devez ajouter "com.sonyericsson.home.permission.BROADCAST_BADGE"
permission à votre manifeste app et:
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);
Note: il est souhaitable d'interroger les données de votre application ( context.getPackageName()
, MainActivity.class.getName()
) plutôt que le hardcode il juste au cas où vous faites un certain remaniement dans le futur.
mais d'une manière ou d'une autre la dernière version bêta Facebook pour android fait exactement cela...
ne correspond pas à le fil du forum qui contient la capture d'écran que vous avez liée à . Citant vakama94:
Eh bien, C'est en fait TouchWiz et pas seulement l'application. J'ai un Galaxy S II running JellyBean 4.1.2 et il fait la même chose mais avec d'autres applications
si Samsung a une API publique pour permettre aux applications de publier des numéros à utiliser comme badges, Je ne peux pas dire. Cela pourrait être quelque chose qu'ils n'en privé avec quelques entreprises.
vous êtes invités à fournir la preuve de voir ces badges sur un écran D'accueil Android stock, comme l'un des appareils de la série Nexus.