存储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 - 这可能吗?
答案 0 :(得分:1)
是的,你可以在后台获得PushNotificationChannel。您需要为此创建后台任务并在后台任务中点击API以获取推送通知通道Uri。用于在Windows应用商店see this tutorial.
中创建后台任务