Приложение UWP c# с двумя доступными прослушивателями onActivated — активация по уведомлению

В настоящее время в моих приложениях я регистрирую прослушиватель onActivated для выполнения и проверки моей активности обмена, например:

        Window.Current.Activated += Current_Activated;

с помощью следующего метода для проверки состояния активации:

private async void Current_Activated(object sender, Windows.UI.Core.WindowActivatedEventArgs e)
        {
if (e.WindowActivationState == CoreWindowActivationState.Deactivated)
            {

            }
            else
            {}                       }

Теперь я хотел бы реализовать активацию из уведомления от фоновой задачи. Щелчок по уведомлению в настоящее время открывает приложение или переводит его на передний план, если оно уже открыто. Это стандартное поведение. Теперь я хотел бы выполнить некоторый код при активации с помощью уведомления, но мой метод никогда не вызывается, и я не совсем понимаю онлайн-материал Microsoft, поскольку он кажется относительно простым.

Я регистрирую слушателя как таковой:

        (Application.Current as App).Activated = new EventHandler<IActivatedEventArgs>(App_Activated);

и метод, который никогда не вызывается, выглядит так:

private void App_Activated(object sender, IActivatedEventArgs e)
        {                                                        }

Эти двое противоречат друг другу? Есть ли что-то, что я могу сделать, чтобы реализовать активацию уведомлений в моем существующем методе?

Я прочитал эту и многие другие страницы: https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/07/08/quickstart-sending-a-local-toast-notification-and-обработка-активаций-от-ит-окна-10/

Даже из тестового приложения, которое я скачал, я не очень понимаю, что нужно делать. Кроме того, мне не нужно передавать какую-либо информацию из уведомления в основное действие. Просто откройте его и выполните одну команду обновления страницы, но только при активации уведомления.


person SunnySonic    schedule 05.10.2016    source источник


Ответы (2)


Вы должны просто переопределить метод OnActivated(IActivatedEventArgs args) в своем App.xaml.cs и проверить, является ли свойство args.Kind ActivationKind.ToastNotification.

Дополнительную информацию об обработке активации приложения UWP можно найти здесь.

person Marian Dolinský    schedule 05.10.2016
comment
ахххх. Это оно. Я не знал, что мне нужно переопределить его в app.xaml.cs. Я попытался переопределить его на главной странице приложения. Благодарность - person SunnySonic; 06.10.2016

Как сказал Мариан, вам нужно переопределить метод OnActivated в вашем классе App.xaml.cs. Метод OnActivated вызывается при нажатии вашего всплывающего уведомления и содержит аргументы всплывающего уведомления, чтобы вы знали, какое всплывающее уведомление было нажато. Обратите внимание, что вы должны выполнить ту же инициализацию Frame в OnActivated, что и в OnLaunched, поскольку, если пользователь нажимает всплывающее уведомление, когда ваше приложение закрыто, будет вызываться только метод OnActivated — выиграл OnLaunched. нельзя называть.

В этом кратком руководстве подробно объясняется, как обрабатывать активацию всплывающих уведомлений, и приведен полный пример кода: Краткое руководство: отправка локального всплывающего уведомления

person Community    schedule 05.10.2016