不可不知的Mango — 开发者篇(2)(转)
在上一篇《你不可不知的Mango — 开发者篇(1)》中我已经给大家介绍了在Mango中新的Sensor API和多任务处理机制,今天我们接着聊聊Live Agents。
3。Live Agents
首先我们看看Local Live Tiles。Live Tiles是Windows Phone 7提出来的一个概念,用户可以将多种内容固定在主界面上。例如程序的快捷方式,音乐专辑,网页等等。由于你可以通过Push Notification机制来动态的更改Tiles上的数字、背景图片以及文字。所以称之为Live Tiles,也就是希望给用户带来一些“活”的感觉,而不止是简单的快捷方式。但是更新这个Tile相对比较麻烦,第一种方法就是使用Push Notification,这样你必须假设自己的Push Notification服务器来做处理。第二种方法是使用ShellTileSchedule API,这个API恶心的地方在于更改的背景图片只能是一个远程URL上的图片。而且,不管是通过哪种方法来更新了Tile之后,它始终只是停留在改变后的那个界面(背景、数字、标题文字),其实并没有多少动感。所以在Mango中又增加了新的ShellTile API来更好的处理Tile。
在新的机制下,每个程序的Tile其实由’Front’和’Back’(即前和后)两部分构成。对于’Front’来说,其实就是以前的Tile,它具有BackgroundImage, Title和Count三个属性:
而’Back’则是新加入的一个界面,不同于Front的地方它设置的属性略有不同,即为BackBackgroundImage, BackTitle和BackContent。注意,也就是数字变成了文字:
如果你设置了Tile的Back部分,则系统会自动地动态切换Front和Back部分。否则,只会显示默认的Front部分。Front和Back其实是一个Tile的两个不同视图,所以在以前的Push Notification中如果要更新Tile,XML数据可以类似于如下格式:
string tileMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<wp:Notification xmlns:wp=\"WPNotification\">" + "<wp:Tile>" + "<wp:BackgroundImage><front side of tile background image path></wp:BackgroundImage>" + "<wp:Count><front side of tile count></wp:Count>" + "<wp:Title><front side of tile title></wp:Title>" + "<wp:BackBackgroundImage><back side of tile image path></wp:BackBackgroundImage>"+ "<wp:BackTitle><back side of tile title></wp:BackTitle>"+ "<wp:BackContent><back side of tile text></wp:BackContent>"+ "</wp:Tile> " + "</wp:Notification>";
这样就可以同时更新Front和Back了,你可以看到这个XML的格式其实和以前发送Push Notification是兼容的,只不过多了后面的3个Backxxxx属性。首先,通过Front和Back可以让你的Tile更加具有动感。其次,想要更新Tile又多了一种方法,那就是通过ShellTile API。通过ShellTile API你可以方便的更新Tile的属性,而且重要的是背景图片终于可以是本地的了。ShellTile API不止具有更新Tile这么简单的功能。在Mango中,每个程序可以有多个Tile,这多出来的Tile就是使用ShellTile API来建立的。而这些第二个、第三个Tile它们又可以指向程序中的任何一个XAML页面,甚至指向的这些XAML页面还可以带上参数。类似于某个Tile指向”/news.xaml?id=5”。这也就让程序有能力在桌面上加上不同的Tile,然后每个Tile指向不同的位置。例如,某个新闻阅读软件可以在桌面上有个主Tile,它就是之前的常规的那个Tile,用来打开程序本身。而第二个Tile可以指向某个具体的新闻页面。这个直接跳转到某个应用的某个具体页面的技术就叫做Deep Linking。
Bing Search在Mango中越来越有意思了。首先,在你搜索某一个关键词的时候,如果Marketplace中某个软件和这个关键词有关系,那么这个软件会出现在结果列表的最上端。你可以选择安装这个软件,或者如果你已经按安装了的话则可以选择运行这个软件。例如你搜索由WPMind代为提交的快递检索软件”PocketExpress”的话,列表中会直接出现这个软件让你安装(当然,如果你已经安装这里提示的就是运行)。
而App Connect这个词儿目前资料比较少,在Beta版的Mango SDK中并没有被提及。但是它似乎就是之前MIX11中提及过的Bing Search Extras。在你搜索电影、音乐或者其他几种特定类型,结果页面中会特定的卡片。例如搜索”water for elephants“(这是部电影的名字),在搜索结果页面中首先会出现电影的播放时刻表:
点击时刻表进入后则是该电影的一些详细信息:
这时,如果你的手机上安装过具有Search Extras功能的应用的时候。例如IMDB(针对Mango的版本,经实测Marketplace中的版本还不行)会出现在这个电影卡片中的一个”app”枢轴视图页面中。而你点击这个列表中的应用(在这里是IMDB)的时候,会直接跳转到该应用的具体信息页面(根据传入的参数)。
这就是App Connect功能,它完全将你的应用和Bing Search的结果结合了起来。通过增强的Bing Search以及App Connect功能,使得你的软件和系统的交互性得到了更进一步的增强。不过可惜的是目前的Beta版Mango SDK中并没找到相关的API介绍。
注意:本文内容源自 MIX11部分课程内容以及Windows Phone Developer Tools 7.1 (Beta)的文档加上本人的理解,所以可能会有所偏差。同时本文提及的Mango相关知识在Mango的正式版本上市之后或许会有所改变。