對於任何擁有移動應用程序的人來說,推送通知都是一種重要的營銷工具。
這是與用戶交流的最佳方式,向他們的手機發送緊急消息。
移動應用程序可以向用戶發送推送通知,這是一條簡短的彈出消息,即使在應用程序未打開時也會顯示在他們的智能手機上。
這些警報可以包括提醒、更新、折扣等。
它們的創建是為了吸引用戶的眼球。 標題、消息、圖片和 URL 都是推送通知的可能組成部分。 表情符號、徽標和其他東西也可以成為其中的一部分。
Apple OS 和 Google Android 等操作系統具有多種推送通知界面。
推送通知可用於促進參與度、提高應用使用率、影響轉化等等。
選擇真的是無限的。
移動設備推送通知,也稱為移動設備推送通知,可以補充您對電子郵件、短信和在線推送通知等渠道的使用,具有許多特殊優勢。
您將在這篇文章中收到對通知服務的簡要說明,以及有關其目標、高級設計、特殊功能等的信息。
目標
開發一種通知服務,可以通過各種渠道有效地分發產品到用戶的消息
資格:
- 發送 API:發布授權端點,以便任何後端和微服務都可以開始發送通知。
- 兼容渠道:支持向任何發布 API 的渠道發送警報,例如電子郵件、短信和推送。
- 用戶偏好:允許用戶為每個頻道和通知選擇他們的用戶偏好。
- 下游服務合規性的限制:避免讓您的 電子郵件 或 SMS 服務被限製或停止。
- Scalable:允許(理論上)無限的水平縮放。
高級架構
假設您的代碼應該通知某人:
- POST /send 端點由您的代碼調用。 對於每個可用通道,請求包括接收者的用戶 ID、通知的類型及其內容。
- /send 端點使用 OAuth2 客戶端憑據流對請求進行身份驗證。
- 然後從數據庫請求用戶的通知選擇。 首選項顯示用戶是否訂閱了某個頻道和通知。
- 從數據庫中,它將讀取電子郵件地址和電話號碼等用戶特徵。
- 此端點將創建一個消息對象,其中包括用戶特徵、頻道和特定於頻道的內容。 不過,它不包括停用的頻道。 然後將消息傳遞到扇出服務。
- 傳入消息通過扇出服務傳播到作業隊列。 但是,過濾已經到位,以忽略消息中未指定的通道的作業隊列。
- 每個通道都有一個處理器和一個工作隊列。 處理器接受任務,然後請求適當的服務,例如交易電子郵件或 SMS 服務。
主要架構元素
POST/發送
您可能已經註意到,對這個端點的請求中只包含了 userId,電子郵件地址和電話號碼都沒有。 這使通知服務對您的用戶保持匿名。
為了確保可擴展性,端點被放置在一個 負載均衡器.
您典型的面向用戶的身份驗證不為端點提供保護。
您必須使用一種稱為 OAuth2 客戶端憑據流的獨特身份驗證方法,用於服務器到服務器的通信,因為提交請求的服務是軟件本身。
您的應用程序將在許多不同的地方提供通知。 您幾乎可以在任何地方使用發送功能,例如從新的代碼庫或構建工作流,通過將其實現為負載平衡器後面的端點,這保證了它是獨立可擴展的。
PUT/用戶偏好
使用可擴展性極強的鍵/值對或 NoSQL 數據庫。 將記錄格式化如下: KEY: sample user id:sample notification id, VALUE: [“email”, “state: true”, “SMS”, “state: false”, channel: “email”, “email”, state : 真的
如果記錄中存在“假”值,則傳輸端點將從傳遞到扇出的消息中排除相應的通道。 如果沒有頻道記錄,則用戶沒有明確表明他們的偏好。 在這種情況下,您必須同意默認。
用戶可以使用您的 UI 和由您的標準身份驗證程序保護的常規端點修改用戶首選項數據庫中的數據。
如果您不向他們提供更改通知首選項的選項,用戶將變得煩躁並被迫將您的警報指定為垃圾郵件或將其靜音。 因此,您的用戶體驗將受到進一步損害,電子郵件或短信遞送服務可能會暫停您的帳戶。
扇出
扇出複制一條消息並將其分發到不同的位置。 它們價格實惠且非常可擴展。 在 AWS 中使用 SNS。 在 Azure 中使用 Pub/Sub,在 Google Cloud Platform 中使用主題和訂閱。
為防止向排除的通道作業隊列發送無意義的消息,您可以在扇出隊列和工作隊列之間配置過濾。 例如,在 AWS SNS 中,您可以指定電子郵件作業隊列僅在“通道”字段中具有“電子郵件”值時才應獲取扇出消息。
即使您可以創建代碼以將相同的消息發送到所需的作業隊列,扇出也更有效並且需要更少的編碼。 Fanout 還提供了添加和刪除隊列的便利,允許您擴展和重組您的頻道。
作業處理
消息存儲在等待由您的作業處理器處理的隊列中。 它們還價格實惠且可擴展性很強。 作業處理器是處理來自作業隊列的消息的代碼片段。 根據隊列中的消息量,它們可以擴展。
作業處理器應向適當的提供者發出 API 調用,以通過事務性電子郵件服務在我們的場景中傳遞通知。
大多數電子郵件、SMS 和類似的消息傳遞提供商對您發送的消息的數量和質量都有嚴格的要求。 此外,您希望徹底檢查這些並設置合適的程序。 以下是我們關於如何避免被 AWS SES 終止的建議。
您可以定義作業處理者的最大數量,以防止超過交付服務的費率上限。
進一步改進
你可以看一眼這些項目。
- 他們需要自己的 API、表格等,才能擁有可擴展的應用內通知服務。
- 收集並顯示打開/點擊報告
- 從代碼中刪除通知的內容,讓您的產品和設計團隊在不更改代碼的情況下直觀地修改警報
- 在不更改任何代碼的情況下,您的團隊可以使用儀表板來激活或禁用某些頻道的通知。
推送通知的好處
- 促進用戶互動:更新和新鮮材料將使您的用戶保持興趣。
- 提高溝通可見性:確保您的消息立即收到,即使人們不活躍。 發送緊急通知,為用戶提供流暢的體驗。
- 保持保留:使用清晰可見的推送通知來敦促您的用戶返回。 您可以通過將客戶推回您的網站和應用程序來提高用戶保留率並減少客戶流失。
- 提高轉化率:通過圍繞應用內獎勵、促銷、折扣或其他產品創建推送活動,您可以增加銷售額。
- 擴展您的企業:您的溝通方式必須隨著受眾的擴大而擴展。 隨著您的客戶群擴大,推送通知是與他們保持聯繫的有效方法。
- 讓用戶體驗互聯 (UX):通過向消費者提供交易提醒,讓他們了解最新情況並提供順暢的跨渠道體驗,您可以減少整個客戶旅程中的摩擦。
結論
總之,我們獲得了有關可擴展推送通知服務架構的知識。 我們還查看了所有主要雲服務提供商提供的工具,以便您可以根據這些工具發出通知。
儘管我盡力為您提供推送通知系統架構的概述,但幕後還有很多事情要做。
我真誠地希望您會發現這些信息有用並加以利用。
發表評論