Функция уведомления не работает при нажатии на уведомление - PullRequest
0 голосов
/ 23 февраля 2019

Я работаю над приложением, в котором пользователь получает уведомление, когда владелец магазина отправляет ему счет, и для этого я использую Firebase Cloud Messaging.Я получаю уведомление, но когда я нажимаю на уведомление, оно не перенаправляет меня на действие, которое я упомянул в методе намерений, вместо того, чтобы выполнять это действие, оно приводит меня к Launcher Activity + Main Activity, потому что мое действие запуска - заставка, и оно перенаправляетк основной деятельности.Пожалуйста, помогите мне с намерением уведомления, я нахожусь на последней фазе этого приложения.

Это MyFirebaseMessaging.java

public class MyFirebaseMessaging extends FirebaseMessagingService {

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

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){

        sendNotification26API(remoteMessage);


    }else {

        sendNotification(remoteMessage);

    }

}

private void sendNotification26API(RemoteMessage remoteMessage) {

    RemoteMessage.Notification notification = remoteMessage.getNotification();
    String title = notification.getTitle();
    String content = notification.getBody();
    int requestID = (int) System.currentTimeMillis();
    Intent intent = new Intent(this, MyBookings.class);

    // I have used this too
    intent.putExtra(common.CONSUMER_TEXT, common.currentUser.getPhone());
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    //

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

    PendingIntent pendingIntent = PendingIntent.getActivity(this,requestID,intent,PendingIntent.FLAG_UPDATE_CURRENT);
    Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    NotificationHelper helper = new NotificationHelper(this);
    Notification.Builder builder = helper.getChannelNotification(title,content,pendingIntent,uri);

    helper.getManager().notify(new Random().nextInt(),builder.build());

}

private void sendNotification(RemoteMessage remoteMessage) {

    RemoteMessage.Notification notification = remoteMessage.getNotification();
    Intent intent = new Intent(this, MyBookings.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent pendingIntent = PendingIntent.getActivity(this,12,intent,PendingIntent.FLAG_ONE_SHOT);

    Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(notification.getTitle())
            .setContentText(notification.getBody())
            .setAutoCancel(true)
            .setSound(uri)
            .setContentIntent(pendingIntent);
    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(0,builder.build());


}

, и это вспомогательный класс для уведомлений выше API 26

public class NotificationHelper extends ContextWrapper {

private static final String MY_CHANNEL_ID ="xyz.hashtagweb.XXXXXX.XXXXXX";
private static final String MY_CHANNEL_NAME ="XXXXXXX";

private NotificationManager manager;

public NotificationHelper(Context base) {
    super(base);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
    {
        createChannel();
    }
}

@TargetApi(Build.VERSION_CODES.O)
private void createChannel() {

    NotificationChannel channel = new NotificationChannel(MY_CHANNEL_ID,
            MY_CHANNEL_NAME,
            NotificationManager.IMPORTANCE_DEFAULT);
    channel.enableLights(false);
    channel.enableVibration(true);
    channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);

    getManager().createNotificationChannel(channel);

}

public NotificationManager getManager() {

    if (manager == null )
    {
        manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    }

    return manager;
}

@TargetApi(Build.VERSION_CODES.O)
public Notification.Builder getChannelNotification(String title, String body, PendingIntent contentIntent, Uri sound){





    return new Notification.Builder(getApplicationContext(),MY_CHANNEL_ID)
            .setContentIntent(contentIntent)
            .setContentTitle(title)
            .setContentText(body)
            .setStyle(new Notification.BigTextStyle().bigText(body))
            .setSmallIcon(R.mipmap.ic_launcher)
            .setSound(sound)
            .setAutoCancel(false);
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...