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. python3生成测试数据,并写入ssdb

    import pyssdb import random import time c = pyssdb.Client() chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoP ...

  2. 微信小程序自动去除input空格的方法

    当用户输入账号或者密码的时候,可能会有输入空格的情况,但是实际需要是不能够有空格的,所以我们要做一个去除空格,并且适应所有input的name参数的方法,下面请看源码: wxml: <input ...

  3. 解决center7默认shell不显示完整路径问题

    root用户下执行以下命令: vim ~/.bash_profile 然后屏蔽这两行: #PATH=$PATH:$HOME/bin #export PATH 新加入一下代码: PS1='[\u@\h: ...

  4. 关于存储权限WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE

    WRITE_EXTERNAL_STORAGE:写入权限 READ_EXTERNAL_STORAGE:读取权限 最近申请存储权限时,在纠结是否需要同时申明WRITE_EXTERNAL_STORAGE 和 ...

  5. 曼哈顿距离、欧几里得距离、闵氏距离(p→∞为切比雪夫距离)

    曼哈顿距离: 是由十九世纪的赫尔曼·闵可夫斯基所创词汇 ,是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和. 曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离, ...

  6. 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板)

    layout: post title: 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板) author: "luowentaoaa" catalo ...

  7. HYSBZ - 2038 小Z的袜子 (莫队算法)

    A1206. 小Z的袜子 时间限制:1.0s   内存限制:512.0MB   总提交次数:744   AC次数:210   平均分:44.44 将本题分享到:        查看未格式化的试题    ...

  8. 6.3(java学习笔记)缓冲流

    一.缓冲流 使用缓冲流后的输入输出流会先存储到缓冲区,等缓冲区满后一次性将缓冲区中的数据写入或取出. 避免程序频繁的和文件直接操作,这样操作有利于提高读写效率. 缓冲流是构建在输入输出流之上的,可以理 ...

  9. java的classpath和path理解

    1)classpath即是类路径的意思,后缀为.java的源程序编译成功之后会生成后缀为.class的类文件.classpath与import关键字是相关的,程序编译的时候,遇到import关键字,编 ...

  10. Java 和 数据库两种方式进行加锁

    java方式: publicstatic synchronized int generate(StringtableName){ Stringsql = "select value from ...