如何在应用程序中关闭旧的PushNotificationChannel?

时间:2016-05-05 08:24:56

标签: c# push-notification windows-phone-8.1

存储PushNotificationChannel存在很大问题。 itselt类型无法存储在LocalSettings中。

我需要它在获得新频道后关闭频道。我每次启动应用程序时都会请求新通道(如文档所述),有时我会在前一个stil工作时获得新通道(与之前不同)(导致重复的推送通知)。因此,当我获得新频道时,我想要关闭旧频道。

我还尝试使用以下方法将其序列化为流式传输:

var serializer = new DataContractSerializer(typeof(PushNotificationChannel));
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, channel);

但我得到错误:

  

'Windows.Networking.PushNotifications.PushNotificationChannel'无法序列化。请考虑使用DataContractAttribute属性对其进行标记,并使用DataMemberAttribute属性标记要序列化的所有成员。或者,您可以确保该类型是公共的并且具有无参数构造函数 - 然后将序列化该类型的所有公共成员,并且不需要任何属性。

有没有办法存储PushNotificationChannel或者我是否只能存储URI并以某种方式从uri创建Channel对象?

编辑:

好的,我可以在PushNotificationReceived中获得频道。但我不知道如何在我的BackgroundTask中获取发送者PushNotificationChannel - 这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,你可以在后台获得PushNotificationChannel。您需要为此创建后台任务并在后台任务中点击API以获取推送通知通道Uri。用于在Windows应用商店see this tutorial.

中创建后台任务