实时磁贴能够接收推送通知,而无需运行相关的 Metro 应用程序。
但是我相信应用程序必须至少运行一次才能让应用程序获取通知通道并订阅通知服务器,将通道传递给服务器。
我的问题是——
如果服务器切断客户端会发生什么?如果用户关闭他们的计算机,我认为服务器将开始接收交付失败错误。然后服务器可能会切断客户端。
但是当用户重新打开他们的计算机时会发生什么?磁贴现在是否断开连接,直到用户再次启动应用程序并重新向服务器订阅通知?
或者有没有办法让磁贴在启动时自动重新订阅而无需运行应用程序?
实时磁贴能够接收推送通知,而无需运行相关的 Metro 应用程序。
但是我相信应用程序必须至少运行一次才能让应用程序获取通知通道并订阅通知服务器,将通道传递给服务器。
我的问题是——
如果服务器切断客户端会发生什么?如果用户关闭他们的计算机,我认为服务器将开始接收交付失败错误。然后服务器可能会切断客户端。
但是当用户重新打开他们的计算机时会发生什么?磁贴现在是否断开连接,直到用户再次启动应用程序并重新向服务器订阅通知?
或者有没有办法让磁贴在启动时自动重新订阅而无需运行应用程序?
推送通知不直接发送给客户端;它们是通过云中的 Windows 通知服务发送的。这意味着您的服务将能够发送它们。当机器退出睡眠/重新连接到网络时,WNS 服务将通过通知做正确的事情。
http://msdn.microsoft.com/en-us/library/windows/apps/hh913756.aspx概述了通知的服务端。
请务必注意,磁贴通道将在 30 天后过期,并且需要(以编程方式)更新。指导意见是,您应该在应用程序运行时进行更新,以确保它不会过期。
我似乎无法在文档中找到的唯一一件事是客户端上有多少推送通知排队 - 我怀疑对于给定的标签通知,只保留一个。
也许另一种思考方式是使用错误通知——例如“新项目”计数。如果您在设备与网络断开连接(关闭、驱动等)时推送此号码,那么您的服务将成功发送通知,并且当该机器重新连接时,它将无缝地看到徽章更新。
你应该在你的代码中处理这个问题,当你的客户端从服务器离线时,你应该删除它们并断开它们,客户端将只接收活动切片中的缓存值。
如果他们重新启动,那么您还应该在服务器端处理它以推送新的通知数据。
只是一个快速提示:如果您使用 WCF 作为您的服务,您可能需要检查Announcement Service Class那里您可以处理您的客户在线/离线场景。