Windows Phone 8 push-уведомление push-канал всегда создает новый канал
Я хотел проверить правильность моей реализации push-уведомлений.
Каждый раз, когда я открываю свое приложение (на самом деле я регистрирую push-канал только на определенной странице, поэтому каждый раз, когда я возвращаюсь с этой страницы назад), создается новый URI push-канала, который я сохраняю в своей базе данных мобильных сервисов для отправки Push-уведомления для. Мне это не кажется правильным, так как каждый раз, когда приложение / страница открывается, генерируется новый URI push-канала, и поэтому список URI канала просто растет и увеличивается для каждого устройства, которое использует мое приложение. Я бы предположил, что вы создаете push-канал, сохраняете канал URI и нажимаете на него по мере необходимости. Я отмечу здесь, что я использую необработанные push-уведомления.
Я понимаю, что push-каналы истекают очень часто, но для меня это происходит каждый раз, когда я возвращаюсь из приложения / страницы, и поэтому, когда вызывается onNavigateTo, я нахожу push-канал, который существует, и всегда создается новый URI канала. Это верно?
Мой код выглядит следующим образом:
защищенное переопределение void OnNavigatedTo (NavigationEventArgs e) {registerPushChannel (); }
private void registerPushChannel()
{
// The name of our push channel.
string channelName = "RawSampleChannel";
// Try to find the push channel.
pushChannel = HttpNotificationChannel.Find(channelName);
// If the channel was not found, then create a new connection to the push service.
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);
pushChannel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(PushChannel_HttpNotificationReceived);
pushChannel.Open();
}
else
{
// The channel was already open, so just register for all the events.
pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);
pushChannel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(PushChannel_HttpNotificationReceived);
// code which passes the new channel URI back to my web service
}
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
pushChannel.Close();
}
Таким образом, чтобы уточнить, приложение открыто и push-канал зарегистрирован, и канал uri сохранен в моем веб-сервисе. Затем веб-служба отправляет уведомления на канал URI. Когда я выхожу из приложения или страницы и возвращаюсь к нему, канал push-уведомлений обнаруживается, но создается новый канал URI, который я снова сохраняю в своем веб-сервисе. Моя таблица каналов фактически продолжает расти и расти.
Так это то, как он должен работать с постоянно генерируемыми URI новых каналов? Это вроде не имеет смысла для меня. Я не уверен, как работают уведомления toast и tile, но я бы предположил, что URI канала должен быть статическим, когда приложение закрывается, чтобы продолжать получать уведомления, пока приложение закрыто, но, возможно, это может быть функциональность bindtotoast и bindtotile и т. Д. то, что я делаю, правильно, потому что это связано с необработанными уведомлениями.