Windows Phone 8.1启动器新特性 - 应用商店启动协议

到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新特性 - 应用商店启动协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值