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

Windows 8 学习笔记(十九)--.后台任务BackgroundTask(II)

[复制链接]

尚未签到

发表于 2015-5-22 10:16:01 | 显示全部楼层 |阅读模式
   BackgroundTask and LockScreen

LockScreen锁屏,我们在使用电脑时经常会锁屏,当我们锁屏时,我们也可以看到一些消息,如未读邮件数、某聊天软件的新消息数等,这就是BackgroundTask与LockScreen之  间的共同实现了~  一般LockScreen的信息包括以下几部分:

(1) 日期与时间
(2) 网络状态
(3)电池量

这是最基本的几部分,当然还有系统自动设置的锁屏应用,如邮箱、日历、信息等,那我们自己创建的应用如何实现呢?  

在这之前,先了解LockScreen的基本内容~  

   1、什么情况下需要将应用程序设置为锁屏应用?
      锁屏应用一般用于向用户报告重要或有意义的消息,且消息内容简洁实时,使用户一瞥屏幕,就能看到最新的信息
   2、声明LockScreen应用能力
     在应用程序的Package.appxmanifest中需要声明锁屏功能和屏幕显示的徽章,具体如下 : DSC0000.png
  3、在程序中可以提示用于是否将应用放置于锁屏上,通过BackgroundExecutionManager.RequestAccessAsync()会出现一个对话框,当选择“allow”,程序将会放置于锁屏中,但锁屏应用最多只能有7个,当超过七个,会询问用户替换哪个应用。

   我们也可以手动将瓦片程序设置为锁屏应用: DSC0001.png

     下面我们实现一个简单的定时推送信息至LockScreen APP:

   第一步:新建一个空白页面PushNotification.xaml,上面放置三个按钮,分别实现设置APP到LockScreen、开启后台定时推送消息、注销后台任务三个按钮 DSC0002.png
  第二步:新建一个后台任务类NotificationBackTask.cs文件,功能就是一人简单的定时器,实现定时推送,代码与前一篇的很相似,通过    BackgroundTaskProgressEventHandler去触发,目前我还没找到其它的方式去触发主程序,还望高手指教一下~

    第三步:设置主工程中的Package.appxmanifest文件 DSC0003.png
  同样需要在声明中添加后台任务 :
DSC0004.png
  第四步:实现PushNotification.xaml的后台代码
   点击”Set LockScreen App”按钮:   

    async private void btnSetLockScreen_Click(object sender, RoutedEventArgs e)
        {
            BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
            switch (status)
            {
                case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:
                    tbInfo.Text = "This app is on the lock screen and has access to Always-On Real Time Connectivity.";
                    btnSendBadge.IsEnabled = true;                  
                    break;
                case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:
                    tbInfo.Text = "This app is on the lock screen and has access to Active Real Time Connectivity.";
                    btnSendBadge.IsEnabled = true;                  
                    break;
                case BackgroundAccessStatus.Denied:
                    tbInfo.Text = "This app is not on the lock screen.";
                    break;
                case BackgroundAccessStatus.Unspecified:
                    tbInfo.Text = "The user has not yet taken any action. This is the default setting and the app is not on the lock screen.";
                    break;
                default:
                    break;
            }}    若APP没有加入LockScreen,会出现以下画面:
DSC0005.png
  点击“Send Badge BackTask”按钮,同样需要先注册task   
  var builder = new BackgroundTaskBuilder();


builder.Name = SampleBackgroundTaskName;
builder.TaskEntryPoint = SampleBackgroundTaskEntryPoint;
SystemTrigger trigger = new SystemTrigger(SystemTriggerType.UserAway, false);
builder.SetTrigger(trigger);
SystemCondition condition = new SystemCondition(SystemConditionType.UserPresent);
if (condition != null)
{
    builder.AddCondition(condition);
}
task = builder.Register();
task.Completed += task_Completed;
task.Progress += task_Progress;  
  在task_Progress事件中实现消息的推送:   


void task_Progress(BackgroundTaskRegistration sender, BackgroundTaskProgressEventArgs args)   {
  Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
       {
          var taskRegistration = sender as IBackgroundTaskRegistration;
          var progressArgs = args as BackgroundTaskProgressEventArgs;
          if ((taskRegistration != null) && (progressArgs != null))
          {//BadgeNumericNotificationContent badgeContent = new                          BadgeNumericNotificationContent(progressArgs.Progress);
                                                     //BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badgeContent.CreateNotification());

              ITileWideSmallImageAndText03 tileContent =                  TileContentFactory.CreateTileWideSmallImageAndText03();
              tileContent.TextBodyWrap.Text = "This tile notification has an image, but it won't be displayed on the lock screen";
              tileContent.Image.Src = "ms-appx:///Assets/tile-sdk.png";
              tileContent.RequireSquareContent = false;
            }
         });
}  
  
  

  以上实现了两种推送,一种是简单badge,还有一种是Tile信息带文本信息的,对于后一种带详细信息,需要在PC Settings里手动设置,文本信息才会在LOCKSCREEN中显示,如下:
DSC0006.png
  以上就是LockScreen的简单介绍,可能还有些不足之处,还望高手指点~
  

运维网声明 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-69461-1-1.html 上篇帖子: Windows Phone 8初学者开发—第6部分:设置应用程序的样式 下篇帖子: Windows Phone 8初学者开发—第5部分:布局和事件基础
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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