In my Android app,i want to show a push-notification badge count into application icon like ios.
How can I show badge count into application icon ?
In my Android app,i want to show a push-notification badge count into application icon like ios.
How can I show badge count into application icon ?
Android doesn't have this particular feature.
An alternative might be to have a notification that displays the number but the app icon itself is incapable under normal circumstances.
If you REALLY wanted to break design guidelines you could make a widget that looks like your app icon and the widget gets much more control over how it's drawn. Some apps have been released to do this for Gmail, Google Voice, the standard Messaging app, and missed called for the Phone app and they masquerade as regular app icons so it is possible. I don't really recommend this approach, but it is available.
1. use ShortcutBadger library for badges count
dependencies {
compile 'me.leolin:ShortcutBadger:1.1.4@aar'
}
2.
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "1. remoteMessage.getData().size() > 0");
Log.d(TAG, "Message data payload: " + remoteMessage.getData()); // {mobile=9458074124, name=Arvind}
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
Log.d(TAG, "Message getTitle: " + remoteMessage.getNotification().getTitle());
Map<String, String> notificationData1 = remoteMessage.getData();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Log.d(TAG, sharedPreferences.getString("userid", "") + ".....id"+notificationData1.get("action"));
try {
if (notificationData1.get("actionID").equalsIgnoreCase(sharedPreferences.getString("userid", ""))) {
} else {
showNotificationForEvent(remoteMessage);
// }
}
}catch (Exception e)
{
e.printStackTrace();
}
}
}
// Show Notification for Attend,Like,Comment,Rate
private void showNotificationForEvent(RemoteMessage remoteMessage) {
Log.d(TAG, "00. showNotificationForEvent");
Map<String,String> notificationData = remoteMessage.getData();
Intent resultIntent = new Intent(this, BubblesActivity.class);
resultIntent.putExtra("action", notificationData.get("action"));
resultIntent.putExtra("actionID", notificationData.get("actionID"));
resultIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
resultIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, resultIntent,
PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ipray_appicon)
// .setColor(ContextCompat.getColor(this, R.color.textColor))
.setContentTitle(remoteMessage.getNotification().getTitle())
.setContentText(remoteMessage.getNotification().getBody()/*+Utils.getPrefrence(getApplicationContext(), Const.KEY_USER_ID)+"...id"*/)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
//Vibration // new long[] { 1000, 1000, 1000, 1000, 1000 }
notificationBuilder.setVibrate(new long[] {500,1000});
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
//This method will return true if the app is in background.
private boolean isAppIsInBackground(Context context) {
boolean isInBackground = true;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {
List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
for (String activeProcess : processInfo.pkgList) {
if (activeProcess.equals(context.getPackageName())) {
isInBackground = false;
}
}
}
}
}
else {
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
if (componentInfo.getPackageName().equals(context.getPackageName())) {
isInBackground = false;
}
}
return isInBackground;
}
@Override
protected Intent zzae(Intent intent) {
//Log.e("intentdata","DataPayload zzae"+intentToString(intent));
return super.zzae(intent);
}
@Override
public boolean zzag(Intent intent) {
Log.e("intentdata","DataPayload zzag==="+intentToString(intent).toString());
Log.e("intentdata","getData====="+intent.toString());
if( intent.hasExtra("totalprayerdue"))
{
ShortcutBadger.applyCount(getApplicationContext(), Integer.parseInt(intent.getStringExtra("totalprayerdue")));
}
return super.zzag(intent);
}
@Override
public void zzm(Intent intent) {
Log.e("intentdata","DataPayload zzm"+intentToString(intent));
super.zzm(intent);
}
public static String intentToString(Intent intent) {
if (intent == null)
return "";
StringBuilder stringBuilder = new StringBuilder("action: ")
.append(intent.getAction())
.append(" data: ")
.append(intent.getDataString())
.append(" extras: ")
;
for (String key : intent.getExtras().keySet())
stringBuilder.append(key).append("=").append(intent.getExtras().get(key)).append(" ");
return stringBuilder.toString();
}
}