Push-уведомление Firebase? - PullRequest
       5

Push-уведомление Firebase?

0 голосов
/ 24 сентября 2018

В моем приложении реализовано push-уведомление firebase, приложение также показывает push-уведомление.Но моя проблема в том, что я могу отправлять push-уведомления разных типов по разным темам.

Пример - 1. Если я отправляю push-уведомление в App Update, то, щелкнув это уведомление пользователем, он долженбыть перенаправленным в PlayStore

Если я отправляю push-уведомление о Новом контенте, то после нажатия пользователем этого уведомления он должен быть перенаправлен на MainActivity приложения

Если я отправляюpush-уведомление о новом конкурсе, затем, нажав на это уведомление пользователем, он должен быть перенаправлен в приложение ContestActivity

Я реализовал его с помощью приведенного ниже кода в классе "MessageReceiver" как -

public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        String title = remoteMessage.getNotification().getTitle();
        String message = remoteMessage.getNotification().getBody();

        showNotifications(title, message);
    }
private void showNotifications(String title, String msg) {
        Intent i = null;

        if(title.equals("DoUp Now - Update")){
            Uri uri = Uri.parse("https://play.google.com/store/apps/details?id=com.s2s.doupnow"); // missing 'http://' will cause crashed
            i = new Intent(Intent.ACTION_VIEW, uri);
        }
        else if(title.equals("DoUp Now - New Content")){
            i = new Intent(this, MainActivity.class);
        }
        else if(title.equals("DoUp Now - New Notification")){
            i = new Intent(this, NotificationActivity.class);
        }

        PendingIntent pendingIntent = PendingIntent.getActivity(this, REQUEST_CODE,
                i, PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationManager mNotifyManager;
        NotificationCompat.Builder mBuilder, mBuilderOld;

        final int NOTIFICATION_ID = 1;
        final String NOTIFICATION_CHANNEL_ID = "my_notification_channel";

        mNotifyManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "My Notifications", NotificationManager.IMPORTANCE_HIGH);

            // Configure the notification channel.
            notificationChannel.setDescription("Channel description");
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
            notificationChannel.enableVibration(true);
            mNotifyManager.createNotificationChannel(notificationChannel);

            mBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
            mBuilder.setContentTitle(title)
                    .setContentText(msg)
                    .setSmallIcon(R.drawable.doupnowlogo)
                    .setOnlyAlertOnce(true)
                    .setContentIntent(pendingIntent);

            mNotifyManager.notify(NOTIFICATION_ID, mBuilder.build());
        }
        else
        {
            mBuilderOld = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
            mBuilderOld.setContentTitle(title)
                    .setContentText(msg)
                    .setSmallIcon(R.drawable.doupnowlogo)
                    .setOnlyAlertOnce(true)
                    .setContentIntent(pendingIntent)
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setPriority(NotificationManager.IMPORTANCE_MAX);

            mNotifyManager.notify(NOTIFICATION_ID, mBuilderOld.build());
        }
    }

Но при нажатии на любое уведомление пользователя, он всегда перенаправляется только в MainActivity приложения.

Может кто-нибудь направить меня туда, где я пропал.

1 Ответ

0 голосов
/ 24 сентября 2018
  1. Если вы сравниваете заголовок с помощью API, вы должны проверить заголовок с помощью JSON объекта, подобного этому.

    JSONObject data = json.getJSONObject ("data");

        String title = data.getString("title");
        String message = data.getString("message");
    
  2. Убедитесь, что получаемый вами заголовок равен заголовку, который вы сравниваете, и добавьте флаги в намерение.

    intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

...