Azure通知中心提供易于使用且橫向擴(kuò)展的推送引擎,允許你從任何后端(云或本地)向任何平臺(tái)(iOS、Android、Windows等)發(fā)送通知。通知中心非常適合用于企業(yè)和消費(fèi)者方案。下面是一些示例方案:
以較低的延遲向數(shù)百萬(wàn)用戶(hù)發(fā)送突發(fā)新聞通知。
向感興趣的用戶(hù)群發(fā)送基于位置的優(yōu)惠券。
向媒體/體育/財(cái)經(jīng)/游戲應(yīng)用程序的用戶(hù)或組發(fā)送活動(dòng)相關(guān)的通知。
將促銷(xiāo)內(nèi)容推送到應(yīng)用程序,以吸引客戶(hù)并向其推銷(xiāo)。
向用戶(hù)通知企業(yè)事件,例如新的消息和工作項(xiàng)。
發(fā)送多重身份驗(yàn)證的代碼。
什么是推送通知?
推送通知是一種應(yīng)用到用戶(hù)的通信形式,它通常以移動(dòng)設(shè)備上的彈窗或?qū)υ捒虻姆绞綄⒛撤N需要的信息通知給移動(dòng)應(yīng)用的用戶(hù)。用戶(hù)通常選擇是要查看還是忽略該消息,如果選擇前者,將打開(kāi)傳達(dá)了該通知的移動(dòng)應(yīng)用程序。一些通知是靜默通知-通過(guò)后臺(tái)提供,以便應(yīng)用進(jìn)行處理和確定相應(yīng)操作。
推送通知對(duì)于提高消費(fèi)型應(yīng)用的應(yīng)用參與度與使用量以及在企業(yè)應(yīng)用中傳達(dá)最新業(yè)務(wù)信息至關(guān)重要。它是最佳的應(yīng)用到用戶(hù)通信形式,因?yàn)樗鼘?duì)于移動(dòng)設(shè)備而言能效較高,對(duì)于發(fā)送方而言具有彈性,即使相應(yīng)的應(yīng)用程序處于非活動(dòng)狀態(tài)時(shí),也能使用推送通知。
備注
Azure通知中心并不正式支持IP語(yǔ)音(VoIP)推送通知;但是,此文介紹如何通過(guò)Azure通知中心使用APNS VOIP通知。
有關(guān)一些流行平臺(tái)中的推送通知的詳細(xì)信息,請(qǐng)參閱以下主題:
Android
iOS
Windows
推送通知的工作原理是什么?
推送通知通過(guò)稱(chēng)為平臺(tái)通知系統(tǒng)(PNS)的特定于平臺(tái)的基礎(chǔ)結(jié)構(gòu)進(jìn)行傳送。它們提供基本的推送功能,使用提供的句柄向設(shè)備傳送消息,沒(méi)有通用接口。若要跨應(yīng)用的Android、iOS和Windows版本將通知發(fā)送給所有客戶(hù),開(kāi)發(fā)人員必須單獨(dú)使用Apple Push Notification服務(wù)(APNS)、Firebase Cloud Messaging(FCM)和Windows通知服務(wù)(WNS)。
從較高層面講,推送的工作原理如下:
應(yīng)用程序希望接收通知,因此會(huì)聯(lián)系運(yùn)行時(shí)所在的目標(biāo)平臺(tái)的PNS并請(qǐng)求唯一的臨時(shí)推送句柄。句柄類(lèi)型取決于系統(tǒng)(例如,WNS使用URI,APNS使用令牌)。
客戶(hù)端應(yīng)用將此句柄存儲(chǔ)在應(yīng)用后端或提供程序中。
為了發(fā)送推送通知,應(yīng)用后端使用句柄與PNS聯(lián)系以定位到特定的客戶(hù)端應(yīng)用。
PNS將通知轉(zhuǎn)發(fā)到句柄所指定的設(shè)備。
推送通知的難點(diǎn)
PNSes非常強(qiáng)大。但應(yīng)用開(kāi)發(fā)人員仍然需要完成大量工作才能實(shí)現(xiàn)常見(jiàn)的推送通知方案,例如,將推送通知廣播給細(xì)分用戶(hù)。
發(fā)送推送通知需要與應(yīng)用程序的主要業(yè)務(wù)邏輯無(wú)關(guān)的復(fù)雜基礎(chǔ)結(jié)構(gòu)。下面是基礎(chǔ)結(jié)構(gòu)方面的一些難題:
平臺(tái)依賴(lài)性
由于PNS并不統(tǒng)一,需要在后端中使用復(fù)雜且難以維護(hù)的平臺(tái)相關(guān)邏輯,才能將通知發(fā)送到各個(gè)平臺(tái)上的設(shè)備。
縮放
根據(jù)PNS指導(dǎo)原則,每次啟動(dòng)應(yīng)用時(shí)都必須刷新設(shè)備令牌。僅僅是為了保持令牌的最新?tīng)顟B(tài),后端就必須處理大量的流量和數(shù)據(jù)庫(kù)訪問(wèn)。當(dāng)設(shè)備數(shù)目增長(zhǎng)到幾億甚至幾十億時(shí),創(chuàng)建和維護(hù)此基礎(chǔ)結(jié)構(gòu)所需的成本是巨大的。
大多數(shù)PNS不支持廣播到多臺(tái)設(shè)備。僅僅是廣播到100萬(wàn)臺(tái)設(shè)備就需要對(duì)PNS發(fā)出100萬(wàn)次調(diào)用。以最低的延遲縮放這種流量大小并非易事。
路由
盡管PNS提供了向設(shè)備發(fā)送消息的方式,但大多數(shù)應(yīng)用通知面向用戶(hù)或興趣組。后端必須維護(hù)一個(gè)注冊(cè)表,用于將設(shè)備與興趣組、用戶(hù)、屬性等關(guān)聯(lián)起來(lái)。此項(xiàng)開(kāi)銷(xiāo)增大了應(yīng)用的面市時(shí)間和維護(hù)成本。
為何使用Azure通知中心?
通知中心消除了與你自行從應(yīng)用后端發(fā)送推送通知相關(guān)的所有復(fù)雜性。它的多平臺(tái)擴(kuò)展式推送通知基礎(chǔ)結(jié)構(gòu)減少了推送相關(guān)的代碼并簡(jiǎn)化了后端。使用通知中心時(shí),設(shè)備只負(fù)責(zé)將其PNS句柄注冊(cè)到中心,而后端負(fù)責(zé)向用戶(hù)或興趣組發(fā)送消息,如下圖中所示:
通知中心是隨時(shí)可用的推送引擎,具有以下優(yōu)點(diǎn):
跨平臺(tái)
支持所有主要的推送平臺(tái)。
有一個(gè)通用接口,可以使用平臺(tái)特定的或平臺(tái)相關(guān)的格式向所有平臺(tái)推送通知,無(wú)需執(zhí)行平臺(tái)特定的工作。
在一個(gè)位置管理設(shè)備句柄。
跨后端
云或本地。
.NET、Node.js、Java、Python等。
豐富的傳送模式集
廣播到一個(gè)或多個(gè)平臺(tái):只需調(diào)用API一次,便可立即廣播到數(shù)百萬(wàn)臺(tái)跨平臺(tái)設(shè)備。
推送到設(shè)備:可將通知定位到單個(gè)設(shè)備。
推送到用戶(hù):可以借助標(biāo)記和模板將通知傳入用戶(hù)的所有跨平臺(tái)設(shè)備。
使用動(dòng)態(tài)標(biāo)記推送到目標(biāo)段:可以借助標(biāo)記功能根據(jù)需要將設(shè)備分段并向其推送通知,不管是要發(fā)送到一個(gè)段還是段的表達(dá)式(例如,active AND lives in Seattle NOT new user)??梢圆皇馨l(fā)布-訂閱的限制,隨時(shí)隨地更新設(shè)備標(biāo)記。
本地化推送:可以借助模板功能實(shí)現(xiàn)本地化,而不會(huì)影響到后端代碼。
靜默推送:可以通過(guò)向設(shè)備發(fā)送靜默通知并觸發(fā)設(shè)備完成特定的拉取或操作,來(lái)實(shí)現(xiàn)推送-拉取模式。
計(jì)劃推送:可以按計(jì)劃隨時(shí)發(fā)送通知。
直接推送:可以跳過(guò)將設(shè)備注冊(cè)到通知中心服務(wù)的步驟,直接批量推送到設(shè)備句柄列表。
個(gè)性化推送:可以借助設(shè)備推送變量,使用自定義的鍵值對(duì)發(fā)送設(shè)備特定的個(gè)性化推送通知。
豐富的遙測(cè)
可通過(guò)Azure門(mén)戶(hù)和編程方式使用常規(guī)的推送、設(shè)備、錯(cuò)誤和操作遙測(cè)。
單消息遙測(cè)會(huì)跟蹤從發(fā)出初始請(qǐng)求調(diào)用到通知中心服務(wù)成功發(fā)送推送的每個(gè)推送過(guò)程。
平臺(tái)通知系統(tǒng)反饋會(huì)傳達(dá)來(lái)自PNS的所有反饋以幫助調(diào)試。
伸縮性
無(wú)需重建體系結(jié)構(gòu)或者將設(shè)備分片,即可快速地向數(shù)百萬(wàn)臺(tái)設(shè)備發(fā)送消息。
安全性
共享訪問(wèn)機(jī)密(SAS)或聯(lián)合身份驗(yàn)證。