Windows phone 8 推送通知如何使用 ChannelUpdatedUri 检测频道更新

Posted

技术标签:

【中文标题】Windows phone 8 推送通知如何使用 ChannelUpdatedUri 检测频道更新【英文标题】:Windows phone 8 push notification how to use ChannelUpdatedUri to detect channel updates 【发布时间】:2013-09-23 13:27:57 【问题描述】:

我想知道通知我的 WP8 应用 ChannelUri 已更改的干净且正确的方法是什么?

我读到我需要在 ChannelUpdatedUri 方法中处理这个问题。但我在这里有一些疑问。这不需要我的应用程序一直在运行吗?

第二个查询是假设我使用 ChannelUpdatedUri 来监听 Uri 的变化。如果有变化,应用程序会在启动后立即通知吗?还是以后会通知?

问题在于,如果应用在启动时没有收到通知,那么它可能会在调用 ChannelUpdatedUri 之前重新注册新的频道 uri。不是吗?

请帮忙!

【问题讨论】:

【参考方案1】:

只有在附加了侦听器并且应用正在运行时,您才会收到有关 ChannelUri 更改的通知。

最好的方法是始终检查当前的 Uri,并在应用启动时将其传递给服务器。您可以在应用程序的整个生命周期内保持监听器的连接状态,如果在应用程序运行时丢失了一个新的监听器,但实际上,当手机不使用时,频道更有可能被丢弃/断开。

当然,当应用程序未使用时,channelUri 可能会过期,但应用程序的实用程序主要是发送通知。显然,您需要用户重新启动应用程序才能获得新连接,但您不能告诉他们重新启动应用程序。 这是一个普遍的问题:你怎么告诉别人你不能和他们说话?

这种情况的实际情况是,如果您确实需要告诉某人再次启动该应用程序,您将需要另一种方式来做到这一点。

很遗憾,无法从后台代理获取更新的 channelUri,但您可以查询后端以查看是否需要,然后向用户举杯以提示他们重新打开应用程序。或者您可以在发生这种情况时从代理更新磁贴。

或者,您需要以其他方式(例如电子邮件或短信?)向他们发送提示,但这取决于您捕获并安全地存储这些详细信息。

对于这种情况没有完美的解决方案,除了创建一个用户定期打开的应用程序,无论是否有通知,并且只是将通知作为一个额外的功能。

【讨论】:

我仍然不确定 ChannelUriUpdated 是如何工作的。例如,如果应用注册通知并接收 ChannelUri(比如 A)。现在用户关闭了应用程序。下次启动应用程序时,ChannelUri 是否会自动开始侦听对上次注册的 Uri (A) 的更改?请解释一下。 @user1122549 ChannelUri 是您向其发送推送通知的 URI。手机将处理发送到 Uri 的通知的接收。在大多数情况下,一旦您为您的应用创建了 ChannelUri,它就不会经常更改。当您使用该应用程序时,它不太可能发生更改(除非这与您发送无效通知同时发生 - 这将导致频道过期。)您通常只需要担心频道在首次创建时被更改为将触发此事件/回调。 谢谢马特!根据您的回复,我正在检查应用启动时 Uri 的有效性。我将对其进行测试并提供最新进展。

以上是关于Windows phone 8 推送通知如何使用 ChannelUpdatedUri 检测频道更新的主要内容,如果未能解决你的问题,请参考以下文章

Windows phone 8 推送通知如何使用 ChannelUpdatedUri 检测频道更新

如何在工作灯中为 Windows Phone 8 配置未经身份验证的推送通知

使用 Azure 在 Windows phone 8 中推送通知

使用 Worklight 6.1 在 Windows Phone 8 上推送通知的 Toast

OneSignal 推送通知 ClickEvent 显示空值 Windows phone 8.1 C#

Windows Phone 8 推送通知 - 不支持的频道 uri