Windows Phone 8.1 Preview SDK 发布也有几个月了,之前断断续续也写过几篇 Windows Phone 8.1 新特性的文章,今天给大家介绍一下应用商店启动协议相关的知识。

关于这方面,想必大家心里都有很多疑问,为什么 Windows Phone 8.0 时代的 MarketplaceDetailTask、MarketplaceReviewTask 和 MarketplaceSearchTask 都不见了呢?这种问题在MSDN、stackoverflow等网站上都很多次的出现,我也在这些网站多次回答了类似这样的问题。

是的,确实不见了,SDK不再给我们提供这方面的类,而是需要通过启动协议来实现:Windows.System.Launcher.LaunchUriAsync(Uri uri)。

博客园里也有同学的博客介绍了这个方法的具体实现方式:Windows Phone 8.1商店启动协议,这里我再做一些补充,然后把这几个协议进行一下类似 Windows Phone 8.0 时代的封装。

1.  显示指定产品的详细信息页面(MarketplaceDetailTask)

启动协议:var uri = new Uri(string.Format("ms-windows-store:navigate?appid={0}", appid));

这里的appid可以指定为CurrentApp.AppId,就是跳转到当前应用详细页面;也可以指定为特定的AppId,就是跳转到特定的应用详细页,这种情况在做推荐应用的时候便会用到。

我们对它进行这样的封装:

using System;
using System.Threading.Tasks;
using Windows.ApplicationModel.Store; namespace Windows.ApplicationModel.Tasks
{
public sealed class MarketplaceDetailTask
{
public MarketplaceDetailTask()
{ } /// <summary>
/// 获取或设置要显示的产品的唯一标识符。
/// </summary>
public string ContentIdentifier { get; set; } /// <summary>
/// 显示 Windows Phone 商城 客户端应用程序并显示指定产品的详细信息页面。
/// </summary>
public async void Show()
{
await Windows.System.Launcher.LaunchUriAsync(
new Uri(string.Format("ms-windows-store:navigate?appid={0}",
string.IsNullOrEmpty(ContentIdentifier) ?
CurrentApp.AppId.ToString() :
ContentIdentifier)));
}
}
}

调用方法:

// 默认启动当前应用详细页面
MarketplaceDetailTask task1 = new MarketplaceDetailTask();
task1.Show(); // 启动特定应用详细页面
MarketplaceDetailTask task2 = new MarketplaceDetailTask();
task2.ContentIdentifier = "some app id";
task2.Show();

2. 显示指定产品的评论页面(MarketplaceReviewTask)

启动协议:var uri = new Uri(string.Format("ms-windows-store:reviewapp?appid={0}", appid));

这里的appid我们设定为当前应用的ID,因为在应用中评论别的应用是不合理的。

我们对它进行这样的封装:

using System;
using System.Threading.Tasks;
using Windows.ApplicationModel.Store; namespace Windows.ApplicationModel.Tasks
{
public sealed class MarketplaceReviewTask
{
public MarketplaceReviewTask()
{ } public async void Show()
{
await Windows.System.Launcher.LaunchUriAsync(
new Uri("ms-windows-store:reviewapp?appid=" + CurrentApp.AppId));
}
}
}

调用方法:

MarketplaceReviewTask task = new MarketplaceReviewTask();
task.Show();

3. 显示产品搜索页面(MarketplaceSearchTask)

启动协议:var uri = new Uri(string.Format(@"ms-windows-store:search?keyword={0}",keyword));

这里的keyword就是我们要搜索的关键字,有时候我们需要搜索我们的开发者账号对应的所有应用,这时候可以把keyword设置为开发者名称。但是如果你的开发者名称与很多产品相似,比如名称为:微博,这时候搜索的结果就包括了微博应用,而不只是你的“微博”开发者名下的应用(好吧,有点绕嘴了)。这时候我们可以把keyword搜索改成publisher搜索。

基于keyword和publisher两种搜索方式,我们进行这样的封装:

using System.Threading.Tasks;
using Windows.ApplicationModel.Store; namespace Windows.ApplicationModel.Tasks
{
public sealed class MarketplaceSearchTask
{
public MarketplaceSearchTask(SearchTermsType type)
{
this.Type = type;
} public string SearchTerms { get; set; } public SearchTermsType Type { get; set; } public async void Show()
{
await Windows.System.Launcher.LaunchUriAsync(
new Uri(string.Format("ms-windows-store:search?{0}={1}", this.Type.ToString() ,SearchTerms)));
}
} public enum SearchTermsType
{
Keyword,
Publisher
}
}

调用方法:

// 搜索'shaomeng'开发者名下的所有应用
MarketplaceSearchTask task1 = new MarketplaceSearchTask(SearchTermsType.Publisher);
task1.SearchTerms = "shaomeng";
task1.Show(); // 搜索含有关键字'微博'的所有应用
MarketplaceSearchTask task2 = new MarketplaceSearchTask(SearchTermsType.Keyword);
task2.SearchTerms = "微博";
task2.Show();

好了,到这里我们就把常用的应用商店启动协议介绍完了。希望能够帮助到大家。Windows Phone 8.1 的“坑”还有很多,如果大家有其他找不到的启动协议,请留下评论,我会持续去更新,谢谢。

Windows Phone 8.1新特性 - 应用商店启动协议的更多相关文章

  1. Windows Phone 8.1 新特性 - 控件之列表选择控件

    本篇我们来介绍Windows Phone 8.1 新特性中的列表选择控件. 在Windows Phone 8 时代,大家都会使用 LongListSelector 来实现列表选择控件,对数据进行分组显 ...

  2. Windows Phone8.1系统新特性

    Windows Phone 8.1 beta SDK已经为大家透露了不少WP8.1系统的新特性,不过这些新特性还不能保证在最终的消费者版本中都有所体现,毕竟它还仅是SDK版本.日前,国外媒体WPCen ...

  3. 微软架构师解读Windows Server 2008 R2新特性

    目前众多企业都开始为自己寻找一个更加适合自身发展的服务器操作平台.微软的Windows Server 2008 R2就是可以为大家解决服务器平台问题.微软最新的服务器平台Windows Server ...

  4. Windows Phone 8.1 新特性 - 控件之应用程序栏

    2014年4月3日的微软Build 2014 大会上,Windows Phone 8.1 正式发布.相较于Windows Phone 8,不论从用户还是开发者的角度,都产生了很大的变化.接下来我们会用 ...

  5. Windows Phone 8.1SDK新特性预览

    前言    Windows Phone 8.1的预览版将在近期推送,WP 8.1的SDK也已经进入到RC阶段,可以从这里安装.本次更新的SDK被直接集成到了VS2013Update2里面,不再是单独的 ...

  6. Windows Embedded Compact 7新特性

    Windows® Embedded Compact 7是Windows Embedded CE的下一代产品,而Windows Embedded CE这款操作系统面向占用资源少的新颖设备.Windows ...

  7. Windows Phone 8.1商店启动协议

    最近开发wp8.1已经两个月了,感觉坑不少,原来8时代的商店api多明了,微软不给封装就算了,至少你要在msdn上明显的地方标注下啊...................顺便在吐槽下bing,找了一个 ...

  8. windows phone 8的新特性

    <1>硬件的升级WP8在硬件上有了极大的提升,处理器支持双核或多核 理论最大支持64核,分辨率支持800x480.1280x720/768,屏幕支持720p或WXGA:支持存储卡扩展.同时 ...

  9. Windows Phone 8.1 新特性 - 常用的启动器

    本篇为大家介绍一下 Windows Phone 8.1 中部分常用启动器的实现方式.分别是 呼叫电话.发送短信.发送邮件.添加约会到日历.启动地图.地图路线显示.地图下载 和 地图更新. 1. 呼叫电 ...

随机推荐

  1. Linux下JDK、Tomcat

    1.JDK的安装   1. 下载JDK 先查看Linux系统是多少位(32位/64位):getconf  LONG_BIT.再从JDK官网(http://www.oracle.com/technetw ...

  2. Delphi 中记录类型 给记录指针赋值。

    PPersion=^TPersion;  TPersion=packed record     Name:string;     Sex:string;     Clasee:string;  end ...

  3. iOS中几种常用的数据存储方式

    自己稍微总结了一下下,方便大家查看 1.write直接写入文件的方法 永久保存在磁盘中,可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...

  4. 转-servlet 获取 post body 体用流读取为空的问题

    目前基于rest风格的很多API开始使用通过body data来传输来代替之前的key-value传输方式.在Java servlet或者springmvc中可以通过如下代码来获取并图片通过流方式传输 ...

  5. yii2 pjax使用

    Pjax::begin(['id'=>'datalist']); echo GridView::widget([ 'dataProvider' => $dataProvider, 'col ...

  6. JSON 的应用

    使用  JSON 需要的 jar 包:

  7. 特征提取k_word

    1) 若直接以20种氨基酸统计k_word: (以ZD98数据集为例) k Dimension 2 400 3 6490 4 22265 维数太大不适用构造特征向量 考虑氨基酸约化后特征提取 约化方案 ...

  8. EXTJS4自学手册——EXT基本方法、属性(mixins多继承、statics、require)

    1.mixins 说明:类似于面向对象中的多继承 <script type="text/javascript"> Ext.onReady(function () {// ...

  9. 【转】Win7 64bit Oracle 11g 使用PL/SQL Developer 连接时提示“SQL*Net not properly installed”

    转载:http://www.cnblogs.com/xihuaodc/p/3189257.html  因为之前的Oracle不能用了,所以重新安装了64位的Oracle,安装一路正常 完了之后安装了P ...

  10. c# datagridview 中DataSource的使用总结

    由于当前项目的窗体更新使用的是订阅事件的方式.其中有个datagridview 动态显示统计数据的列表框.本来想用textbox显示,但不规则,看起来也不美观,改由dgv显示. 我没打算用改dgv表的 ...