【学习笔记】WP7推送通知(Notification)

Understand-Anything:AI驱动的代码知识图谱,实现项目全局洞察与高效导航 在软件开发中,理解复杂代码库的结构和依赖关系是提升开发效率的关键。传统代码阅读方式往往陷入局部视角,难以快速把握系统全貌。知识图谱技术通过将代码实体(如文件、类、函数)及其关系(调用、继承、依赖)可视化,为代码理解提供了全局视角。这项技术的核心价值在于将静态代码转化为动态、可交互的认知地图,极大降低了系统学习与维护成本。在实际工程中,它广泛应用于新成员快速入职、遗留系统梳理、架构影响分析等场景。本文介绍的Understand-Anything工具,正是基于这一理念,通过多智能体分析管道,自动构建代码的结构图 阅读详情

这篇文章是从自己的个人网站转过来的,因为3月份个人网站就要关了





 //创建Channel
           httpChannel = new HttpNotificationChannel(channelName, "NotificationServers");

           //注册channel事件
           httpChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(httpChannel_ChannelUriUpdated);
  

在 ChannelUriUpdated 事件信息的 e中获取地址:          
	  void httpChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
     	  {
       	  Debug.WriteLine(e.ChannelUri);
     	  }

剩下的就是注册 Raw Toast Tile 以及Toast 和Tile的绑定(当程序没有运行的时候,在手机的主界面显示推送信息)

httpChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(httpChannel_ErrorOccurred);

            httpChannel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(httpChannel_HttpNotificationReceived);

            httpChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(httpChannel_ShellToastNotificationReceived);

            httpChannel.Open();

            //程序如果没有运行 则绑定消息 弹出对话框
            httpChannel.BindToShellToast();

            httpChannel.BindToShellTile();
        }

        void httpChannel_ShellToastNotificationReceived(object sender, NotificationEventArgs e)
        {
            string msg = "";
            foreach (var key in e.Collection.Keys)
            {
                msg += key + ":" + e.Collection[key] + Environment.NewLine;
            }
            Dispatcher.BeginInvoke(() =>
            {
                txt_msg.Text = msg;
            });
        }

        void httpChannel_HttpNotificationReceived(object sender, HttpNotificationEventArgs e)
        {
            using (var reader=new StreamReader(e.Notification.Body))
            {
                string msg = reader.ReadToEnd();
                Dispatcher.BeginInvoke(() =>
                {
                    txt_msg.Text = msg;
                });
            }
        }

        void httpChannel_ErrorOccurred(object sender, NotificationChannelErrorEventArgs e)
        {
            Dispatcher.BeginInvoke(() =>
            {
                txt_msg.Text = e.Message;
            });
        }

 模拟一个服务器 像microsoft发送信息




switch (type)
            {
                case "Raw":
                    msg = Encoding.UTF8.GetBytes(txtSendMsg.Text);
                    break;
                case "Tile":
                    {
                        string tileMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                                                                    "<wp:Notification xmlns:wp=\"WPNotification\">"+
                                                                      "<wp:Tile>" +
                                                                        "<wp:BackgroundImage>/Images/Cloudy.png</wp:BackgroundImage>" +
                                                                        "<wp:Count>28</wp:Count>"+
                                                                        "<wp:Title>AnthemSord</wp:Title>" +
                                                                      "</wp:Tile>"+
                                                                    "</wp:Notification>";
                        msg = Encoding.UTF8.GetBytes(tileMessage);
                        notificationType = NotificationType.Tile;
                    }
                    break;
                case "Toast":
                    {
                        string toastMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                                                                  "<wp:Notification xmlns:wp=\"WPNotification\">" +
                                                                    "<wp:Toast>" +
                                                                      "<wp:Text1>AnthemSord:</wp:Text1>" +
                                                                      "<wp:Text2>"+txtSendMsg.Text+"</wp:Text2>" +
                                                                    "</wp:Toast>" +
                                                                  "</wp:Notification>";
                        msg = Encoding.UTF8.GetBytes(toastMessage);
                        notificationType = NotificationType.Toast;
                    }
                    break;
                default:
                    break;
            }
            SendNotifications(msg,notificationType);
  
 
 下面是post数据对request的一些格式参考,我直接把SendNotifications 函数的代码全部写上吧,不难看,很简单

          
private void SendNotifications(byte[] msg,NotificationType type)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(txtUri.Text);
            
            request.Method = WebRequestMethods.Http.Post;
            
            request.Headers["X-MessageID"] = Guid.NewGuid().ToString();
            
            request.ContentType = "text/xml;charset=utf-8";

            switch (type)
            {
                case NotificationType.Raw:
                    {
                        //3:立即发送
                        //13:等待450秒后发送
                        //23:等待900秒后发送
                        request.Headers.Add("X-NotificationClass", "3");
                    }
                    break;
                case NotificationType.Tile:
                    {
                        //1:立即发送
                        //11:等待450秒后发送
                        //21:等待900秒后发送
                        request.Headers.Add("X-WindowsPhone-Target", "token");
                        request.Headers.Add("X-NotificationClass", "1");
                    }
                    break;
                case NotificationType.Toast:
                    {
                        //2:立即发送
                        //12:等待450秒后发送
                        //22:等待900秒后发送
                        request.Headers.Add("X-WindowsPhone-Target", "toast");
                        request.Headers.Add("X-NotificationClass", "2");
                    }
                    break;
                default:
                    break;
            }
            

            using (Stream stream=request.GetRequestStream())
            {
                stream.Write(msg, 0, msg.Length);
            }

            HttpWebResponse respones = (HttpWebResponse)request.GetResponse();
            string notificationStatus = respones.Headers["X-NotificationStatus"];
            string notificationChannelStatus = respones.Headers["X-SubscriptionStatus"];
            string deviceConnectionStatus = respones.Headers["X-DeviceConnectionStatus"];
            MessageBox.Show(string.Format("通知状态:{0},管道状态:{1},连接状态:{2}",notificationStatus,notificationChannelStatus,deviceConnectionStatus));
        }

看过林永坚哥哥的视频应该很熟悉这个,我对推送这个东西非常有感觉,所以也自己动手试一试,不知道我为什么就对推送这么“兴奋” --!可能受iPhone的影响吧~当然这篇文章是作为笔记发表的,哈哈:)


个人网站的水印我现在发现很恶心啊~


现在楼主再用WPF开发项目,所以都木有很多时间来了解WP7的东东,很希望和大家交流和请教大家额~:)

第二章 HART硬件设计实战 — 基于SD2057的低功耗调制解调器电路详解与选型指南 本文详细解析了基于SD2057芯片的HART协议低功耗调制解调器硬件设计。通过对比分析,阐述了SD2057在成本与性能上的优势,并重点拆解了其核心电路、外围元件选型、原理图绘制要点及PCB布局的实战技巧,为工业现场仪表的智能通信模块开发提供了完整的低功耗解决方案。 阅读详情

相关推荐

手把手教你用QEMU虚拟化华为路由器固件(附完整网络配置指南)

本文提供了一份详尽的QEMU虚拟化华为路由器固件的实战指南。从固件解包、网络桥接配置到QEMU虚拟机启动,手把手教你搭建完整的嵌入式设备沙箱环境,特别适合安全研究、逆向分析和学习嵌入式系统工作原理。

tgb3456789的博客 906

WP8中推送通知服务出现“System.UnauthorizedAccessException”的错误解决方案

wp8中推出了一种推送通知服务,即微软服务器可以向WP8应用程序发送通知消息,无需WP8应用程序不断与微软服务器主动联系,大大降低了应用程序的能耗,建立推送通知服务应用程序,主要工作原理如下(参见MSDN技术资源库):        下图显示了手机上运行的客户端应用程序如何从推送客户端服务 (1) 请求推送通知 URI。然后,推送客户端服务与 Microsof

beihang1988的专栏 1478

【JAVA】海康威视门禁机ISAPI接口开发,人脸上传更新接口

本文实现了一个HTTP工具类HTTPClientUtil,提供GET/POST/PUT/DELETE请求方法,支持摘要认证。工具类封装了Apache HttpClient,设置连接超时、最大连接数等参数,通过DeviceInfoDTO传递设备IP、端口和认证信息。文中还展示了两个应用示例:userInfoAdd()用于添加人员信息,FaceDataRecordAdd()用于添加人脸数据,均通过POST请求与设备ISAPI接口交互。该工具类简化了HTTP请求处理,支持设备管理系统的集成开发。

qq_27246521的博客 524

Windows Phone 7编程实践—推送通知_剖析推送通知实现架构

作品目标:Windows Phone 7 开发的实用手册 Windows Phone推送通知类型 Windows Phone中存在三种默认通知类型:Tile、Push 和 Toast 通知。 Tile通知 每个应用程序可设置Tile—应用程序内容的可视化、 动态的表示形式。当应用程序被固定显示在启动屏幕(Start Screen)时,我们就可以看到Tile的信息。Tile可...

aiguai19961210的博客 264

Windows Phone 7 - Push Notification机制初探

在Windows phone 7即将问世之际,笔者想要跟大家分享一个在开发上很好用的机制:Push notification。以往,我们习惯使用Web Service或WCF service来让本地程式与远端伺服器沟通,随时随地,随心所欲的存取资料,always connect!但这个方式到了新的云端应用上,却出现了新的挑战。 首先,因为系统资源、效能与电力等考量,不支援3rd party

Working harder, getting stronger! 1192

推送通知服务

概述   Windows Phone 中的Microsoft Push Notification Service向第三方开发人员提供了一个弹性,专注,而且持续的渠道,使得开发人员可以从web service向移动应用程序发送信息和更新。   过去移动应用程序需要经常主动去调查其相应的Web服务,以了解是否有任何等待处理的通知。这样做虽然有效,但是会导致手机的无线设备频繁打开,从而...

bailuzi3556的博客 260

WP8 推送通知 小记

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

nacl025的专栏 1411

WP7应用开发笔记(15) 推送通知

推送通知WP开发中一个非常重要的概念,因为我这个项目可能不需要,但是有必要学习一下。 MSDN讲得很清楚,园子里也有很多相关文章,这里简单提一下好了。 推送通知 了解C/S架构的朋友都知道,客户端到服务器的消息传输可以是双向的,客户端即可以主动从服务器获取消息,也可以被动接受来自服务器通知,而不像纯B/S架构浏览器只能主动从服务器获取消息。 而且WP手机虽然是C/S模式,但是微软不...

weixin_30636089的博客 85

qq java版与wp版区别_手机QQ 2.7WP版)更新,同时支持WP7WP8

新锐4月9日消息 近期WP手机新品不断,而手机QQ也迅速跟进。据悉,4月9日,手机QQ2013(WP) 更新到2.7版本。这一新版同时支持WP7WP8系统,新增“地理位置接收和发送功能”,并优化消息体验。同时,2.7版特别适配了升级后的WP7.8系统,可将QQ瓷片设置为大瓷片,并且针对WP8系统优化了视频能力,可在视频时单独“关闭语音/图像”。(图:新版本针对WP7.8系统进行了适配)增加地理位...

weixin_32296949的博客 371

WP 8.1开发】推送通知测试服务端程序

所谓推送通知,用老爷爷都能听懂的话说,就是: 1、我的服务器将通知内容发送到微软的通知服务器,再由通知服务器帮我转发消息。 2、那么,微软的推送服务器是如何知道我的服务器要发消息给哪台手机呢?手机客户端应用程序在创建推送通道时,微软的通知服务器会为手机分配一个URL,我的服务器只要知道这个URL就可以向指定的手机发送消息。所以,手机客户端必须通过网络把获取到的手机URL发给我的服务器,方法很多...

weixin_34301307的博客 259

Windows Phone开发(45):推送通知大结局——Raw通知

为什么叫大结局呢?因为推送通知服务就只有三种,前面扯了两种,就剩下一种——Raw通知。 前面我们通过两节的动手实验,相信大家都知道了,推送通知其实并不复杂,为什么呢?你看到了的,不管是哪种方式,使用方法基本一样,如果你不愿意写代码的话,完全可以把代码Copy几下就完事了,三种推送通知的实现代码是一样的,而仅仅是发送的内容不同罢了。 Raw推送通知比起前面两种更简单,因为它没有规范的格式,只要你

老周——“易之道” 4115

微软SQL驱动/PHP/操作系统三者对照表—东方仙盟

我们坚信,每一份原创智慧都值得被尊重与回馈,以永久分成锚定共创初心,让创意者长期享有价值红利,携手万千伙伴向着科技星辰大海笃定前行,拥抱硅基 生命与数字智能交融的未来,共筑跨越时代的数字文明共同体。每个人都是使用者,也是创造者;在智能时代的浪潮里,单打独斗的发展模式早已落幕,唯有开放连接、创意共创、利益共享,才能让个体价值汇聚成生态合力,让技术与创意双向奔赴,实现平台与伙伴的快速成长、共赢致远。在全球化与数字化浪潮中,东方仙盟始终秉持开放协作、知识共享的理念,积极拥抱开源技术与开放标准。

cybersnow精通 28 门计算机语言,凭借其超凡的技术能力,成功开发过上万个应用,广泛涉及政府、商业、个人等众多领域,甚至在检察院、环保局、公安局等专业场景中也大放异彩。不仅熟练掌握单片机和物联网开发,在软件架构设计方面更是独树一帜,自创了跨平台软件 441

微软技术日报-2026-08-31

微软发布Windows 11 26H2预览版,启用包仅174KB,移除WMIC;8月补丁修复约400个CVE,优先处理afd.sys零日漏洞。.NET 11进入RC前最后预览,VS 2026支持多文件Agent重构。Azure Foundry Hosted Agents正式GA,三行代码部署AI代理。Copilot应用整合完成,隐私政策明确数据可用于训练。Power Platform推进RPA-to-Agent,Surface新硬件上市。

海盗Sharp的博客 260

云基础设施与运维论坛:来自百度、IBM、微软、阿里、联通、UCloud、美团的实践分享

6月4日,在第七届中国云计算大会第二天下午进行的“云计算IT基础设施与自动化运维”论坛上

2601_96209736的博客 211

CH634 技术解析:双控制器USB HUB与PD快充的硬件配置设计

沁恒微电子的CH634集成USB3.2 Gen1与USB2.0两套独立HUB控制器、多组USB PHY、PD-PHY与青稞RISC-V内核,支持引脚、内部EEPROM、外部EEPROM与SPI-FLASH四重配置来源,可实现普通HUB与PD-HUB模式切换、上行端口交换及整体/独立电源管控。支持整体/独立两组过流与电源管控,集成POR上电复位与LVR低压检测。Type-C-PD协议处理域包含PD-PHY硬件,支持PD2.0/3.0协议处理,复位阶段识别外部CH211以切换普通HUB与PD-HUB工作模式。

ccbw16的博客 200

重复操作录一遍,AI 自动生成 Skill——微软 Skill Recorder 深度解析

其实感觉这个项目目前来看更像是一个有前景的初期项目,而且微软现在还不够开放,可以观望。Skill Recorder 确实省掉了手动整理操作步骤的时间,但生成之后,你仍然要检查任务条件、操作权限和最终结果。它能从单个演示中泛化出流程,却不一定理解你每一步背后的业务判断——这恰恰是“演示”与“教学”之间尚存的鸿沟。它解决的瓶颈是真实存在的:Agent 落地的困难从来不在能力,而在教学成本。

一个coder的博客 1113

微软技术日报-2026-09-01

微软技术日报:Win11 26H1预览版支持WinRE直接调用Wi-Fi凭据恢复;8月补丁日修复超400个漏洞,含Lazarus在野利用零日;VS 2026 18.9.2与Agent框架更新;Azure推出MAI-Thinking-1,9月10/13截告别忘;Copilot与HUMAIN合作扩大;Power Platform信用池规则GA;Surface Duo固件更新。

海盗Sharp的博客 484

微软技术周报·2026-08-24~2026-08-31——.NET11 Preview7最后一个预览版、AI Agent基础设施全面走向GA与治理化

微软技术周报:.NET 11功能冻结前最后一版Preview 7发布,C#带标签break、union模式改进,Runtime Async性能飞跃;AI Agent全面GA与治理化(Agent Plugins 1.0、VS 2026组织级Agent、Copilot Studio迁移Entra Agent ID);Windows 11 26H2进入Release Preview,预计9月底推送

海盗Sharp的博客 736

App自动化测试:高级控件定位技巧

在 Selenium WebDriver 中使用 ActionChains 时,可以通过链式调用方法来执行一系列操作,并使用 perform 方法来触发操作的执行。

2601_96229924的博客 175

GitHub今日热榜 | 2026-09-01:迷你小模型登场

一个 Agent harness 性能优化系统,给 Claude Code、Codex、OpenCode、Cursor 等客户端做技能、本能、记忆、安全和研究优先的开发。把你的 PC、Mac 或 Linux 机器变成私人 AI 服务器的套装,一条安装脚本拉起模型推理、类 ChatGPT 的 Web UI、语音、Agent、工作流、RAG 和本地图像生成。面向逆向、授权渗透和安全研究的技能路由包,AI 遇到 APK、二进制、前端 JS 加密、CTF、渗透目标时,自动路由到正确方法论,而不是乱猜命令。

m0_68631449的博客 460

微软新功能解读:企业的数据平台,正在从报表中心变成AI能力中心

过去十年,企业投入资源建设数据平台,核心目标是让更多人看见数据。为此我们搭建数据仓库、落地 BI 平台、打造各类经营看板,寄希望于用数据赋能管理、辅助经营决策。但随着 AI 时代全面到来,企业正在面临全新命题,数据不能只服务于人的阅读与分析,更要能够被 AI 理解、调用,并最终驱动业务执行。当 Copilot、智能 Agent、数字员工逐步走进企业的业务流程,数据平台的价值边界也被重新拓宽。

M15219285876的博客 370

《Qt从零入门系列(九):Qt控件与布局详解——从界面布局到资源管理与开发避坑》

Qt GUI开发看似只是把控件放到窗口中,但真正做到界面稳定、布局合理、交互流畅,还需要理解控件体系、布局管理和资源系统背后的工作机制。本文将从Qt控件的封装与复用出发,介绍布局管理器如何实现自适应界面,并进一步理解qrc资源系统的作用。在实践部分,将结合信号槽、控件状态、布局嵌套和资源使用,总结开发中的关键细节与优化思路。最后针对坐标计算、布局失效、资源加载和焦点策略等常见问题进行分析,帮助读者减少GUI开发中的踩坑,让Qt界面开发真正做到结构清晰、运行稳定。

沫漓的博客 567

--Typora软件下载--

Typora,免费分享。自由下载,如有侵权,请联系删除。

子午面蒙特卡罗_蒙特卡罗散射_蒙特卡罗计算多重散射_多重散射_

蒙特卡罗计算光的多重散射现象,最后得到经过多重散射光的斯托克斯量

上一篇: WP7 的ShellToast详解
下一篇: 【学习笔记】WP7语音API MircoPhone
AnthemSword
博客等级 码龄15年 0粉丝 4原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值