эй все, что у меня сложная проблема и вам нужен совет. Я создал уведомление вручную после получения полезной нагрузки данных FCM. Это как уведомление будет создаваться как на переднем и заднем плане, поскольку его полезная нагрузка данных:android Уведомление - как не показать на переднем плане
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
String msg = remoteMessage.getData().get("message");
sendNotification(msg);
}
private PendingIntent createIntent(String msg) {
Intent intent = new Intent(this, SportsActivity.class);
Bundle b = new Bundle();
b.putString(Constants.KEY_GO_TO_TAB, Constants.KEY_DASHBOARD_HOCKEY_SCORE_TAB);
intent.putExtras(b);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
return pendingIntent;
}
private void sendNotification(String messageBody) {
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
android.support.v4.app.NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(messageBody))
.setContentText(messageBody)
.setColor(ContextCompat.getColor(this, R.color.hockey_brand))
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(createIntent(messageBody));
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
}
это, кажется, функционирует нормально. Проблема, связанная с тем, что я хочу, чтобы уведомление было НЕ ПОКАЗАНО, когда приложение находится на переднем плане. нет ли способа сделать это без сканирования задачи? поскольку для этого требуется разрешение
Я читал this article, но это, как узнать, что вы перешли с переднего плана на задний план. также android.permission.GET_TASKS устарел, и REAL_GET_TASKS разрешено не для стороннего пользователя. Я просто хочу знать в любой момент, что пользователь либо на переднем плане, либо на заднем плане, поэтому я знаю, должен ли я показывать уведомление или нет. Интересно, есть ли у самой базы огня что-то. Когда вы отправляете «Полезную информацию для уведомлений» с консоли firebase, если приложение не находится на переднем плане, на панели уведомлений не отображается, поэтому должен быть способ сделать это.
возможно [это SO сообщение] (http://stackoverflow.com/a/39589766/5015207) полезно? – 0X0nosugar
спасибо, хотя андроид.permission.GET_TASKS - это устаревшее разрешение, на которое я верю. скажите мне, если я ошибаюсь. Я даже не вижу его в списке permssions больше. и im поддерживает api 19, поэтому я не могу использовать getAppTasks(); знаете ли вы, что android.permission.GET_TASKS - опасное разрешение? – j2emanue
Код фрагмента Juozas Kontvainis, похоже, не нуждается в каком-либо разрешении. Полагаю, это потому, что он просто пытается получить информацию о своем собственном приложении. – 0X0nosugar