我需要向我的应用程序的所有用户发送推送通知消息。我知道我需要一个从每个用户那里收到的 URI 来将消息发回给他们。
所以,我必须注册 ChannelUriUpdated 事件并将 URI 发送到我的服务器。在我的服务器中,我应该将这些数据存储在数据库中,并使用 URI 列表来发送消息。
我不确定这是否是完美的方法。但如果是,我怎么知道特定设备的 URI 是否从我的服务器更新。我不想在我的数据库中为每个设备存储多个 URI。
我是否还应该使用唯一的 URI 发送设备的 GUID?
我需要向我的应用程序的所有用户发送推送通知消息。我知道我需要一个从每个用户那里收到的 URI 来将消息发回给他们。
所以,我必须注册 ChannelUriUpdated 事件并将 URI 发送到我的服务器。在我的服务器中,我应该将这些数据存储在数据库中,并使用 URI 列表来发送消息。
我不确定这是否是完美的方法。但如果是,我怎么知道特定设备的 URI 是否从我的服务器更新。我不想在我的数据库中为每个设备存储多个 URI。
我是否还应该使用唯一的 URI 发送设备的 GUID?
当Uri
设备更新时,您应该将Uri
服务器上的旧设备替换为新设备。所以,一个设备 - 一个 Uri。
如果您需要在不识别每个用户的情况下向所有用户发送通知,并且此要求将来不会改变 - 不要保存 GUID。只需将通知发送到存储Uri
的,仅此而已。
我是否还应该使用唯一的 URI 发送设备的 GUID?
那是你不清楚:你在每个电话唯一的 GUID 和不是的 URI之间建立了一对多的关系。
您应该将 GUID 作为主键存储在数据库中,并将 URI 作为列存储。每当您输入新密钥时,请检查提供的 GUID 是否已经存在,在这种情况下,您可以UPDATE
使用INSERT
.
当 MPNS 返回一个推送 URI 时,它标识了一个唯一的“设备中的应用程序”,即,安装在设备中请求推送通知的每个应用程序都被赋予不同的 URI。
现在,我不负责 WP7 应用程序,只负责 Web 服务部分,但我认为应用程序每次启动时都必须重新验证 URI。在这种情况下,您应该更新之前存储的 URI,这就是为什么您应该存储设备 ID,以便您可以跟踪和更新之前的频道。
还要注意响应代码,因为在某些情况下您必须按照此处所述停止发送新通知:
http://msdn.microsoft.com/en-us/library/ff941100(v=vs.92).aspx