Страницы

Поиск по вопросам

среда, 28 ноября 2018 г.

Firebase Notifications

Я сделал меню, в котором пользователи выбирают какие уведомления они хотят получать.
Уведомления я всегда отправляю с опрделённым ключом: 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("НАЗВАНИЕ ТЕМЫ") // отписать

Комментариев нет:

Отправить комментарий