Windows 8.1 应用开发后台任务概述(Windows XAML)

说到后台任务,这是在和许多 Android 开发者聊天的时候,经常被提起的话题之一, Windows 移动平台的后台任务的形式有别与 Android 的后台 service,简单的说在 Windows RT 移动平台下只有在满足一定条件的时候才能运行一部分预先设置好的制的代码。并且 Windows 8.1 和 Windows Phone 8.0 对后台任务有些区别,今天我就为大家介绍一下 Windows 8.1 移动平台下的后台任务,以及他们的运行条件。 首先给大家介绍下 Windows 移动平台的应用运行后台的情景分为多种。 今天我只为大家介绍以下基础任务,后台任务响应系统事件 ( 后台任务的运行条件、ServicingComplete  – 应用更新触发器 )、维护触发器、计时器后台任务,这些内容后面我一个一个的给大家介绍。 在此之前我先介绍下使用后台的应用配置。 手动在 Package.appxmanifest 文件中声明支持的后台任务类型 声明在  <Extensions> 节点中 <Application Id="BackgroundTaskSample.App" Executable="BackgroundTaskSample.exe" EntryPoint="BackgroundTaskSample.App"> <VisualElements DisplayName="BackgroundTaskSample" Logo="Images\squareTile-sdk.png" SmallLogo="Images\smallTile-sdk.png" Description="BackgroundTaskSample" ForegroundText="dark" BackgroundColor="#222222"> <LockScreen Notification="badgeAndTileText" BadgeLogo="images\badgelogo.png" /> <DefaultTile ShowName="allLogos" WideLogo="images\tile-sdk.png"…

0

How to Use Custom Font in Windows Phone 8 Application

When building a Windows Phone app, it’s quite common that we’d like to change the font style of a TextBlock, TextBox and etc. By default, Windows Phone 8 supports fonts for the majority of the writing systems of the world, there are many font families nested in Windows Phone OS, we could take a reference…

2

Windows 8/8.1 及 Windows Phone 8 应用神器 – APP Producer

继 App studio 以及  Project Siena 之后 微软再次打造应用生成器 APP Producer,这个版本的应用生成器功能相对比之前两个版本要简单许多,更适合入门并且真正的支持全平台(WP8 + Win8/8.1)。 下面我就为大家简单介绍一下 App Producer 整个应用生成的流程大致如下: 1.注册 – 所有使用 App producer 的朋友都需要使用MSA注册,只需要简单的填写基本信息即可。(这个过程大概需要一天,因为目前为止是人工审核的)   2. 登录到 App Producer 我们会看到导航栏目中有以下一些选项 Create new: 顾名思义就是创建一个新的应用,一会儿我们来详细看看。 Live Site Health 和 Analytics 都是对于你的应用下载或者访问量的一个数据统计的服务,这个应该是和国内三方统计服务比较相似的。 Store:如果你打算发布你的应用,那么这里就是提供了 Win8 和 WP 商店上传应用的入口。   3. 填写应用名称和市场 (Win8 / Windows Phone 相同名称,默认应用市场 – 就是你应用程序中的内容语言)   4. 应用内容设置…

0

Bookmarks: code reuse between Windows Phone 8 and Windows 8 apps

Here is the list of available resources for reusing code between WP & W8 store apps. Windows Phone 8 and Windows 8 app development http://msdn.microsoft.com/library/windowsphone/develop/jj714089.aspx Maximize code reuse between Windows Phone 8 and Windows 8 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681693(v=vs.105).aspx Building Apps for Windows Phone 8 Jump Start: (19) Windows Phone 8 and Windows 8 Cross Platform Development https://channel9.msdn.com/Series/Building-Apps-for-Windows-Phone-8-Jump-Start/Building-Apps-for-Windows-Phone-8-Jump-Start-19-Windows-Phone-8-and-Windows-8-Cross-Platform-Develop…

0

Windows 8 Store App 以及Windows Phone App分享功能的实现,以及主流社交应用的SDK资源

在这个章节我们主要谈论一下关于W8/WP Store App的社交分享功能,这也是一个广泛讨论的课题。而就在几个小时之前,微信作为亚洲最大用户群体的移动即时通讯app,对外发布了为WP app服务的SDK,这更加促使我们在这里为大家收集一些比较有价值的信息以及第三方实现了分享功能的SDK和服务,以满足大家的开发需求,特别是对于当前分享功能相对有限的Windows Phone 平台。   Windows Store App中的分享   Windows Store App原生在charm bar就提供了分享按钮(share),app最直接方便的分享方式就是实现share contract,作为share source来对外发布希望分享的内容,而只要系统已经安装了实现share target contract的app,则可以接收这类分享。相关的API大部分都在Windows.ApplicationModel.DataTransfer 命名空间下面。整个分享机制可以理解为以下几个步骤: 1. 在app全局或者页面注册DataRequested事件,这个事件会在用户激活charm bar上面的分享按钮时候触发。在事件中,所需要做到的就是把当前上下文中的有用的信息填入到一个需要最终传递到外部的share package (DataRequestedEventArgs.Request)中,这个package有许多常用的在分享场景中所需要的属性,如标题、缩略图、图片、正文等等。 2. 实际上这个event handler走完,对于share source app来说就完成任务了。而对于接收方share target app来说,需要在appmanifest中声明Share Target Declaration,并配置能够接收哪些类型的share,比如HTML、文本、位图等等。接下来系统会把符合当前这个share package要求的能够正确接收这类分享内容的app都列出来,由用户来选择分享到哪里去。 3. 在share target app中还需要实现若干个全局事件,以应对app被share charm激活并传入响应的内容和文件。 MSDN中的详细参考,请移步: Sharing and exchanging data Sharing content source app sample Sharing content target app sample…

0

如何在Windows应用商店中提交您的Windows 8.1 应用更新

翘首以盼的Windows 8.1 不负众望的与大家见面了,与此同时也带来了全新的应用商店,小伙伴儿们要赶紧升级系统啦! 今天给大家介绍下如何提交一个Windows 8.1 的应用,其实微软针对这次系统版本升级对于应用商店的支持类似之前的Windows Phone商店,可以让您的应用同时支持Windows 8 和 windows 8.1 首先登陆 Windows 应用商店 http://dev.windows.com 管理界面功能基本与 8.0 版本没有区别 接着我们可以选择一个应用商店中的应用进行编辑更新 选择创建新版本 随后我们就进入了应用更新流程中,在此我们可以根据应用的实际情况进行更新,今天我就主要介绍下如何更新您的8.1应用,随之点击程序包。 进入程序包更新页面。我们会惊喜的发现这里多出一个显示8.1程序包的位置。 当然这里我们的应用还是要和商店账号进行关联签名。(同 8.0) 随后我们将打包好的8.1的Appx包上传至应用商店 点击保存。 随后您需要设置针对8.1的应用从新编辑提要内容说明。 这里windows应用商店会帮您把8.0的描述信息自动复制过来,当然在这里我建议大家在这里加入8.1的新功能描述和截图帮助用户了解我们的应用。 (包括:提要、应用功能、屏幕截图、说明已经建议的硬件) 和windows8.0共享的内容(关键字、版权和商标信息、其他许可条款、以及促销图像、网站链接、支持人员联系信息和隐私策略) 点击提交进行认证按钮,至此您就完成了 Windows 8.1 应用更新。 剩下的事情就是耐心等待应用认证流程了 :)

0

Windows Store App中判断运行的app应用是否有用户操作

对于有些Line of Business (LOB)的应用,可能为了保护一些屏幕上显示的敏感信息,会有监测用户空闲时间并锁定当前屏幕的需求。对此Windows一直有提供“屏幕保护”并在唤醒时回到登录界面的功能,但是毕竟这个设置以及空闲时间并不能通过WinRT的API进行设置,那么我们如何才能做到在应用级别内做到呢? 这个解决方案主要是解决两个问题,先是需要来检测人为操作,包括鼠标键盘和触摸输入,其次就是加入一个内建的timer来检测空闲时间,并触发timeout之后的下一步逻辑,如锁定屏幕、弹出提示等等。 对于前者,我们可以通过Window.Current.CoreWindow.KeyDown以及Window.Current.CoreWindow.PointerMoved来在app全局范围内进行事件检测。而对于timer逻辑,我这里简单地包装了一个类,可以根据需要在app级别或者page级别来加入,并自定timeout之后的动作。 public class AppIdleDetector { public TimeSpan IdleTime { get { return DateTime.Now – IdleStartedTime; } }   public void Start() { UnhookCoreWindowsEvents(); HookCoreWindowsEvents(); ResetIdleTimer(); }   public void Stop() { UnhookCoreWindowsEvents(); }   private DateTime IdleStartedTime;     private void ResetIdleTimer() { IdleStartedTime = DateTime.Now; }   private void…

0

Win8/WP store app的代码安全与混淆

我们在为Top App的技术支持过程中,一直有收到关于Windows 8 & Windows Phone商店应用的代码安全解决方案的询问。在这篇文章中,我简单地把我们收集到的信息做一个总结。所以很抱歉这篇文章并不是一个解决方案。 当前Windows Phone 8支持C#/VB.NET、C++来进行开发,而Windows 8 Store App则再多一个JS。     Windows 8 Store App   Win8 store app的package上传到store之后,只会在签名层面多一些处理,而不会牵涉到任何的代码保护或者混淆措施。所以我们在本地的app安装目录下,可以直接拿到.Net app的IL dll,或者直接用写字板就能打开HTML/WinJS app的代码。 微软没有官方的代码混淆解决方案或产品。我们有找到以下几个能够混淆Win8/WP store app (.NET)代码的第三方解决方案,不过比较遗憾的是这些都是收费应用,但基本都提供了试用版。其中第一家preemptive,好几代的VisualStudio中都集成了其Community Edition,但遗憾这个版本并不支持Win8/WP store app。这些第三方产品都不在微软的官方技术支持范围内,我们亦不保证能够完美运行,所以在上传您的app之前,希望多加测试。 .NET Obfuscation (Marketplace/Professional edition) http://www.preemptive.com/products/dotfuscator/dotfuscator-for-marketplace-apps Eazfuscator.NET http://www.gapotchenko.com/eazfuscator.net Babel Obfuscator http://www.babelfor.net/ Crypto Obfuscator For .Net http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm Skater .NET Obfuscator http://rustemsoft.com/obfuscator_net.asp 而对于WinJS,理论上市面上提供javascript minify的工具都应该能够提供解决方案,我们有找到 jscrambler https://jscrambler.com/…

0

如何在Windows商店应用中防止HTTPS通讯被中间人攻击解密?

背景 几个月前,我们这里接到一份消息,有个人评论一家业内著名的Windows Store开发者使用明文传递用户账号信息。这是一个很震惊的问题,我们无法想象这样一家著名的开发公司也会犯如此低级的错误。我们的生活早已离不开这家公司开发的软件,当然也离不开Windows 8。 在紧急的研究之后,我们发现,事实并非如此,实际上,这个App是使用加密的HTTPS信道去传输信息的。而评论这条消息的人正是使用了一种类似于中间人攻击的方法,在本地破解了HTTPS的传输,并读取到了内容。 而这个工具也是我们经常使用的用作HTTP分析的工具——Fiddler。不过,这个工具仅仅只能作为本地的代理去分析从本地或到达本地的流量。虽然我们没有办法去获取到加密过的HTTPS流量,但是我们可以使用这个工具去解密本机发出的HTTPS流量,无论我们是用什么样子的浏览器。 具体细节,可以参考Fiddler官方的一篇文章,http://fiddler2.com/Fiddler/help/httpsdecryption.asp,这篇文章描述了如果使用中间人攻击的方法,采用一张伪造的HTTPS证书来分析HTTPS流量。 其实,回到最初的问题,这个评论人提到的问题是可以在此App的不同平台版本下重现的,当然,也可以在其他软件中重现。而这位“怀有恶意的”评论人并没有提及这些事实,仅仅针对于Windows 8 Store版本。也使得我们不得不怀疑,这位评论人究竟出于什么样的原因编造了这样的事情。 虽然我们知道了事情的经过,也虽然我们这里并没有做错什么,可是我们是不是还能做点什么,避免此类事情的再次发生呢? 研究: 作为一名MSFT的工程师,我们还是把重点放在了技术上面。通过技术去减少此类不实评论。实际中,我们没有办法阻止中间人获取到流量信息,但是我们可以探测到他们。现在我们最大的困难是,在桌面时代,我们有着很多可用的API,可是在Windows RT时代,可用的资源就变少了。 最初,我们想在Windows RT上找到一种可以远程颁发证书的方法,像是在传统的.NET平台中做得一样,RemoteCertificateValidationCallback。不幸的是,直到最后,我们也没有办法在API层面上找到可以去验证SSL证书的方法。 不过,在配置层面呢? 解决方法: 之所以Fiddler可以去解密HTTPS流量,是在于,Fiddler把自己的证书放到了Windows的根信任证书里,而我们的Windows Store App又继承信任了Windows根信任证书。 如果我们把所有的信任证书都拿掉,仅仅保留一份我们自己的证书,事情就可以解决了。灵感来源于此,SSL server authentication using application specific trusted roots: 你可以编写 Windows 应用商店应用,该应用使用自己的信任密钥,而不是从系统信任中继承。在安装你的应用之后,你可以使用清单来指定根证书也安装在专用存储中,而且该应用可以使用根证书与 Web 服务器建立安全的 HTTPS 连接。根不必通过 Microsoft 根程序进行信任。根仅受你的应用的信任,而且不会影响对系统上其他应用的信任。 还有,Setting the certificates extension: 证书扩展使你能够随应用安装证书、指定是否从系统信任继承,以及设置证书选择标准。 事情变得简单了,我们仅仅需要让我们自己的App信任唯一的由我们自己颁发的证书就可以了。请看下面App Manifest文件的截图,在Solution Explorer里,仅仅需要把证书文件部分设置为“build action = content, copy if newer”:   哪里获得我们需要的证书: 在我们测试中,我仅仅用到了自签名的cer证书。但是,我们怎么能得到一张在生产环境中使用的证书呢?其实,很简单,去问问看你的网站管理员!不过,如果他不是很和蔼可亲怎么办?其实我们也可以自己从浏览器中提取。…

1

How to protect your HTTPS communication from Man-In-the-Middle’s decryption in Windows Store App

[Update Feb.24 2014] There might be a mechanism change of the certification trust logic recently. Check out our second post for the topic http://blogs.msdn.com/b/lighthouse/archive/2014/02/24/part-ii-how-to-protect-your-https-communication-from-man-in-the-middle-s-decryption-in-windows-store-app-about-which-certificate-should-be-included-for-exclusive-trust.aspx before going further.   Background: Months ago we got a report that a bad guy was accusing one Windows Store app provider of transferring the user credential in plain text, which was quite…

1