http://blog.csdn.net/nacl025/article/details/8998552

http://blog.csdn.net/nacl025/article/details/9037247

打开一个推送通道(如果它尚不存在),或者连接到一个现有的推送通道。如果您的应用在之前的应用实例中创建了推送通道,则可能会存在一个推送通道。如果推送通道绑定到图块或 Toast 通知,则应用退出之后推送通道仍然存在,这样,即使该应用未运行,也仍然可以接收这些通知。

使用 Raw 通知的应用必须实现 HttpNotificationReceived 事件以接收通知中的 Raw 数据。(如果应用处于非运行态,则无法接收Raw通知)

如果您的应用已在运行,则忽略 Toast 通知,除非您注册 ShellToastNotificationReceived 事件。然后,您的应用可以决定它希望响应 Toast 通知的方式。

原始通知

1、原始通知是可以触发后台任务的唯一的通知类型。尽管 Toast、磁贴和锁屏提醒推送通知不能触发后台任务,但是原始通知触发的后台任务可以通过本地 API 调用来更新磁贴和调用 Toast 通知。

2、对于每个应用,一次只能运行一个后台任务。如果为已在运行后台任务的应用触发后台任务,则必须先完成第一个后台任务,然后才能运行新的后台任务。

3、如果应用正在运行,则通知传递事件优先于后台任务,并且应用将拥有处理通知的第一个机会。通知传递事件处理程序可以通过将事件的 PushNotificationReceivedEventArgs.Cancel 属性设置为 true 来指定处理程序退出后不应该将原始通知传递给它的后台任务。如果 Cancel 属性设置为 false 或者未设置(默认值为 false),则原始通知会在通知传递事件处理程序完成其工作后触发后台任务。

选择原始通知触发的后台任务之前,考虑使用其他通信方法。大多数应用不应该需要实现后台任务。若要使应用使用后台任务,该应用必须是允许固定到锁屏的少数应用之一。你的应用将争用这些插槽,并且用户对占用插槽的应用拥有最终控制权。不保证你的应用就是其中之一。通过在你的应用中使用其他实现通信的机制(如标准推送通知或 Toast 更新),你可以防止用户必须在你的应用和他们关注的其他应用之间作出选择。

后台任务的一些替代方法:(说明一点,Toast\Title通知都可以后台运行,但不能触摸发后台任务)

  • 若要吸引用户的注意,请发送 Toast 推送通知。
  • 若要更新磁贴,请使用磁贴推送通知。

4、原始通知触发的后台任务:用户必须显式给予应用运行后台任务的权限,当用户将应用添加到其锁屏时会授予此权限。一次只能有七个应用拥有此权限。

 
5、当你的应用的云服务向 Windows 发送通知时,你的应用便有机会在显示 Toast、更新磁贴或锁屏提醒或者向后台任务发送原始通知之前截获和处理该通知。它也可以阻止这些元素的显示或更新。实现通知发送事件处理程序是可选的。当应用想处理和阻止传入(e.Cancel = true;)的 Toast 而不是向用户显示它们时,该选项最有用。

  1. PushNotificationChannel channel = null;
  2. channel.PushNotificationReceived += OnPushNotification;
  3. try
  4. {
  5. channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
  6. }
  7. catch (Exception ex)
  8. {
  9. // ...
  10. }
  11. string content = null;
  12. private async void OnPushNotification(PushNotificationChannel sender, PushNotificationReceivedEventArgs e)
  13. {
  14. String notificationContent = String.Empty;
  15. switch (e.NotificationType)
  16. {
  17. case PushNotificationType.Badge:
  18. notificationContent = e.BadgeNotification.Content.GetXml();
  19. break;
  20. case PushNotificationType.Tile:
  21. notificationContent = e.TileNotification.Content.GetXml();
  22. break;
  23. case PushNotificationType.Toast:
  24. notificationContent = e.ToastNotification.Content.GetXml();
  25. break;
  26. case PushNotificationType.Raw:
  27. notificationContent = e.RawNotification.Content;
  28. break;
  29. }
  30. e.Cancel = true;
  31. }

win8 推送通知 小记的更多相关文章

  1. 重新想象 Windows 8 Store Apps (67) - 后台任务: 推送通知

    [源码下载] 重新想象 Windows 8 Store Apps (67) - 后台任务: 推送通知 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台任务 推送通 ...

  2. APNS 远程推送通知 PUSH deviceToken

    服务器向客户端推送消息:      当应用程序推到后台,或者根本就没有运行(我们的代码无能为力)      如果这种情况之下,应用程序想和用户交互(传统的做法 不可能)      推送 APNS:Ap ...

  3. iOS 本地推送通知

    1.什么是本地推送通知 不需要联网的情况下,应用程序经由系统发出的通知 2.本地推送的使用场景 定时提醒,如玩游戏.记账.闹钟.备忘录等 3.实现本地推送通知的步骤 创建本地推送通知的对象UILoca ...

  4. APNS 服务推送通知

    1. 将app注册notification里面, 并从APNS上获取测试机的deviceToken. - (BOOL)application:(UIApplication *)application ...

  5. IosPush推送通知的实现

    1. Apple推送通知的机制 上图可以分为三个阶段: 第一阶段:应用程序把要发送的消息.目的iPhone的标识打包,发给APNS. 第二阶段:APNS在自身的已注册Push服务的iPhone列表中, ...

  6. WP7推送通知服务

    原文地址http://www.cnblogs.com/Joetao/articles/2214482.html (一)为什么使用推送通知服务(1)Windows Phone执行模型决定只有一个第三方的 ...

  7. iOS上简单推送通知(Push Notification)的实现

    iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification ...

  8. Windows Azure Service Bus Notification Hub推送通知

    前言 随着Windows Azure 在中国的正式落地,相信越来越多的人会体验到Windows Azure带来的强大和便利.在上一篇文章中, 我们介绍了如何利用Windows Azure中的Servi ...

  9. 【WP 8.1开发】手机客户端应用接收推送通知

    上一篇文章中,已经完成了用于发送通知的服务器端,接下来我们就用这个服务端来测试一下. 在开始测试之前,我们要做一个接收通知的WP应用. 1.启动VS Express for Windows,新建项目, ...

随机推荐

  1. 手工安装kubernetes

    参考的URL是 http://www.cnblogs.com/zhenyuyaodidiao/p/6500830.html 安装kubernets本身比较顺利,只是作dashboard时,老是日文版, ...

  2. [BZOJ2049][Sdoi2008]Cave 洞穴勘测 LCT模板

    2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 9705  Solved: 4674[Submit] ...

  3. “pip failed to create process”的问题

    增加python -m的方法能完美解决pip,easy_install 安装时报错:“pip failed to create process”的问题,据推测应该是64bit操作系统下会是如此. Wi ...

  4. 走进Spark--云计算大数据新一代技术

    什么是Spark? 当然这里说的Spark指的是Apache Spark, Apache Spark™ is a fast and general engine for large-scale dat ...

  5. [UML] 如何找参与者、找用例

    如何找参与者 1.谁会来使用这个系统? 2.谁会来安装这个系统? 3.谁会来启动这个系统? 4.谁会来维护这个系统? 5.谁会来关闭这个系统? 6.哪些系统会来使用这个系统? 7.谁会从这个系统获取信 ...

  6. codevs 方格取数

    1043 方格取数 2000年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Descri ...

  7. 【分块】bzoj3226 [Sdoi2008]校门外的区间

    题解见 : http://blog.csdn.net/iamzky/article/details/41088151 ORZ ZKY 2个懒标记:是否翻转,覆盖成了什么. 怎么处理一个块上有两个标记的 ...

  8. MR实现--矩阵乘法

    import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io ...

  9. golang的reflect

    引用自 http://www.jb51.net/article/115002.htm 和 C 数据结构一样,Go 对象头部并没有类型指针,通过其自身是无法在运行期获知任何类型相关信息的.反射操作所需要 ...

  10. delphi中使用mediaplayer控件播放音乐

    新建一个名字为media的文件夹,把要播放的音乐文件放在这个文件夹里. ExtractFilePath是用来获得产生的可执行程式所在的路径,因为我们把要播放的音乐文件放在了可执行程式的那个根目录下. ...