Windows Phone 8.1新特性 - 市集啟動協議

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   strong   io   for   

 

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: