2016-02-09 7 views
1

Я хочу контролировать push-уведомления (тосты), поступающие с сервера WNS, до того, как он отобразится на экране. Я могу сделать это на Android, но могу ли я сделать это в Windows Phone .. ??Управление уведомлением Push

+0

, какие действия вы намерены делать? – asitis

+0

Перед тостом появляется на экране. Я хочу сравнить его параметр с некоторым значением, и если он удовлетворяет условию, то я хочу показать уведомление .... Вот строка, которую я отправляю через push-уведомление ....... . " + subject + "" + body + "

ответ

1

вы можете использовать тосты в вашем случае. Оповещения тоста обрабатываются ОС. вы можете получить полезную нагрузку в аргументе запуска в OnLaunched Event of App.

Client sample

Server app, вы можете использовать его для тестирования. Вы также можете использовать эмулятор для тестирования push.

+0

Код внутри OnLaunched Event будет запущен после того, как приложение запустится. Но прежде, чем это уведомление появится на экране ... Я не хочу этого .. Я хочу поймать данные перед тем, как появится уведомление, и решите показать это или нет ..... –

+1

Затем в этом случае используйте необработанное уведомление. Добавьте фоновые задачи и в Run добавьте свою логику и покажите собственный тост. – vITs

+0

Получил это ... Вот что я точно хотел. –

1

Я считаю, что вам требуется необработанное уведомление, это уведомление о том, что ваш телефон работает во время работы приложения.

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

Таким образом, ваша логика будет срабатывать переда на экране IF приложение выполняется появится уведомление.

Если приложение неработает будет регулярно Toast.

Пример:

_channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); 
    _channel.PushNotificationReceived += OnPushNotificationReceived; 

    private void OnPushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args) 
    { 
     switch (args.NotificationType) 
     { 
      case PushNotificationType.Badge: 
       this.OnBadgeNotificationReceived(args.BadgeNotification.Content.GetXml()); 
       break; 

      case PushNotificationType.Tile: 
       this.OnTileNotificationReceived(args.TileNotification.Content.GetXml()); 
       break; 

      case PushNotificationType.Toast: 
       this.OnToastNotificationReceived(args.ToastNotification.Content.GetXml()); 
       break; 

      case PushNotificationType.Raw: 
       this.OnRawNotificationReceived(args.RawNotification.Content); 
       break; 
     } 

     args.Cancel = true; 
    } 

    private void OnBadgeNotificationReceived(string notificationContent) 
    { 
     // Code when a badge notification is received when app is running 
    } 

    private void OnTileNotificationReceived(string notificationContent) 
    { 
     // Code when a tile notification is received when app is running 
    } 

    private void OnToastNotificationReceived(string notificationContent) 
    { 
     // Code when a toast notification is received when app is running 

     // Show a toast notification programatically 

     var xmlDocument = new XmlDocument(); 
     xmlDocument.LoadXml(notificationContent); 
     var toastNotification = new ToastNotification(xmlDocument); 

     //toastNotification.SuppressPopup = true; 
     ToastNotificationManager.CreateToastNotifier().Show(toastNotification); 
    } 

    private void OnRawNotificationReceived(string notificationContent) 
    { 
     // Code when a raw notification is received when app is running 
    } 
+0

У меня вопрос, где, на мой взгляд, я думаю, что я ответу на это, я проведу его позже. У меня есть только один дополнительный вопрос по сравнению с вашим решением. Но вы можете посмотреть на мой вопрос и получить несколько баллов :) http://stackoverflow.com/questions/35460872/depending-on-page-viewed-act-on-toast-notification-wp8-1-silverlight-receiving – JTIM