WNS PushNotificationReceived не перехватывает пуш-уведомления

Я пишу приложение для рабочего стола Windows, которое опирается на уведомления для работы. Однако код обработчика события PushNotificationReceived на канале, похоже, фактически не срабатывает при получении уведомления. Следующий код вызывается для получения канала перед отправкой его URI на мой сервер:

internal async Task<PushNotificationChannel> GetChannel()
    {
        PushNotificationChannel pnc;
        try
        {
            pnc = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
            if (_channel == null || !pnc.Uri.Equals(_channel.Uri))
            {
                _channel = pnc;
                _channel.PushNotificationReceived += OnPushNotificationReceived;
                Debug.WriteLine(_channel.Uri);
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
            _channel = null;
        }
               dispatcher = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher;
        return _channel;
    }

Таким образом, что каждый раз, когда канал создается или обновляется (через другой канал uri), ему следует назначить событие PushNotificationReceived нового канала следующему (которое в основном поднято из примера msdn):

void OnPushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs e)
    {
        string typeString = String.Empty;
        string notificationContent = String.Empty;
        switch (e.NotificationType)
        {
            //
            //other notification types omitted for brevity
            //
            case PushNotificationType.Toast:
                notificationContent = e.ToastNotification.Content.GetXml();
                typeString = "Toast";
                // Setting the cancel property prevents the notification from being delivered. It's especially important to do this for toasts:
                // if your application is already on the screen, there's no need to display a toast from push notifications.
                e.Cancel = true;
                break;
        }

        Debug.WriteLine("Received notification, with payload: {0}", notificationContent);

        string text = "Received a " + typeString + " notification, containing: " + notificationContent;

        var ignored = dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            MainPage.Current.ClearBanner();
        });
    }

Важно отметить, что "MainPage.Current" является ссылкой на главную страницу приложения в виде статической переменной. Четкая строка баннера просто удаляет розовый баннер с главной страницы (просто пытаясь заставить что-то простое начать работу).

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

Есть ли что-то, что я делаю неправильно или какой-то способ отладки самих уведомлений?

0 ответов

Другие вопросы по тегам