WedX - журнал о программировании и компьютерных науках

Назначение NavDeepLinkBuilder игнорируется, когда приложение не на переднем плане

Я использую NavDeepLinkBuilder для создания ожидающего намерения для push-уведомления, чтобы открыть приложение в определенном месте назначения.

        return NavDeepLinkBuilder(this)
                .setComponentName(MainActivity::class.java)
                .setGraph(R.navigation.main_navigation)
                .setDestination(destinationId)
                .setArguments(args)
                .createPendingIntent()

Когда приложение находится на переднем плане, уведомление будет перемещаться к месту назначения, установленному в ожидающем намерении, созданном NavDeepLinkBuilder. ????

Однако, когда приложение не находится на переднем плане, уведомление будет переходить только к MainActivity и игнорировать место назначения, установленное в NavDeepLinkBuilder. ????

Примечание. Ожидающее намерение и уведомление встроены в службу, расширяющую FirebaseMessagingService.


  • Я наблюдаю такое же поведение. Я не могу понять, является ли это ошибкой компонента навигации или чем-то еще в уведомлении. 23.11.2019
  • @YellowJ Извините, я не могу на 100% вспомнить свое решение, и у меня больше нет доступа к коду. Но я помню, что это как-то связано с атрибутами Activity LauchMode. Если вы столкнулись с подобными проблемами, может быть, вы можете попробовать изучить это? Извините, что не слишком помог. 05.09.2020

Ответы:


1

Да, если вы используете firebase, вы можете столкнуться с таким поведением. Проблема в том, что ваш метод onMessageRecived() никогда не срабатывает, когда ваше приложение работает в фоновом режиме. В этих случаях вы получите сообщение firebase не в onMessageRecived(), а в MainActivity(). Просто проверьте свое намерение в методе onCreate(), как я описал в моем собственном вопрос здесь, в блоке редактирования

14.05.2021

2

Щелчки уведомлений в конечном итоге ведут себя по-разному, когда приложение находится в фоновом режиме.

Пользователь, нажав на уведомление, по умолчанию открывает панель запуска приложений. В этих случаях уведомление доставляется в системный трей устройства, а полезная нагрузка данных доставляется в дополнительных целях вашего действия запуска.

См.: https://firebase.google.com/docs/cloud-messaging/android/receive#backgrounded

В конечном итоге вам придется просмотреть дополнительные сведения о намерениях ваших основных действий, чтобы получить информацию об уведомлениях. В некоторых случаях, если вы добавили click_action в свое push-уведомление, вам нужно будет добавить его в список фильтров намерений.

Я добавил следующие действия фильтра намерений в свой основной блок фильтра намерений действий:

        <intent-filter>
            <action android:name=".HomeActivity" />

            <category android:name="android.intent.category.DEFAULT" />

            ... Rest of your actions
        </intent-filter>

Это позволило мне затем извлечь информацию об уведомлениях в моей HomeActivity.

23.11.2019
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]