Я сделал меню, в котором пользователи выбирают какие уведомления они хотят получать.
Уведомления я всегда отправляю с опрделённым ключом: WEB-получать уведомления от сайта, SHOP-от магазина.
С помощью SharedPreference сохраняю значения меню: какие уведомления пользователь хочет получать.
Собственно в FirebaseMessagingService что-то получилось, но он отвечает за получение уведомления на переднем плане, а вот как отследить эти уведомления, когда приложение выключено не знаю.
Есть ли какой способ?
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService implements Constants{
SharedPreferences sp;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
sp = getSharedPreferences(CHECK_SETTINGS,
Context.MODE_PRIVATE);
boolean webSite = sp.getBoolean(notifWebSite, true);
boolean shops = sp.getBoolean(notifShops, true);
if(webSite && shops){
if(remoteMessage.getData().equals("WEB")){
sendNotification(remoteMessage.getNotification().getBody(),remoteMessage.getData().get("WEB"));
}
if (remoteMessage.getData().equals("SHOP")){
sendNotification(remoteMessage.getNotification().getBody(),remoteMessage.getData().get("SHOP"));
}
}
else if(!webSite && !shops){
}
else if(!webSite && shops){
if(remoteMessage.getData().equals("SHOP")){
sendNotification(remoteMessage.getNotification().getBody(),remoteMessage.getData().get("WEB"));
}
}
else if(webSite && !shops){
if(remoteMessage.getData().equals("WEB")){
sendNotification(remoteMessage.getNotification().getBody(),remoteMessage.getData().get("WEB"));
}
}
/*if(remoteMessage.getData().get("URL")==null){
sendNotification(remoteMessage.getNotification().getBody(),URL_HODITE_COM);
}
else{
sendNotification(remoteMessage.getNotification().getBody(),remoteMessage.getData().get("URL"));
}*/
}
private void sendNotification(String body,String url) {
Intent intent=new Intent(this,WebActivity.class);
intent.putExtra(KEY_INTENT,url);
PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
Notification.Builder builder = new Notification.Builder(this);
// оставим только самое необходимое
builder.setContentIntent(pendingIntent)
.setWhen(System.currentTimeMillis()) //Время уведомления
.setSmallIcon(R.mipmap.ico)
.setContentTitle("Hodite")
.setContentText(body); // Текст уведомления
Notification notification = builder.build();
notification.defaults = Notification.DEFAULT_SOUND |
Notification.DEFAULT_VIBRATE;
// ставим флаг, чтобы уведомление пропало после нажатия
notification.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
nm.notify((body+url).hashCode(),notification);
}
}
Ответ
Спасибо @eugeneek, помогли ТЕМЫ
FirebaseMessaging.getInstance().subscribeToTopic("НАЗВАНИЕ ТЕМЫ") // подписать
FirebaseMessaging.getInstance().unsubscribeFromTopic("НАЗВАНИЕ ТЕМЫ") // отписать
Комментариев нет:
Отправить комментарий