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. 同源、同源策略、跨域问题、django解决方案

    什么是同源: URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源. 注意:假如你的网站ip是123.123.123.123,网站的域名是www.abc.com. ...

  2. django自带的orm之查询

    一.filter条件查询 用法: 模型类.objects.filter(模型类属性名__查询操作符 = 值) 判等: exact # 例:查询id为1的员工 select * from employe ...

  3. 【C++】各种成员变量

    来自:黄邦勇帅 const 常量对象: 即把对象声明为常量,即 const hyong m,常量对象不能调用可能改变对象的值的函数,因此常量对象只能调用类中的 const 常量函数,因为不是 cons ...

  4. 通过Eclipse生成可运行的jar包

    本来转自http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 我是个追新潮的人,早早用上了MyEclipse10.最近需要使用Fat jar来帮我对一 ...

  5. yii2.0在model里自定义数据表

    无需多言,直接撸代码 class Zhuanjia extends \yii\db\ActiveRecord { public static function tableName() { return ...

  6. 6、Flask实战第6天:视图函数Response返回值

    视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...

  7. JavaScript中的局部作用域及常量的定义

    局部作用域 通常JavaScript的作用域是函数内部,在类似for循环的语句块中是无法申明局部变量的. function exm() { for (var i=0; i<100; i++) { ...

  8. priority_queue的运算符重载问题

    对于需要比较的函数或STL(最常见的为sort,priority_queue) 要对自创的结构进行运算符重载(sort可以写cmp,一样的效果) 1.只能对小于号重载 cmp函数与其起到相同的作用 2 ...

  9. 【离散化】【扫描线】CH Round #59 - OrzCC杯NOIP模拟赛day1 队爷的新书

    //上图绿色扫描线右侧少画了一条扫描线. 很多区间把数轴分成了很多段,看哪个点的(区间覆盖数*该点权值)最大. 显然在某个区间的右端点的答案是最优的. 排序后 用扫描线从左到右扫描,维护每个点的覆盖数 ...

  10. [转]iOS ARC机制 weak strong

    写在开头 虽然距离WWDC2011和iOS 5已经快一年时间,但是很多开发者并没有利用新方法来提高自己的水平,这点在ARC的使用上非常明显(特别是国内,基本很少见到同行转向ARC).我曾经询问过一些同 ...