Страницы

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

среда, 25 декабря 2019 г.

Firebase Notifications

#android #firebase


Я сделал меню, в котором пользователи выбирают какие уведомления они хотят получать.

Уведомления я всегда отправляю с опрделённым ключом: 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);
    }


}



    


Ответы

Ответ 1



Спасибо @eugeneek, помогли ТЕМЫ. FirebaseMessaging.getInstance().subscribeToTopic("НАЗВАНИЕ ТЕМЫ") // подписать FirebaseMessaging.getInstance().unsubscribeFromTopic("НАЗВАНИЕ ТЕМЫ") // отписать

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

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