我想檢查推送通知實施是否正確。Windows Phone 8推送通知推送通道始終創建新通道uri
每當我打開我的應用程序(實際上我只在特定頁面上註冊推送通道,所以每次我從該頁面來回移動時)都會創建一個新的推送通道URI,並將其存儲在我的移動設備中服務數據庫發送推送通知。這對我來說似乎並不正確,因爲每次打開應用程序/頁面時都會生成新的推送通道URI,因此每個使用我的應用程序的設備的通道URI列表只是增長和增長。我假設你創建一個推送頻道,存儲頻道URI並根據需要推送它。我會在這裏記下我正在使用原始推送通知。
我知道推送頻道每隔一段時間就會過期,但對我而言,每當我退出應用程序/頁面時都會發生這種情況,因此當onNavigateTo被調用時,我發現存在的推送頻道以及始終存在的新頻道URI創建。它是否正確?
我的代碼如下:
保護覆蓋無效的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();
}
所以要澄清,該應用程序被打開,推註冊頻道和頻道URI是保存在我的Web服務。 Web服務然後將通知發送到通道uri。當我退出應用程序或頁面並返回時,會發現推送頻道,但會創建一個新頻道uri,然後再次保存到我的網絡服務。我的頻道表實際上保持增長和增長。
那麼,這是應該如何處理新的渠道URI不斷產生?這對我來說沒有意義。我不知道如何吐司和磁貼通知工作,但我會假設渠道URI需要是靜態時,應用程序關閉,以保持接收通知,而應用程序關閉,但也許這可能是一個功能bindtotoast和bindtotile等我正在做的是正確的,因爲這是與原始通知。
我正在努力與'PushChannel_ChannelUriUpdated'實際投入。你能舉個例子嗎? – creatiive