了解Windows Phone 8.1的推送通知

San*_*sal 5 push-notification mpns windows-phone-8.1

我试图理解在我的服务器上构建需要什么才能使推送通知成功运行.

我的想法是:

  1. 手机将通知URL发送到我的服务器
  2. 服务器将信息存储在数据库中
  3. 单独的进程或PHP脚本将查询数据库并为每个设备打开连续循环过程.(每个套接字将查询第三方API)
  4. 当在该设备的API中检测到更改时,将向设备的通知URL发送推送通知.

这是需要做什么的正确方法.这不会占用服务器资源,还是Push推送通知服务器的预期结果?

我在下面的所有内容中制作了一个简单的图表:

在此输入图像描述

Adr*_*zar 3

首先,我们将PUSH所需的主要阶段的流程分开。

  1. 设备订阅。
  2. 发送推送
  3. 在设备上处理通知。

订阅

对于订阅,您的设备(更具体地说,您的应用程序)必须调用 PUSH api,以启用 PUSH 通知。对推送 API 的调用将为您提供一个 URL,该 URL 唯一标识安装和运行应用程序的设备。您应该将此 URL 存储在数据库中,就像存储用户的电子邮件或用户的电话号码一样。这里没有特殊的黑魔法。仅当您需要向用户发送通信时才使用它。

发送推送

对于推送内容,与电子邮件或 SMS 消息传递的方法相同:“人们不会简单地进行无限循环并在检测到任何更改时发送消息”。您所要做的就是,在您的应用程序需要时发送 PUSH 消息。因此,您拥有想要向其发送消息的用户,无需打开 SMTP 连接来发送邮件,只需构建 PUSH XML 消息并调用与该用户关联的 URL。这里需要考虑的一些事情是:

  • 网络可靠性(无法连接服务器需要重试)。
  • 响应错误代码处理(例如,如果服务器告诉您手机已卸载您的应用程序,则无需重试)。
  • 可扩展性。您不想从 PHP 代码发送 PUSH 消息,因为您不知道完成任务需要多长时间。你必须异步地做这件事。因此,只需将所有推送消息排队,您就可以创建一个单独的进程(Windows 服务、nodeJS 服务、cron 作业、守护进程等)来发送推送、处理重试和错误并清理队列。

在设备上处理通知

现在您已经到了这里,您需要处理手机上的通知。这取决于您发送的推送通知的类型:

  • 瓦。如果用户已将您的应用程序置于开始屏幕,您将更新应用程序图块的图像、文本和计数器。在客户端,您不需要这样做,因为所有这些参数都是您的 PUSH 请求的一部分。
  • 吐司。这需要标题、文本(限制在 35 个字符左右)和应用程序内的相对 URL。您的应用程序将使用您在有效负载中指定的 URI 启动(例如,当您单击 Twitter 的 Toast 通知时)。所以这里已经可以注入一些数据了。您可以/也可以不向您的服务器请求新数据。它是由你决定。
  • 生的。这个人几乎是沉默的。如果您的应用程序未运行,用户看不到。正如您可能猜到的那样,这种 PUSH 对于实时更新您正在运行的 APP 很有用,而不是不断轮询您的服务器,浪费用户电池和带宽并浪费您的服务器资源。您可以发送任何内容(原始字节或字符串),最多可达 Microsoft 允许的有效负载最大大小。

如果您还有其他问题,请随时询问。

底线:分离 PUSH 发送,使其异步,你永远不要忘记......