WP8.1 silverlight — событие, активированное уведомлением, не вызывается

Я работаю над приложением Silverlight для Windows Phone 8.1, обработкой необработанных уведомлений.

Приложение, когда получает уведомления на переднем плане, должно отменить уведомление и создать новое уведомление, используя ToastNotificationManager.CreateToastNotifier().

Он также имеет backgroundtask для работы с необработанными уведомлениями, полученными в фоновом режиме, который преобразует полученные необработанные уведомления во всплывающие уведомления с помощью ToastNotificationManager.CreateToastNotifier()..

Также необходимо выполнить какое-то действие A при нажатии на это уведомление.

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

Это кажется ограничением для WP8.1 silverlight приложений. Может кто подскажет решение этой проблемы??


person Tulika    schedule 16.08.2016    source источник
comment
Под уведомлением RAW вы на самом деле имели в виду уведомление RAW или Toast (это 2 разных типа уведомлений в WP.   -  person ad1Dima    schedule 16.08.2016
comment
Я имел в виду только необработанные уведомления, так как в WP8.1 фоновые задачи запускаются только необработанными уведомлениями.   -  person Tulika    schedule 16.08.2016


Ответы (1)


Если вам нужно выполнить какое-либо действие после нажатия на Toast, вы должны добавить wp:Param в свой Toast с глубоким URL-адресом и дескриптором в своем приложении. Тост будет выглядеть так

<wp:Notification xmlns:wp=\"WPNotification\">
    <wp:Toast>
        <wp:Text1>You title</wp:Text1>
        <wp:Text2>Your subtitle</wp:Text2>" +
        <!-- You can add any parameter you want in deep url -->
        <wp:Param>/Page2.xaml?NavigatedFrom=Toast Notification</wp:Param>
    </wp:Toast>
</wp:Notification>

Когда вы нажимаете на тост, он по умолчанию открывает Page2.xaml вашего приложения и передает ему параметры uri.

person ad1Dima    schedule 16.08.2016
comment
Хорошо, но почему нельзя перейти на страницу 2 из события Activated? Является ли это ограничением для приложений Silverlight WP8.1? - person Tulika; 16.08.2016
comment
@Tulika, я не понимаю твоей цели - person ad1Dima; 16.08.2016
comment
В настоящее время логика выполнения действия A выполняется из активированного события для всплывающего уведомления либо из переднего плана, либо из фоновой задачи. Альтернатива, которую вы предложили, требует, чтобы я добавил параметр в тост xml, мой вопрос: можем ли мы не выполнить действие A только из активированного события тоста? - person Tulika; 16.08.2016
comment
@Tulika ты пробовал это мероприятие? msdn.microsoft. com/en-us/library/windows/apps/xaml/ - person ad1Dima; 16.08.2016
comment
Да, я использую только это активированное событие. Но, как упоминалось в вопросе, проблема касается только одного сценария, когда всплывающее уведомление отображается на переднем плане, поэтому активированное событие, которое было привязано к всплывающему уведомлению, было упомянуто в логике FG, но всплывающее уведомление нажимается, когда приложение находится в BG. - person Tulika; 16.08.2016
comment
@Tulika А когда ты подпишешься на это событие? MSDN говорит, что вы должны сделать это в Application_Activated или ранее. - person ad1Dima; 16.08.2016
comment
Давайте продолжим обсуждение в чате. - person Tulika; 16.08.2016