locked
[UWP][W10M] Не могу получить Toast уведомление RRS feed

  • Общие обсуждения

  • Здравствуйте, перенес я свое приложение на UWP W10M с Windows Phone 8.1. После чего появилась проблема с получением Toast уведомлений. 
    Открываю я канал, получаю ссылку канала, отправляю её на сервер (отсылаю в ВК для получения уведомлений). 
    Tile и Badge уведомления приходят, но вот Toast не хочет ни в какую.

    Подскажите, как с этим бороться? Может в Package.appxmanifest ввели какой-то новый вгал, о котором я не знаю?
    13 января 2016 г. 0:27

Все ответы

  • Здравствуйте,

    Вполне возможно. Здесь во втором разделе описано про Package: Quickstart: Sending a local toast notification and handling activations from it (Windows 10)

    Также, надеюсь будет полезным: Adaptive and interactive toast notifications for Windows 10


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


    13 января 2016 г. 11:46
  • Дело в том если делать Toast уведомление из самого приложения (не через WNS канал), то уведомление показывается. Но вот когда мне отсылают уведомление по WNS каналу - оно не показывается.
    13 января 2016 г. 13:18
  • Вы подписаны на тригер, чтобы получать обновления по действиям с локального клиента через ToastNotificationHistoryChangedTrigger? Или вы пытаетесь получить какую-то другую информацию?

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

    13 января 2016 г. 14:45
  • Да, Я зарегистрировал background task, выставил триггер ToastNotificationHistoryChangedTrigger, в Package.appxmanifest в Declarations также зарегистрировал Background task, выставил Supported task type: System, PushNotifications, прописал EntryPoint.

    После этого открываю канал так: 
    var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

    из канала получаю ссылку типа Uri = https://db5.notify.windows.com/?token=AwYAAAA..... 

    И отправляю эту ссылку на сервер. 

    Но проблема в том, что фоновая задача не срабатывает никогда. 

    А разве отображение Toast уведомлений возможно только с background task?

    13 января 2016 г. 15:58
  • Push уведомления очень капризная штука... Не заметила в перечисление на подписку получения уведомлений в канале... Что-то типа:

    //обработчик канала уведомлений при открытой программе
            private void OnPushNotification(PushNotificationChannel sender, PushNotificationReceivedEventArgs e)
            {
                //получаем текст Push
                String notificationContent = String.Empty;
                switch (e.NotificationType)
                {
                    case PushNotificationType.Badge: notificationContent = e.BadgeNotification.Content.GetXml(); break;
                    case PushNotificationType.Tile: notificationContent = e.TileNotification.Content.GetXml(); break;
                    case PushNotificationType.Toast: notificationContent = e.ToastNotification.Content.GetXml(); break;
                    case PushNotificationType.Raw: notificationContent = e.RawNotification.Content; break;
                }
                //не обрабатывать сообщение в фоне.
                e.Cancel = true;
                ***
            }
    Значение "e.Cancel = true;" говорит программе не передавать данные фоновой задачи. Это происходит, если приложение находится на переднем плане. Если не активно, то уведомление передается фоновой задачи. Одна из моих проблем была в том, что при передаче ссылки, она частично изменялась при перекодировке во время отправки в интернет и раскодировке при получении. Проверьте идентичность Uri...



    • Изменено Liliya Muray 13 января 2016 г. 19:13
    13 января 2016 г. 19:12
  • Спасибо, но также не работает.

    Вот код, который использую.

    public async void GetChannel()
            {
                   var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
                channel.PushNotificationReceived += Channel_PushNotificationReceived;
                   VKMethods.SubscribePushNotifications(channel.Uri);
                   UnregisterBackgroundTask();
                   RegisterBGTask();
                   sended = true;
            }
    Регистрирую фоновую задачу:
     private void RegisterBGTask()
            {
                VKExecute.ExecuteOnUIThread(async() =>
                {
                    try
                    {
                        BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
    
                        // Construct the background task
                        BackgroundTaskBuilder builder = new BackgroundTaskBuilder()
                        {
                            Name = "BGTaskForNotifications",
                            TaskEntryPoint = "PushHundler.PushHundler"
                        };
    
                        builder.SetTrigger(new ToastNotificationHistoryChangedTrigger());
                        BackgroundTaskRegistration registration = builder.Register();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine("Exception!");
                    }
                });
            }
    Код самой фоновой задачи:
    BackgroundTaskDeferral deferral;
            public void Run(IBackgroundTaskInstance taskInstance)
            {
                deferral = taskInstance.GetDeferral();
                var notificationXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText03);
                var toeastElement = notificationXml.GetElementsByTagName("text");
                toeastElement[0].AppendChild(notificationXml.CreateTextNode("This is Notification Message1"));
                toeastElement[1].AppendChild(notificationXml.CreateTextNode("This is second line Notification1"));
                var toastNotification = new ToastNotification(notificationXml);
                ToastNotificationManager.CreateToastNotifier().Show(toastNotification);
            }
    Ну и в манифесте:
    <Extension Category="windows.backgroundTasks" Executable="MyVKclient.exe" EntryPoint="PushHundler.PushHundler">
              <BackgroundTasks>
                <Task Type="controlChannel" />
                <Task Type="systemEvent" />
                <Task Type="pushNotification" />
              </BackgroundTasks>
            </Extension>


    Беда в том, что вообще никакой Toast не приходит. При запущенном приложении в Channel_PushNotificationReceived Приходит только Tile. 


    13 января 2016 г. 19:57
  • Здравствуйте,

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


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

    14 января 2016 г. 7:23