WP8.1 / Фоновая задача для Raw Notify / Отладчик в порядке -> НЕ на устройстве

Я пытаюсь реализовать фоновую задачу для необработанного уведомления на wp8.1.

Я читал документацию в MSDN и других интернет-ресурсах.

Мое приложение работает с подключенным отладчиком. Необработанное сообщение обрабатывается, если приложение находится на переднем плане, в фоновом режиме и даже если активирован экран блокировки.

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

Что я сделал:

Сгенерировал проект для моей фоновой задачи

public void Run(IBackgroundTaskInstance taskInstance)

на основе некоторых примеров Microsoft

Установите запись в файле манифеста приложения (объявление, push-уведомление, установка экземпляра)

Используя следующий код, создайте фоновую задачу и откройте канал

BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
PushNotificationChannel newChannel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
string uri = newChannel.Uri;
rawChannel = newChannel;
rawChannel.PushNotificationReceived += OnPushNotificationReceived;

BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();
PushNotificationTrigger trigger = new PushNotificationTrigger();
taskBuilder.SetTrigger(trigger);

taskBuilder.TaskEntryPoint = "BPRERAW.clsRaw";
taskBuilder.Name = "clsRaw";
BackgroundTaskRegistration task = taskBuilder.Register();

Помещая точку останова в фоновый класс, при запуске точка останова не активна. При установке триггера push-уведомления, как описано выше, точка останова помечается как активная.

!! Тестирование приложения в отладчике путем получения необработанного сообщения о том, что точка останова не достигнута!! Я трачу на это часы, но не нашел никакого решения.

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

При переключении обратно на задачу push-уведомлений точка останова не сработала. Необработанная фоновая задача никогда не отображается в раскрывающемся списке жизненного цикла! Я думаю, что это основная проблема.

Надеюсь, у кого-нибудь есть подсказка или идея.

Спасибо, Оливер.


person Oliver    schedule 01.12.2014    source источник
comment
Наконец, я сам ответил на вопрос с помощью Эрика Флека: вы можете следить за всем обсуждением на social.msdn.microsoft.com/Forums/windowsapps/en-US/   -  person Oliver    schedule 10.12.2014


Ответы (1)


С сайта MSDN вы не можете отлаживать BackgroundTask при использовании PushNotificationTrigger.

Запустите фоновую задачу, используя раскрывающееся меню приостановки, доступное на панели инструментов «Место отладки». В этом раскрывающемся списке отображаются имена фоновых задач, которые могут быть активированы Visual Studio. Чтобы это работало, фоновая задача должна быть уже зарегистрирована и все еще должна ожидать триггера. Например, если фоновая задача была зарегистрирована с помощью одноразового триггера TimeTrigger и этот триггер уже сработал, запуск задачи через Visual Studio не будет иметь никакого эффекта.

Note Фоновые задачи, использующие ControlChannelTrigger или PushNotificationTrigger, и фоновые задачи, использующие SystemTrigger с типом триггера SmsReceived, не могут быть активированы таким образом.

https://msdn.microsoft.com/en-us/library/windows/apps/jj542415.aspx

person t4nhpt    schedule 15.04.2015
comment
Спасибо за ваш ответ. Я действительно не нашел эту запись MSDN. - person Oliver; 16.04.2015