Я могу получать уведомления с значками и звуками, когда пользователь вошел в систему и когда пользователь вышел из системы и принудительно закрыл приложение, уведомление получено без значков и звуков (но белый квадрат был отображается как значок).Значок уведомлений Firbase Notification и Ringtone не работает, когда приложение выходит из системы и принудительно закрывается. Это происходит только над устройством версии Lollipop
Проблема заключается только в таких устройствах типа Lollipop, как Nexus.
Я здесь приложен мой код.
public class FireMsgService extends FirebaseMessagingService {
private JSONObject jObject;
private String joborder_id, sendout_id;
private Integer navigation;
Intent intent;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
String title = remoteMessage.getNotification().getTitle();
String message = remoteMessage.getNotification().getBody();
String dataResponse = remoteMessage.getData().toString();
try {
jObject = new JSONObject(dataResponse);
if (jObject != null) {
JSONObject responseObject = jObject.getJSONObject("response");
navigation = responseObject.getInt("navigation");
joborder_id = String.valueOf(responseObject.getInt("joborder_id"));
sendout_id = String.valueOf(responseObject.getInt("sendout_id"));
}
} catch (JSONException e) {
e.printStackTrace();
}
if (navigation == 1) {
if (SessionStores.getLogInState(this).equalsIgnoreCase("0")) {
intent = new Intent(this, SignIn.class);
} else {
intent = new Intent(this, PositionDetailScreenRefactor.class);
intent.putExtra("id", joborder_id);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
} else if (navigation == 2) {
if (SessionStores.getLogInState(this).equalsIgnoreCase("0")) {
intent = new Intent(this, SignIn.class);
} else {
intent = new Intent(this, ScheduleMeeting.class);
intent.putExtra("sendout_id", sendout_id);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
} else if (navigation == 3) {
if (SessionStores.getLogInState(this).equalsIgnoreCase("0")) {
intent = new Intent(this, SignIn.class);
} else {
intent = new Intent(this, PositionAcceptenceScreen.class);
intent.putExtra("sendout_id", sendout_id);
intent.putExtra("joborder_id", joborder_id);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
} else if (navigation == 0) {
if (SessionStores.getLogInState(this).equalsIgnoreCase("0")) {
intent = new Intent(this, SignIn.class);
} else {
intent = new Intent(this, NotificationScreen.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
}
PendingIntent pendingIntent = PendingIntent.getActivity(this, 1410, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(getNotificationIcon())
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
.setSound(sound)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1410, notificationBuilder.build());
}
private int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.notificationlogo : R.drawable.app_icon;
}
}
Я пробовал это, он отлично работает, когда пользователь вошел в систему. Я получаю пустой значок, когда пользователь вышел из системы и принудительно закрыл приложение. – karthik