locked
后台任务不能发送 Toast 通知 RRS feed

  • 问题

  • 在包清单中已经声明了一个 Audio 类型的后台任务,可以正常运行。我想让它在某个时候发送 Toast 通知,用了以下代码:

                    ToastNotification notification = new ToastNotification(ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02));
                    ToastNotifier notifier;
                    try
                    {
                        notifier = ToastNotificationManager.CreateToastNotifier();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.Message);
                        throw;
                    }
                    notification.Content.GetElementsByTagName("text")[0].InnerText = "通知内容";
                    notifier.Show(notification);

    Output 窗口中输出为:

    The application identifier provided is invalid.

    包清单的 Toast Capable 已经设为了 Yes,请问如何解决?


    另外前台是可以正常弹出通知的,但内容会显示为乱码。顺便问一下怎么解决?

    2015年10月10日 15:52

答案

  • 理论上讲后台任务都应该差不多。

    英文版社区好像有解决方法:把字符串 "App" 传进 CreateToastNotifier 方法的第一个参数。

    // ...
    notifier = ToastNotificationManager.CreateToastNotifier("App");
    // ...
    这样确实可以解决。也感谢两位的回答。


    另外乱码问题是代码文件本身的编码错误导致的,用 UTF-8 重新编码保存即可。

    • 已标记为答案 包布丁 2015年10月16日 12:19
    • 已编辑 包布丁 2015年10月16日 12:21 补充内容
    2015年10月16日 12:18

全部回复

  • 你好,

    >>”我想让它在某个时候发送Toast 通知

    根据你的描述,你是用错任务类型了,应该使用TimeTrigger,具体内容请参考MSDN官方文档:https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.background.timetrigger.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

    >>”The application identifier provided is invalid.”

    请不要在一个帖子上提多个不同的问题。

    根据微软提供的文档描述,Toast通知在simulator下不工作的,你需要在Local Machine 或者Remote Machine下进行调试,参考文档:https://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/hh868254.aspx


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年10月12日 7:01
    版主
  • "某个时刻"指的是切换歌曲的时候,而不是"时间点"。调试确实是使用真机的,Lumia 640 运行 Win8.1。
    2015年10月12日 11:45
  • 后台音频跟普通的后台任务不一样,只能用来播放媒体文件,这也就是为什么在普通的后台任务可以发送一条toast通知,而在后台音频的任务中发送toast会报异常。

    2015年10月15日 6:05
  • 理论上讲后台任务都应该差不多。

    英文版社区好像有解决方法:把字符串 "App" 传进 CreateToastNotifier 方法的第一个参数。

    // ...
    notifier = ToastNotificationManager.CreateToastNotifier("App");
    // ...
    这样确实可以解决。也感谢两位的回答。


    另外乱码问题是代码文件本身的编码错误导致的,用 UTF-8 重新编码保存即可。

    • 已标记为答案 包布丁 2015年10月16日 12:19
    • 已编辑 包布丁 2015年10月16日 12:21 补充内容
    2015年10月16日 12:18