应用程序未运行时的 Windows Phone 7 推送通知

Posted

技术标签:

【中文标题】应用程序未运行时的 Windows Phone 7 推送通知【英文标题】:Windows Phone 7 push notification when the app is not running 【发布时间】:2012-08-08 19:03:07 【问题描述】:

我正在尝试在 windows phone 7.5 中实现推送通知

当应用程序启动时,我在 App.xaml 中绑定了 channelUri。 然后我可以将我的应用切换到后台并根据 Uri 接收 toast 通知。

但这需要我先打开应用程序,然后将其设置为后台。

我可以在没有运行应用程序的情况下接收 toast 吗?也就是channelUri没有绑定的时候。

这是 Windows phone 7 中的默认行为,还是我在这里遗漏了一点?

如果这是这种行为,我如何在应用未运行时向手机发送某种形式的通知/信息?

我确实看到了这个Windows Phone 7.5 - Push Notifications when app is tombstoned。

更新:

    我知道频道的活跃期长达 30 天,我只使用模拟器时是否一样? 应用程序应该与一个频道相关联以便接收通知,即使应用程序没有运行,如果通知频道处于活动状态,那么应用程序将接收 toast

【问题讨论】:

【参考方案1】:

我认为你没有抓住重点。为了接收 toast 通知,您不必让应用程序在后台运行。 Toasts(和 Tile 通知)适用于应用程序根本没有运行的情况。因此,启动应用程序以获取 push-uri,然后将其发送到服务。理论上,您在 30 天后将不再需要。当涉及到模拟器时,只要模拟器正在运行,它就可以使用。一旦你关闭/关闭模拟器,push-uri 就消失了,你需要重新请求一个。 (一般来说,模拟器上没有保存任何东西,所以关闭和打开模拟器就像每次都得到一个新设备。)

希望这会有所帮助

【讨论】:

那 30 天是确定的,所以通道在 30 天内总是可靠的还是会在此之前到期? 不,这不是一个确定的计数。因此,从客户端服务编程的角度来看,您应该检测到这种情况。换句话说,如果您无法从设备中检索 uri,则应用程序必须识别并请求另一个。然后应该将该 URI 发送到带有标识符的服务,以便在服务器端将服务交付给您的应用程序的连续性。标识符的一个示例可以是您的设备 ID 或该服务上用户的用户名。此外,在服务端,您可以在对 POST 的响应 (X-SubscriptionStatus) 标头中检测通道 URI 的到期。

以上是关于应用程序未运行时的 Windows Phone 7 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

Windows Phone 8.1 应用程序未完全在 Windows 10 设备上运行

windows phone 7 让应用程序在后退按钮上运行

当我使用 PHP 服务时,Windows Phone 7 推送通知未显示在我的手机上

应用程序未运行时的 iOS 7 后台获取

Windows Phone 7 模拟器无法运行

我可以在 XAP 中包含一个数据库,还是应该在初始加载时为 Windows Phone 7 应用程序创建数据库?