Windows Phone 8.1新特性 - 應用商店啟動協議


 

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 的“坑”還有很多,如果大家有其他找不到的啟動協議,請留下評論,我會持續去更新,謝謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM