Windows Phone 7 開發 31 日談——第19日:推送通知
By Jeff Blankenburg
本文是“Windows Phone 7 開發 31 日談” 系列的第19日。
昨天,我介紹了WebBrowser控制元件,以及如何在程式中使用它。今天,我們來談談可能是這個系列中最重要的話題: 推送通知 。
可能你對推送通知這個概念還不是很熟悉,其實很簡單:不用強制你的應用程式每幾分鐘就去檢查一下伺服器,伺服器在有新資料的時候可以通知你的手機。
為什麼要使用推送通知?
第一個原因,節省使用者的電池電量。檢測伺服器資料很耗電,而在手機中,電池絕對是稀缺資源。你永遠不會有足夠的電量,並且不論你的電池能撐多久,都要儘量避免會使電池續航時間變短的通知。
第二,你可以通過推送通知來告知你的使用者在程式中發生了一些有趣的事,即使程式沒有執行。你還可以提醒使用者應該開啟程式來看看你要告訴他們的事。
推送通知的過程
為了能讓你理解我在下面丟擲來的程式碼,我認為很有必要向你精確地解釋一下這個過程中所發生的事。
- 使用者在手機中首次執行程式時,應用程式會呼叫微軟的推送通知服務 ,請求一個用於通訊的定製URI。
- 當在你的Web Service中激發了一個事件時,你應該向那個URI傳遞資訊(附帶一個特定的負載),然後推送通知服務會以活動瓷磚更新,吐司(Toast)通知或者程式中真實資料的方式將資料傳送到使用者的手機中。
本文就是要講解上述要點如何來做。如果你想看一個可以按部就班構建的例子,請參見Windows Phone開發人員訓練包 。其中有一個非常出色的關於推送通知的教程。
從推送通知服務(Push Notification Service)中獲取定製的URI
非常感謝,微軟將這部分內容做得非常簡單。我們得使用Microsoft.Phone.Notification程式集,不過我還是得用10行程式碼來從推送通知服務中(PNS)獲取一個定製的URI。首先,我得建立一個HttpNotificationChannel。它將自動與PNS通訊(在另一個執行緒中),並且還得通過一個事件來捕獲服務返回的內容。
- HttpNotificationChannel channel;
- void GetPushChannel()
- {
- channel = new HttpNotificationChannel("BLANKENSOFT_" + DateTime.Now.Ticks.ToString());
- channel.ChannelUriUpdated += new EventHandler(channel_ChannelUriUpdated);
- channel.Open();
- }
- void channel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
- {
- Dispatcher.BeginInvoke(delegate
- {
- URIBlock.Text = channel.ChannelUri.ToString();
- });
- }
在這個例子中我得到的URI是這樣的:
http://sn1.notify.live.net/throttledthirdparty/01.00/AAHsLicyiJgtTaiDbJoSgmFiAgAAAAADAwAAAAQUZm52OjlzOEQ2NDJDRkl5MEVFMEQ
一旦你有了URI,就可以在Web Service中儲存它了。Web Service會初始化將要傳送到你手機上的資訊,我們有3種方法來實現:瓷磚(Tile)通知,吐司(Toast)通知和原生通知。
不同的需求,不同的訊息
我剛才提到了你可以向手機傳送3種不同型別的訊息。下面是一個概述:
原生通知(Raw Notification)- 原生通知用於裝置中真正在執行的程式。它允許你在使用者使用時實時更新使用者介面。
吐司通知(Toast Notification) – 無論程式是否在執行都會收到這個訊息,但在程式執行時彈出吐司訊息可能會有點兒討人厭。我會在下面的例子中演示。吐司通知不能更新你程式的資料。想做到這一點還是需要傳遞一個原生通知。
瓷磚通知(Tile Notification) – 如果你的程式被釘在了開始介面中,你可以用瓷磚通知來更新瓷磚。你可以改變背景圖片以及一個0-99的整數。
傳送一個吐司通知
一旦我們得到了推送URI,剩下的就是組合HTTP訊息的事了,然後將訊息傳送給這個URI。下面是程式碼示例:
正如你所見,這部分程式碼很長並且比較複雜。我建議你多花些時間在Windows Phone開發人員訓練包 上,並且跟著推送通知的例子完整地走一遍。
這是一個演示推送通知(從頭到尾)如何工作的絕佳例子,同時向你展示了這些更新可以讓你的應用程式總是保持在使用者眼前的強大力量。
下載示例程式碼
對於今天的例子來說,上面的程式碼由於缺少所需的環境所以對你沒什麼幫助。今天的下載內容實際上是Windows Phone開發人員訓練包中推送通知例子的最終版。
原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-19-Push-Notifications.aspx
相關文章
- 7月31日,HarmonyOS開發者日將於杭州舉辦
- 7月18日—7月24日共有31款遊戲開測|GameRes遊戲GAM
- 5.9安卓開發日記31安卓
- Windows Phone 8初學者開發—第13部分:設定LongListSelector中磁貼的樣式Windows
- [開發教程]第31講:Bootstrap對話方塊boot
- 開發日誌7
- 7月31日,羅布樂思開發者大會,“正版元宇宙”來了!元宇宙
- iOS 推送通知及推送擴充套件iOS套件
- 圖譜謎宮(2019年7月31日)
- ◆Π謎宮2019◆(7月31日附加謎題)
- Windows Phone SDK 8/8.1 官方下載Windows
- 7月第4周業務風控關注 | 廣電總局下發《關於加強網上談話(訪談)類節目管理的通知》
- Windows Phone應用效能監控與分析技巧Windows
- 使用開源ntfy訊息推送服務釋出通知實現全平臺接收通知
- iOS12中推送通知新特性iOS
- React Native推送通知:完整的操作指南React Native
- 開放平臺日誌推送---kafkaKafka
- 爽戰玄幻修真成神 《吞星》手遊7月31日全平臺首發
- 推送服務本地通知頻次及分類管控通知
- 今日頭條如何開啟或關閉重大新聞通知推送?
- 每週分享第 31 期
- 《Web 推送通知》系列翻譯 | 第七篇:推送事件 && 第八篇:顯示一個通知Web事件
- 《Web 推送通知》系列翻譯 | 引言&概覽Web
- [開發教程]第7講:Bootstrap響應式佈局boot
- Q學習第31天-QThreadQTthread
- D2 日報 第144期 2019年7月10日D2 日報
- 用 Swift 實現通知推送的新手指南Swift
- [譯] 由 Node.js 傳送 Web 推送通知Node.jsWeb
- 2024/7/31 每日一題每日一題
- 微軟官方Windows Phone、Windows 10 Mobile裝置恢復工具被曝遭到移除微軟Windows
- Win10系統如何禁用Windows Phone-PC連結Win10Windows
- 深入理解Windows Phone 8.1 UI控制元件程式設計WindowsUI控制元件程式設計
- 開發者談切入遊戲開發市場的7個選擇視角遊戲開發
- 2024年3月5日第7篇部落格
- Firefox瀏覽器開始支援Windows 10原生通知特性Firefox瀏覽器Windows
- 10月31日作業
- 《Web 推送通知》系列翻譯 | 第九篇:通知行為 && 第十篇:常用的通知模式Web模式
- 開發者日刊 第164期 2019年8月12日
- 第53個地球日,開發者可以做什麼