设为首页 收藏本站
查看: 1040|回复: 0

[经验分享] Windows Phone 7天初学(5):推送通知实现

[复制链接]

尚未签到

发表于 2018-6-11 09:09:18 | 显示全部楼层 |阅读模式
Windows Phone 中的推送通知服务 Microsoft Push Notification Service 向第三方开发人员提供了一个弹性,专注,而且持续的渠道,使得开发人员可以从Web Service 向移动应用程序发送信息和更新,过去移动应用程序需要经常主动访问相应的WEB服务,以了解是否有任何等待处理的通知。这样做导航手机无线设备需频繁打开,使用推送通知的方式取代主动调查,Web Service 能够提醒应用程序获取所需要的重要理更新。
      服务器Web Service 如有信息要发送到应用程序,它先发送一个通知到Push Notification Service ,该服务随后将通知应用程序,应用程序的标题明显地更新或者显示一个Toast 通知。然后,如果需要的话,应用程序可以使用自己的的协议联系Web service 以获取更新,这样也能有效降低电池的消耗。
    需注意的是这里发送的是一个通知,通知应用程序,应用程序收到通知后,再联系Web service 获取具体内容。应用程序不需时时刻刻去查询是否有更新数据。
推送消息过程:
WP设备到MSNS注册-》得到唯一的服务URI-》把URI传递给云服务器-》当云服务器有更新消息时,发送给MSNS更新消息,MSNS更新消息发送给WP设备-》WP设备读取更多的数据。
使用推送通知服务有数量限制,用户决定是否使用推送通知服务,并有权取消订阅。通知是用户体验中的重要组成部分,您需要仔细考虑它的使用方式。重复通知或侵入式通知会降低您的应用程序及设备上运行的其他程序的性能。这些通知还会打扰用户。
Push notification 的三种发送方式Raw Notification、Toast Notification、Tokens (Tile) Notification,Tile通知,如天气应用温度变化的信息性通知;Toast通知,立即查看,如突发新闻的重要通知;Raw通知,以自定义的格式将信息直接发送到您的应用程序.

(1) Raw Notification
1.可以发送任何格式的数据
2.应用程序可以根据需要加工数据
3.应用程序相关的通知消息
4.只有在应用程序运行时,才发送。
(2)Toast Notification
1.发送的数据为指定的XML 格式
2.如果应用程序正在运行,内容发送到应用程序中
3.如果应用程序没有运行,弹出Toast 消息框显示消息,App 图标加上两个描述文本,打断用户当前操作,但是是临时的,用户可以点击进行跟踪。
(3)Tokens (Tile) Notification
1.发送的数据为指定的XML格式
2.不会往应用程序进行发送
3.如果用户把应用程序PIN TO START ,那么更新数据发送到start screen 的tile 里面,包含三个属性,背景,标题和计算器,每个属性都有固定的格式与位置,可以使用其中的属性,不一定三个属性一起使用。
应用程序使用推送通知功能主要有两个方面,第一是启用和关闭应用程序推送通知的设定,因为这是MarketPlace要求应用程序必须具备的功能;第二是Web Service的设计和代码实现,因为实现推送通知消息内容的逻辑都是在Web Service端完成的,然后通知MPNS将消息推送至Windows Phone应用程序。Web Service既可以是云端的Cloud Application,也可以是其他的Web应用程序,只要能和MPNS通讯即可。
推送通知消息基础类PushNotificationMessage类,有三个子类:
(1)RawPushNotificationMessage – 当Windows Phone应用程序运行时,可以接收到来自Web Service的Raw通知消息。
(2) TilePushNotificationMessage –当Windows Phone应用程序被固定显示在启动页面,Windows Phone将呈现Tile通知消息的内容。
(3) ToastPushNotificationMessage –发送Toast"警告"消息至Windows Phone。

案例5-1 推送通知服务
        Windows Phone应用程序的推送通知的实现方式中,程序员几乎不需要编写代码就可以实现在Windows Phone的三种推送通知响应,原因是系统本身已经替我们做好了,现以Raw通知消息为例演示如何实现通知服务。
(1) 新建Windows Phone程序。
(2) 添加命令按钮、信息显示文本块,界面如图5-1:
DSC0000.png
图5-1
(3) 添加产生uri事件代码:
private void button1_Click(object sender, RoutedEventArgs e)
{
MyChannel = HttpNotificationChannel.Find(channelName);
if (MyChannel != null)
{
MyChannel.Close();
MyChannel.Dispose();
}
MyChannel = new HttpNotificationChannel(channelName, "NotificationService");//新建一个通道
//返回一个URI的事件
MyChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(MyChannel_ChannelUriUpdated);
//导致不能返回URI的各类异常信息捕捉事件
MyChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(MyChannel_ErrorOccurred);
//发送RAW NOTIFICATION事件,以进一步读取、处理数据
MyChannel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(MyChannel_HttpNotificationReceived);
//到微软服务器注册
MyChannel.Open();
}
(4)得到通知信息的处理
void MyChannel_HttpNotificationReceived(object sender, HttpNotificationEventArgs e)
{
//读取通知内容
using (var reader = new StreamReader(e.Notification.Body))
{
string msg = reader.ReadToEnd();
Dispatcher.BeginInvoke(() =&gt;
{
msgBlock1.Text = msg;
});
}
}
(5)输出手机管道Uri及出错信息处理
void MyChannel_ErrorOccurred(object sender, NotificationChannelErrorEventArgs e)
{
throw new NotImplementedException();
}
void MyChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
{
//得到管道URI
Debug.WriteLine("管道URI:{0}", e.ChannelUri);
}
(4) 新建项目,模拟服务端,构建云计算。新建一Windows Forms Application,界面设计如图5-2:

DSC0001.png

图5-2
(5) F5运行。
单击产生uri,注册uri,如图5-3
DSC0002.png

图5-3
拷贝URI值,运行服务程序,并复制到云端服务器的URI中,如图图5-4:
DSC0003.png

图5-4
选择城市、温度,单击“发送”,在Windows Phone会有相应显示,如图5-5:
DSC0004.png
图5-5


附件:http://down.51cto.com/data/2358377

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-522063-1-1.html 上篇帖子: Android、iOS和Windows Phone中的推送技术 下篇帖子: Windows 8 Release Preview 安装秘技两则
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表