Я работаю с FCM, и согласно документации «уведомление доставляется на системный лоток устройства». Итак, как присоединить ожидающее намерение или зарегистрировать широковещательную/обратную связь, когда сообщение уведомления отклоняется пользователем?Как получить трансляцию или обратный вызов, когда сообщение уведомления fcm уволено пользователем?
Есть ли способ сделать это? Или я должен использовать сообщения данных и строить уведомление вручную с ожидающим намерения получать трансляцию, если уведомление отклонено?
EDIT - Решение
public class NotificationListener extends NotificationListenerService {
private boolean isSafeToExecute, isNotificationAccessEnabled;
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
super.onNotificationPosted(sbn);
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
Log.e("removed", sbn.getNotification().getClass().getSimpleName());
}
@Override
public void onListenerConnected() {
super.onListenerConnected();
isSafeToExecute = true;
}
@Override
public void onListenerDisconnected() {
super.onListenerDisconnected();
isSafeToExecute = false;
}
@Override
public IBinder onBind(Intent mIntent) {
IBinder mIBinder = super.onBind(mIntent);
isNotificationAccessEnabled = true;
return mIBinder;
}
@Override
public boolean onUnbind(Intent mIntent) {
boolean mOnUnbind = super.onUnbind(mIntent);
isNotificationAccessEnabled = false;
return mOnUnbind;
}
}
выше один работает. Я ранее не переоценил onBind и OnUnbind, что вызвало проблему. Попросите пользователя предоставить доступ к уведомлениям, если не предоставлен, эта ссылка поможет. Check if user has granted NotificationListener access to my app
Привет, вы использовали службу NotificationListenerService с уведомлениями FCM? – Debanjan
Да, проверьте эту ссылку для получения дополнительной информации, https://developer.android.com/reference/android/service/notification/NotificationListenerService.html –
Я пробовал, но я не получаю уведомление, когда уведомление fcm отклонено или onNotificationPosted. Нужно ли запускать сервис вручную, используя startService(), или намерение это сделает? Я сделал точно как ссылку. Еще одна вещь, когда я перехожу в Настройки-> Безопасность-> Доступ к уведомлению, Он не показывает мое приложение, вместо этого он показывает «Никакие приложения на этом устройстве не способны читать уведомления» – Debanjan