关于 promise(用于使用 JavaScript 编写的 Windows 应用商店应用)

当您使用 JavaScript 编写 Windows 应用商店应用时,一旦执行涉及异步 API 的操作时,就会遇到称为 promise 的构造。此外,无需很长时间,为顺序异步操作编写 promise 链就会成为您的一种习惯。 但是,在开发的过程中,您可能会遇到其他使用 promise 的情形,此时您可能无法完全了解具体情况。为 ListView 控件优化项目呈现功能就是一个很好的例子,如在 HTML ListView 优化性能示例中所示。我们将在随后的一篇博文中继续探究这一主题。或者,您也可以了解一下 Josh Williams 在 //build 2012 大会的深入探讨 WinJS 讨论(略有修改)中展示的以下重要代码段: list.reduce(function callback (prev, item, i) { var result = doOperationAsync(item); return WinJS.Promise.join({ prev: prev, result: result}).then(function (v) { console.log(i + ", item: " + item+ ", " +…

1

优化 ListView 条目呈现

对于许多使用 JavaScript 编写的 Windows 应用商店应用(可以处理数据集合),与 WinJS ListView 控件很好地协同工作是获得出色应用性能的基础。这并不奇怪:当处理数以千计的条目的管理和显示时,您对这些条目进行的每个数位的优化可能都发挥着重要的作用。最重要的是每个条目的呈现方式,也就是说,如何呈现以及何时呈现,ListView 控件中的每个条目都会构建于 DOM 中,并成为应用的可见部分。实际上,当用户在列表内快速平移时并且希望列表能够跟进平移的速度时,何时呈现就成为一个重要的要素。 通过 HTML 中定义的声明性模板或通过一个自定义的 JavaScript 呈现函数(将会为列表中的每个条目调用该函数),就可以在 ListView 中呈现条目。尽管使用声明性模板是最简单的,但是它不能对整个过程提供太多具体的控制。另一方面,呈现函数允许逐条目自定义呈现,并实现一定量的优化,HTML ListView 优化性能示例中演示了其中的一些示例。优化包括: 允许异步传输条目数据和已呈现的元素(基本呈现函数支持该功能)。 将条目形状的创建与内部元素的创建分开,条目形状对于 ListView 的整体数据布局是必不可少的要素。这是通过一个占位符呈现器提供对该功能的支持。 重用以前创建的条目元素(及其子集),方法是替换数据、避免大部分元素创建步骤,此功能是通过一个循环占位符呈现器提供支持。 延迟耗费资源的可视性操作(如图片加载和动画显示)直到条目可见,并且 ListView 没有快速平移,此功能是通过一个多级呈现器来完成。 将这些相同的可视性操作同时进行批处理操作,以便利用多级批处理呈现器将重新呈现 DOM 的工作量最小化。 在本篇博文中,我们将逐一介绍所有这些阶段,并了解它们是如何与 ListView 的条目呈现过程相互配合。您可以想象得到,围绕着何时呈现条目所进行的优化涉及大量的异步操作,因此会有大量的承诺。因此在这个过程中,基于先前发表的关于承诺博文,我们还会对承诺本身有更深入的理解。 作为一条适用于所有呈现器的一般原则,令核心条目呈现时间(不包括延迟的操作)尽量最短非常重要。因为 ListView 的最终性能表现很大程度上取决于它的更新与屏幕刷新间隔的吻合程度,在条目呈现器上花费的额外的几个毫秒可能会使 ListView 的整体呈现时间推迟到下一个刷新间隔,导致丢失帧和视觉效果波动。也就是说,条目呈现器就是一个用于优化您的 JavaScript 代码的位置。 基本呈现器 我们先快速了解一下条目呈现函数(我简单地称为呈现器)是什么样的。呈现器是您分配给 ListView 的 itemTemplate 属性而不是模板名称的一个函数,将会在必要时为 ListView 希望包括在 DOM 中的条目调用该函数。(另外,您可以在 itemTemplate 页查找到呈现器的基础说明文档,不过它是切实显示优化的示例。) 您可能希望条目呈现函数仅仅获得一个来自 ListView…

0

参与Game On Virtual Event

游戏软件是 Windows 应用商店的重要组成部分。如果您计划在 Windows 应用商店发布您的游戏,我们将非常荣幸的为您推荐这次有关于游戏开发的虚拟活动。无论您是游戏制作新手还是专业人士,这次的活动都将会是免费的和开放的。 我们将会使用 YoYo Game 的GameMaker: Studio 来告诉您如何在最短的时间里发布一个高质量的游戏。GameMaker:Studio 拥有强大的内建设计功能和抓取工具,即便您没有相关的游戏开发经验它也能让您以最快的速度进入角色。如果您已经是拥有一定经验的游戏制作人,那么它的高级工具将会更加丰富您的经验,让您能够制作出独一无二的游戏。 网上活动将会在太平洋时间的6月15日星期六启动,其将包括一个发布会和在线交流。在带您探索如何去开发游戏的同时,您将会有机会了解到更多形式的游戏以及如何加入图片,关卡以及游戏背景音乐等等。我们还会采用一对一的模式在整周连续不断的通过 GameMaker 论坛向您提供帮助。 无论您是一个初学者或者是第一次经历开发,又或者您是一个经验丰富的专业人士,这次的活动将会协助您开始游戏的制作,上传并最终发布到Windows 应用商店。想要了解更多的信息或是查看免费的资源和工具,您可以登录 http://msdnevents.com/gameon/. –Robert Rodriguez-Lawson, 高级内容发布经理,Windows 内容制作人

0

凭据保险箱:在 Windows 应用商店应用中处理用户和密码的解决方案

如果您还未听说过 Windows 应用商店应用可用的 凭据保险箱,现在就来了解一下相关信息吧。为什么呢?因为不仅可以简化存储和检索用户凭据的任务,它还可以安全地存储用户凭据,并且凭据可以随着用户的 Microsoft 帐户一起“免费”漫游。 假设您有一个应用,该应用会连接到一个服务以访问受保护的资源(如媒体文件、社交网络等)。您的服务需要每个用户的登录信息。因此,您已经在应用内构建了 UI,可以获取用户的用户名和密码,以便使用户登录到服务。这一切都运行流畅无误。 现在您希望为您的用户提供更好的功能,安全地存储他们的登录信息,这样,他们不必在每次使用您的应用时都需要登录一次。输入凭据保险箱。只需几次简单地调用凭据保险箱 API,您可以为用户存储用户名和密码,并可方便地检索用户名和密码,在下次用户打开应用时帮助用户方便地登录。 安全存储 凭据保险箱的一个显著优势就在于可以实现,应用将用户凭据存储在一个安全的位置,当存储在磁盘上时,凭据信息是加密保存的。您当然可以将应用的用户凭据存储在本地存储中的一个文件内,但是以纯文本的形式存储用户凭据会带来潜在的安全漏洞。如果用户的系统因某种方式受到了损害,则用户的用户名和密码就会被轻易地访问和控制。如果使用凭据保险箱来存储用户名和密码,则恶意来源最多就是得到一个加过密的文件。 每个 Windows PC 用户的凭据保险箱都是独一无二的,只有存储凭据的应用才可以访问凭据。也就是说,您只能检索为您的应用存储的凭据。类似地,其他任何应用都不能获取您的应用在保险箱中存储的凭据。 漫游凭据 用户可以获得的另一项好处是,当您使用凭据保险箱存储用户的用户名和密码时,存储的凭据可以随用户的 Microsoft 帐户漫游到他们使用该 Microsoft 帐户的任何其他可信机器。这可以令安全应用对您的用户来说更为方便,因为您的应用可以自动为用户登录 – 无需重新提示用户输入凭据 – 在他们已经利用 Microsoft 帐户安装了您的应用并且有相关 Microsoft 帐户的任何可信电脑上。 其工作方式与域帐户有一点不同。如果存在利用 Microsoft 帐户存储的凭据,并且您将该帐户与域帐户相关联(例如您工作时使用的帐户),则您的凭据将漫游到该域帐户。不过,利用域帐户登录时添加的任何新凭据将不会漫游。这可以确保该域的私有凭据不会在域以外公开。 存储用户凭据 在凭据保险箱中存储用户凭据是一个快捷的两步过程。首先,您使用来自 Windows.Security.Credentials 命名空间中的 PasswordVault 对象获取对凭据保险箱的引用。然后,您创建一个 PasswordCredential 对象,其中包含您的应用的标识符、用户名和密码,并将这些信息传递给 PasswordVault.Add() 方法以便将凭据添加到保险箱。 C# var vault = new Windows.Security.Credentials.PasswordVault();vault.Add(new Windows.Security.Credentials.PasswordCredential( “My App”, username, password)); JavaScript…

0

使用地理位置和 Bing 地图创建位置感知应用

通过将用户的位置一并键入您的应用的业务逻辑,您可以方便地为用户提供其当前所在地理位置的天气、优惠券、体育活动及赛事或音乐会等相关信息。您可以使用 Windows 8 的地理位置功能以及 Bing Maps SDK,创建能够感知位置的出色 Windows 应用商店应用。 让我们来看一下,您的应用如何利用 IP 地址、WiFi 网络或 GPS 数据使用位置服务来为用户提供特定于位置的信息。一旦您有了位置信息,就可以使用 Bing 地图 SDK 向用户显示他们所在的位置。 检索位置 Windows.Devices.Geolocation 命名空间用于检索您的位置。您使用 GPS、WiFi 网络还是 IP 地址来检索用户的位置取决以下两个主要因素: 所要求的位置精确度级别。这是符合您的应用需求的理想精确度级别。 位置数据的可用性。就是说,并不是所有的设备都内置 GPS。或者,当请求位置时,网络或 Wi-Fi 连接可能不可用。 所需的精确度 请求位置时,您的应用应指定需要的精确度,以便尽快地返回给定范围内的位置数据。每种位置类型具有不同的精确程度: GPS – GPS 提供的位置精确度最高,可以精确到大约 10 米。不过,如果 GPS 传感器需要“唤醒”并获取卫星数据,然后再对数据进行三角化处理,可能需要一到两分钟返回位置详细信息。不过,GPS 一经获得卫星连接,它就可以快速地获取下一个位置点。当然,使用 GPS 越多,消耗的电量就越大。Geolocator.DesiredAccuracy 属性必须设置为“高”,这样 GPS 才能获取数据。 Wi-Fi – Wi-Fi 连接可以提供 300-500 米的精确度。如果连接正常,则返回位置数据的速度要快于 GPS 获取卫星连接的速度。将…

0

介绍一种新的 Windows 开发人员中心体验

自 2011 年 10 月推出 Windows 开发人员中心以来,我们已经与全球范围内的众多开发人员和设计人员紧密协作,让他们了解我们如何为应用构建者提供出色的指导、激发其创作灵感并提供示例。通过网站数以百万计的访客以及用户的反馈,我们评测了工作的成效如何以及哪些功能和体验还可以继续改进。 最近更新 Windows 团队致力于构建一个充满生机和活力的应用生态系统。有三种方式可以展示应用生态系统的好坏:设计出色的应用、良好的经济收益以及广泛的传播机会。新的开发人员中心为应用构建者、设计人员以及企业提供他们在开发出色的应用以及与 Windows 构建业务关系时所需的资源。 为了支持这些目标,开发人员中心涉及以下几个方面: 导航模式已经变化,您可以查找到您在应用开发生命周期过程中所需的所有相关内容 网站设计突出显示了优先级较高的任务、应用场景和新内容 除了提供开发人员需要的内容、示例和下载内容外,设计人员和企业访问资源比以前更为方便。 取决于您正在构建的内容,可以导航到以下四个区域之一:Windows 应用商店应用、Internet Explorer、Windows 桌面和 硬件。上述每个区域都提供了一种解决上面所涉及问题的新体验。在本篇博文中,我们将详细地了解对 Windows 应用商店应用所做的具体更改。 内容适合您的职务角色 如果找不到想要的内容,网站信息量再大对您而言也是没用的。开发人员中心中有数以万计的主题信息,内容的条理性以及可发现性至关重要。对于 Windows 应用商店应用开发,这意味着要更加紧密关注职务角色和应用场景,从将您着手所需的一切内容放置于一个位置到更好地支持设计人员和企业。以下是一些特色功能介绍。 开发人员 我们已经对构建出色的 Windows 应用商店应用所需的内容进行了精简。当访问 Windows 应用商店应用主页时,将会看到: 位于显著位置的“主要任务和内容”可以帮助您跳转到自己所需的内容。您所在区域的“本地活动”以及最近添加到网站的最新资源会以突出形式显示。 “下载”可以帮助您进一步深入了解代码、着手行动所需的一切资源以及有关如何将应用放置到 Windows 应用商店的详细指导。 重要的代码示例会突出显示,您在关注开发生命周期的同时可以更方便地浏览帮助指南。 网站内的“One Dev Minute”视频,令您可以快速地浏览如何向应用中添加功能。 设计人员 我们重新打造了网站的设计部分,令其更易于使用,同时更加全面。用户可以更方便地查找有用的下载内容和可重复使用的设计资产,设计灵感和案例研究为您提供在 Windows 上获得独一无二的体验所需工具。有了这个触摸友好并且易于使用的页面设计,您构建出色应用所需的一切内容都可以手到擒来。 业务 Windows 应用商店带来的商机巨大,其经济模式比竞争平台的更为出色,灵活性令您可以打造自己的业务。网站新的市场部分可以为您推销自己的应用、评估遥测数据以及通过应用认证提供更多提示和技巧。我们已经了解到如何更容易地通过认证的很多内容,我们对相关内容进行了改进以帮助您加快这个过程。 当然,您也可能担任多项职务角色,我们认为新网站的结构同样也可以提供良好的支持。不论是业余爱好者还是创新型公司乃至大型企业软件开发商,新的网站的结构都可以帮助您利用 Windows 实现您的创新灵感以及业务愿景。 未来前景更为广阔,我们期待您的加入 现在距离 BUILD 2013…

0

共享到您的目标应用

在博文从您的应用共享内容中,我们介绍了将与好友聚餐示例应用中的内容共享到多个目标应用,从而允许用户实现丰富的端到端应用场景的概念。Windows 8 中的应用提供了您的客户会希望与好友或其他应用共享的有趣内容。引人注目、设计精良的共享目标将使您的应用对于客户的社交和连接体验变得至关重要。 在本篇博文中,我们来看一下如何对您的应用使用“共享目标”合约,尤其是“与好友聚餐”等应用。使用此合约,您的应用可以从其他应用接收内容,并使用这些内容来改进其质量。我们希望帮助您将您的应用变得出类拔萃! 目标应用使用“共享目标”合约构建,并且专为快速、轻松的共享体验而设计。并非 Windows 中的每个应用都将成为共享目标,但如果您的应用可以发布、转换、存储或通过某种方式为从其他应用接收的内容增加价值,则创建共享目标将为您带来许多好处。 您的应用将始终显示于目标应用列表中。它可与共享您需要的数据的其他应用即时关联并建立连接。 “共享”合约创建了您的应用和任何目标应用之间的连接,而无需对两个应用进行一对一的集成。 由于“共享”超级按钮始终存在于操作系统中并可供使用,它可以使您的目标应用存在于操作系统中,从而拓宽了您的应用的范围。这样可以引导更多的客户使用您的应用! 接收共享内容 让我们一起来看几个示例,其中显示了如何通过共享目标应用提供引人入胜的使用体验。 您可能已对 Windows 8 中的邮件和人脉应用非常熟悉。邮件应用创建了接收并与一个或多个好友共享内容的轻松个人共享目标体验。人脉应用允许您与社交网络上更广泛的受众共享内容。除社交共享外,您还可以进一步使用应用到应用共享。SkyDrive 等生产效率应用可以从 Windows 中的任何位置接收文件,并将它们存储到云;笔记应用可以接收文本、链接和各种其他格式的数据,并对这些数据进行归档以供日后参考。发挥创意的空间十分巨大。 请看以下两张照片,其中展示了将 Photos 应用中的照片共享到 PuzzleTouch(一款将照片转变为视觉拼图的游戏)的共享流程。 图 1:源应用位于左侧;可接收照片的已筛选目标应用列表位于右侧的共享窗格中。 PuzzleTouch 是可从 Photos 应用接收照片的共享目标之一。 图 2:目标应用预览可让用户在右侧选择他们要构建的拼图类型。当用户切换回该应用时,拼图将准备就绪。 什么是共享目标应用? Windows 中的端到端体验由两部分组成。首先,必须具有在 Windows 中能够以不同格式来提供内容的源应用。其次,还必须具有注册为能够识别特定格式并作为共享内容的目标的共享目标应用。使用“共享”合约,源应用和共享目标应用可以进行相互通信。 当考虑您的应用的共享体验时,应想到共享目标应用是在托管共享窗口中呈现的。请确保设计了这种体验,从而您的用户可以快速预览内容并在此视图中确认共享。以下示例显示了邮件共享目标应用视图,其允许用户从浏览器与他/她的邮件联系人之一快速共享链接。 图 3:使用邮件目标应用来从 Photos 应用共享链接 “与好友聚餐”的应用场景 现在,我们来考虑一下与好友聚餐应用是如何创建引人入胜的共享目标应用体验的。如果您对“与好友聚餐”应用非常熟悉,将会了解到用户可在该应用中采取的两个主操作 – 创建计划和向其备选列表添加餐馆。当然,还有编写评审、发表评论和查看好友的备选列表等操作,但这些操作在主应用程序的上下文中才有意义。对于这两个突出的核心应用场景,让我们来进行一次快速的健全性检查,以查看是否这些应用场景可通过“与好友聚餐”目标应用有效地完成。 创建今晚的计划 尽管这是主应用程序的核心应用场景,但并不是共享目标体验的最佳应用场景。以下是详细原因:共享目标体验应具有轻松快捷的特点。创建计划是一项更为复杂的任务 – 用户要了解好友希望尝试的其他餐馆,比较他们的备选列表中的一些餐馆并回顾评分等。由于计划涉及利用在主应用程序视图中以最佳方式呈现的详细信息,因此将这些内容压缩到共享目标应用将会缺乏吸引力。   添加到备选列表 作为共享目标中的简短指令任务,这一应用场景的效果确实非常不错。该应用体验中的一些亮点包括: 用户会在其他应用中遇到餐馆,无论是旅行计划应用、包含建议的地方城市应用、美食博客还是其他应用。“与好友聚餐”应用是个出色的目标,它可以将餐馆整合到“我的备选列表”区域。 应用的目标应用视图旨在帮助用户在不同应用的上下文中快速进行操作。因此,向备选列表中添加餐馆是在共享目标中显示餐馆的极佳选择。 当然,用户也可以通过切换应用、重复搜索来查找餐馆,然后将餐馆添加到他们的备选列表中,而快速点击“共享”要轻松的多。…

0

使用 NFC 开发前沿应用

近场通信 (NFC) 是一种新兴的短距离无线通信技术。在 2 厘米的精确范围内,人们可以通过物理方式点击连接设备来发送/接收内容。通过点击可以快速选择人或物。这种信息交流方式不仅速度快,而且易于理解。操作方法一目了然,无需阅读任何手册。 例如,假设您与好友正在共同欣赏一些照片,并且她想要您的照片;使用 NFC,您只需对着她的 PC 点击您的设备就可以发送照片。是否觉得过于简单了?也许是,不过此项技术的初衷就是为了简单地在设备之间共享内容。 图 1:此图显示 Nokia 360 音箱 与 Windows Phone 共享蓝牙配对信息 与蓝牙或 Wi-Fi 类似,NFC 是由 NFC 论坛 (NFC Forum) 定义的一种标准无线传输协议。您的 PC 需要 NFC 无线通信装置。许多 Windows 8 PC 中直接集成了 NFC 无线通信装置。如果您的 PC 未集成 NFC,可以购买 NFC 收发器,并将其插入您的 PC。 NFC 提供了一些非常酷的功能。人们可以点击并发送照片,在餐馆点击菜谱并订餐,甚至可以通过点击与蓝牙设备配对。这些场景彼此有很大不同,但一个共同点是通过“点击”启动体验。NFC 可用于各种设备,如 PC、电话、音箱、耳机、无线显示器等,这使得将设备连接在一起成为一种真正直观的体验。此外,NFC 还使用 RFID 标签;它们是真正便宜、轻巧的无源天线,可容纳大量的数据,并可以粘贴在几乎任何物体上,最常用于海报。例如,购买电影票如同点击电影海报一样简单!这就是 NFC 标签。我们将通过点击 NFC 标签这样一个基本示例来演示 NFC…

0

创建连接的 Windows 应用商店应用

当前,人们身边与网络连接的设备的数量不断增加。最新的冰箱和洗衣机甚至都能与 Internet 和家庭网络连接。因此,最终用户期待自己的应用也能实现网络连接也就不足为奇。这些“连接的应用”将使用来自 Web 的最新内容(社交媒体、数字媒体、博客以及其他类型的内容)。开发连接的应用已经实现了常态化,但是处理诸如网络连接断开、按流量计费的网络成本,或性能问题等常见问题仍让开发人员觉得力不从心。Windows 8 让编写连接的应用变得空前简单。 在本篇博文中,我们将介绍一些有用的提示,这些提示有助于用户在使用您的 Windows 应用商店应用时获得快速而流畅、轻松、连接的体验: 为您的应用场景选择正确的 API 选择正确的网络功能 为按流量计费的网络调整应用行为 应对网络状态变化 缓存内容以提高流畅性 我们来详细看看各条提示。 选择正确的 API 如果您打算建造一座房屋,那么您需要适当的工具。您需要锤子来钉钉子,需要拉锯来切割板子,还需要螺丝刀来拧紧螺丝钉。同样的,您在开发连接的 Windows 应用商店应用时也需要使用适当的网络连接 API。Windows 8 提供了大量网络连接 API,这些 API 可让您的应用通过 Internet 或专用网络与其他计算机和设备通信。因此,您的首个步骤是确定您的应用需要怎样的网络连接功能。 最常见的网络连接应用场景是访问网站来检索或存储信息。使用网站来存储用户信息和游戏分数的游戏便是一个简单的例子。而更为复杂的示例可能是连接到一个基于 REST 的 Web 服务,并使用 Web 服务提供的库来访问或存储信息的应用。Windows 8 拥有多个与 Web 服务和网站连接的 API。借助这些 API,您的应用可访问支持 REST 或向 Web 服务器发送基本 HTTP 协议命令(如 GET 和 POST)的 Web 服务。对于 Web…

2

立即注册参加 //build/ 2013 大会!

上周,Steve Guggenheimer 宣布了 //build/ 2013 大会召开的消息。该大会将于 2013 年 6 月 26 日至 28 日在旧金山莫斯康展览中心举行。//build/ 大会是大家深入了解 Windows 应用商店应用开发的绝好机会。该大会将为您提供优秀的演示文稿、演示和信息研讨会等内容。我们工程团队的许多成员将亲临旧金山,为您主持这些演示并回答您的问题。这是您了解有关 Windows 应用商店应用开发的最新、最有价值信息的绝好机会。 即日起(4 月 2 日,星期二)开放注册。请访问 www.buildwindows.com 了解有关大会和注册的详细信息。 热切期待您的光临!

0