Получение аргументов для начала назначения навигации из уведомления FCM

# #android #firebase-cloud-messaging

Вопрос:

У меня есть график навигации, который начинается с определенного фрагмента, который принимает один аргумент startingId

по умолчанию внутри моего графика я установил его значение равным 0

до сих пор разработчики бэкенда присылали мне уведомления, которые содержали только data такие:

 "data" : {
    "startingId" : 3
}
 

это означало бы, что он всегда запускает мое приложение (даже если оно находится в фоновом режиме), и я бы создал уведомление с ожидающим намерением, которое загрузило бы мое приложение с правильными параметрами

к сожалению, приложение стало кроссплатформенным, и теперь они должны отправлять мне сообщения FCM примерно так:

 "notification" : {
    "title_loc_key" : "start_changed"
    "body_loc_key" : "start_changed_body"
    "android_channel_id" : "updates"
}
"data" : {
    "startingId" : 3
}
 

это означает, что когда пользователь нажимает на уведомление, пока мое приложение находится в фоновом режиме, приложение запустится с набором параметров startingId -> 3 в качестве параметров

но я не могу использовать этот пакет в своем стартовом фрагменте

вместо этого я делаю во фрагменте что-то вроде этого:

 private val startingId by lazy { activity.intent?.extras?.getValue("startingId")?.toString()?.toIntOrNull()?: 0 }
 

и я удалил startingId аргумент из своего начального фрагмента

есть ли способ создать уведомление, которое передаст полезную нагрузку «данные» в мой начальный фрагмент назначения, как я сделал бы только с объектом json «данные»? или я застрял с получением значения из намерения действия?

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

1. Есть ли причина, по которой вы не передаете данные в начальный пункт назначения ?

2. Это то, что я делал со своим ожидающим намерением, к сожалению, теперь намерение создается уведомлением, и когда мое приложение находится в фоновом режиме, я не могу повлиять на него

3. и под этим я подразумеваю, что объект data json доступен для моей деятельности, но не для моего начального пункта назначения, когда приложение запускается из уведомления

4. Я в замешательстве. Документы, на которые я ссылался, конкретно касаются выполнения любой предварительной обработки, которую вы хотите, на уровне действия (т. Е. На уровне, которому принадлежит все NavHostFragment ), а затем передачи именно тех аргументов, которые вы хотите, в пункт назначения запуска. Это не имеет ничего общего с подвесными замыслами или чем-то подобным.

5. о, так вы имеете в виду, что я мог бы использовать само действие для передачи аргументов из уведомления, вместо того, чтобы ожидать, что уведомление выполнит работу, я об этом не подумал, вы правы, это должно сработать, спасибо