C# 如何在应用程序不活动后更新MPNS频道URI

C# 如何在应用程序不活动后更新MPNS频道URI,c#,windows-phone-7,push-notification,windows-phone-7.1,mpns,C#,Windows Phone 7,Push Notification,Windows Phone 7.1,Mpns,当我的应用处于非活动状态(即停止、删除或休眠)时,存储的通知通道URI可能会过时。在一段时间的不活动之后,用我的web服务更新频道URI的最佳实践是什么 web上的各种文章都提到“检索”URI以便将其发送到web服务。但据我所知,我的应用程序了解频道URI的唯一方法是通过HttpNotificationChannel上的ChannelUriUpdated事件,并且引发该事件不在我的控制之下。MPNS可能在我的应用处于非活动状态时更改了URI。如果应用程序无法响应ChannelUriUpdated

当我的应用处于非活动状态(即停止、删除或休眠)时,存储的通知通道URI可能会过时。在一段时间的不活动之后,用我的web服务更新频道URI的最佳实践是什么

web上的各种文章都提到“检索”URI以便将其发送到web服务。但据我所知,我的应用程序了解频道URI的唯一方法是通过
HttpNotificationChannel
上的
ChannelUriUpdated
事件,并且引发该事件不在我的控制之下。MPNS可能在我的应用处于非活动状态时更改了URI。如果应用程序无法响应
ChannelUriUpdated
,则我的应用程序和web服务中的URI都将过时


可能是HttpNotificationChannel.Find返回的频道保证始终具有最新的频道URI?

一般最佳做法是在应用程序启动时请求当前频道URI。在应用程序中,您应该跟踪最后返回的值(跨应用程序调用)以及是否更改为上载到您的web服务。

请遵循此更新文档。它所做的是,在插入通道uri时执行脚本,它检查通道uri是否存在,如果存在,它不插入记录,否则它插入记录。因此,一旦设备的通道uri过期,就会向设备提供一个新的通道uri。在这种情况下,比较不匹配,并插入新的通道uri。通过这样做,设备将始终发送通知


注意:-要利用该功能,您必须在每次启动应用程序时发送insert。希望这有帮助。

您如何请求频道URI?ChannelUriUpdated事件允许MPNS向应用程序推送新值,但如何从MPNS“拉”当前URI?我没有看到API。进一步思考后,我想知道您是不是只需要获取Http.NotificationChannel.ChannelUri属性。@lencharest我想每次触发ChannelUpdate事件时,您都必须将新URI存储在隔离内存中。然后,作为一个永无止境的循环,您最后保存的通道Uri是“当前”通道,而在通知事件中反映的新通道是新通道。比较,如果它们不同,请通知您的Web服务。我想问的是如何确保应用程序从一段时间的非活动状态(例如,墓碑记录)中醒来后,频道URI立即是最新的。当应用程序从墓碑记录中醒来时,如果当前频道无效,您将获得空NotificationChannel.ChannelUri。在这种情况下,只需通知您的Web服务并等待从ChannelUriUpdate获得新链接。无法从MPN中提取新的通道URI。