对于任何拥有移动应用程序的人来说,推送通知都是一种重要的营销工具。
这是与用户交流的最佳方式,向他们的手机发送紧急消息。
移动应用程序可以向用户发送推送通知,这是一条简短的弹出消息,即使在应用程序未打开时也会显示在他们的智能手机上。
这些警报可以包括提醒、更新、折扣等。
它们的创建是为了吸引用户的眼球。 标题、消息、图片和 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):通过向消费者提供交易提醒,让他们了解最新情况并提供顺畅的跨渠道体验,您可以减少整个客户旅程中的摩擦。
结论
总之,我们获得了有关可扩展推送通知服务架构的知识。 我们还查看了所有主要云服务提供商提供的工具,以便您可以根据这些工具发出通知。
尽管我尽力为您提供推送通知系统架构的概述,但幕后还有很多事情要做。
我真诚地希望您会发现这些信息有用并加以利用。
发表评论