这似乎是一个奇怪的问题,但有没有办法从Windows 8商店应用程序向机器发送本地Toast通知 - 而不是在屏幕上显示它?我有一个后台任务需要向UI线程发送同步请求。我一直在寻找8小时的大部分时间来尝试使用不同的方法 - 而且归结为这对我有用,但我不希望在我调用它时请求文本显示在屏幕上
我还应该添加Toast Notifications将在应用程序中使用,所以我不能简单地全局关闭它,我只需要我指定的那些不显示,隐藏。这可能吗?
理想情况下,我宁愿做一个原始通知,但我无法弄清楚如何进行本地原始通知(如果它甚至可以模拟它而不需要我的API。)。
编辑:根本问题 我的后台任务是每隔15分钟在幕后工作 - 基本上向主应用程序发送同步请求。 OnPushNotificationReceived应该捕获这个并执行我需要的所有数据的完全同步:例如GPS坐标,检查“ToDoItems”是否接近截止日期并需要优先升级等等。除此之外,例如检查是否存在是本地文件系统上已标记为完整且需要上载到Azure文件存储等的任何文档。
答案 0 :(得分:1)
答案可能在OnPushNotificationReceived(PushNotificationChannel sender,PushNotificationReceivedEventArgs args)
args.Cancel = true
来自MSDN:https://msdn.microsoft.com/en-us/library/br241295
取消的:
读/写获取或设置Windows是否应执行其对通知的默认处理。
您收到通知并在OnPushNotificationReceived监听器中处理,将取消设置为true并瞧! 基本上您已经处理了通知,因此您取消了显示通知的默认行为。
编辑内容: Raw Notification基本上是一个空信封,你可以把任何内容放到你想要的任何形式,可以是一个对象,一个图像,一个字典...基本上你决定要发送的内容,显然应用程序必须知道数据模型是能够处理它。
要轻松创建通知,我建议您使用此Nuget包:https://github.com/WindowsNotifications/NotificationsExtensions/tree/master/Windows%208.1%20RT
如何创建Toast通知的示例:
var toastNoti = ToastContentFactory.CreateToastText02();
toastNoti.TextHeading.Text = "TEXT IN BOLD";
toastNoti.TextBodyWrap.Text = "TEXT IN NORMAL CASE ";
toastNoti.Launch = "NOTIFICATION ARGUMENTS";
var doc = new XmlDocument();
doc.LoadXml(toastNoti.ToString());
var endNotification = new ToastNotification(doc);
endNotification.Tag = "1";
ToastNotificationManager.CreateToastNotifier().Show(endNotification);
希望这会有所帮助。请告诉我们任何结果。