2014-10-28 5 views
13

Мое приложение получает push-уведомления хорошо, когда приложение закрыто. Но когда приложение работает, я ничего не получаю. Это тот же код, который я использовал в предыдущих приложениях без каких-либо проблем, которые были на WindowsPhone8, а новые приложения работают на устройствах WindowsPhone8.1.PUSH не отображается, когда приложение открыто

Я использовал это Push Tutorial, когда сделал оригинальное приложение. У меня есть строка, в которой говорится об этом, если вы хотите получать уведомления, пока приложение открыто.

Если обновление 8.1 сделало что-то для push-уведомлений, которые было бы полезно знать. Все остальное было бы также оценено.

HttpNotificationChannel pushChannel; 
string channelName = "PushChannel"; 
pushChannel = HttpNotificationChannel.Find(channelName); 
//Push Notifications 
if (pushChannel == null) 

{ 
    pushChannel = new HttpNotificationChannel(channelName); 

    //// Register for all the events before attempting to open the channel. 
    pushChannel.ChannelUriUpdated += 
     new EventHandler<NotificationChannelUriEventArgs>(
     PushChannel_ChannelUriUpdated); 
    pushChannel.ErrorOccurred += 
     new EventHandler<NotificationChannelErrorEventArgs>(
     PushChannel_ErrorOccurred); 

    // Register for this notification only if you need to receive 
    // the notifications while your application is running. 
    pushChannel.ShellToastNotificationReceived += 
     new EventHandler<NotificationEventArgs>(
     PushChannel_ShellToastNotificationReceived); 

    pushChannel.Open(); 

    // Bind this new channel for toast events. 
    pushChannel.BindToShellToast(); 

} 
else... 



void PushChannel_ShellToastNotificationReceived(object sender, 
                 NotificationEventArgs e) 

{ 
    string relativeUri = string.Empty; 

    // Parse out the information that was part of the message. 
    foreach (string key in e.Collection.Keys) 

    { 
     if (string.Compare(
     key, 
     "wp:Param", 
     System.Globalization.CultureInfo.InvariantCulture, 
     System.Globalization.CompareOptions.IgnoreCase) == 0) 

     { 
      relativeUri = e.Collection[key]; 
     } 


    } 
} 
+0

Просьба указать код. Вы используете MPNS или WNS? – Fred

+0

Добавлен код. Остальное переходит к простому добавлению обработчиков событий к уже существующему PushChannel. – Seige

+0

Короче говоря, ShellToastNotificationReceived не стреляет. Не так ли? – fillobotto

ответ

2

Робы Каплан:

Тосты не ожидаются, будет отображаться, когда приложение находится на переднем плане. Ожидается, что приложение покажет свой собственный интерфейс, если это необходимо (ваш фрагмент ничего не показывает). Это событие ShellToastNotificationReceived для: оно срабатывает, когда появляется уведомление тоста вместо тоста. Можете ли вы подтвердить, что ShellToastNotificationReceived не возникает, когда вы ожидаете тоста? Должен быть. Можете ли вы подтвердить, что он зарегистрирован и получен (или нет) в отладчике? См msdn.microsoft.com/en-us/library/windows/apps/...

Me:

До обновления 8.1, когда открытое приложение получает PUSH, гренки все еще будет. Я только что проверил, и, конечно же, событие PushChannel_ShellToastNotificationReceived все еще запущено, но тост не отображается. Думаю, это просто означает, что мне нужно справляться с этим по-другому. Если вы хотите превратить это в ответ, я могу наградить его щедростью.

Смежные вопросы