協議是Windows Phone和Windows Store應用的一個重要特色,能夠作到在不一樣應用之間進行互相呼起調用。小小協議,學問大着呢。我打算寫幾篇關於協議在UWP中使用的文章。web
這一講的主要對象是Win10系統自帶的應用商店應用所支持的相關啓動協議ms-windows-store。windows
ms-windows-store協議支持在Web或者UWP應用內調用,都能直接將系統自帶的應用商店啓動起來。瀏覽器
你們可能注意到,平時咱們在瀏覽器打開一個Win10應用的url連接時,系統自帶的應用商店會被調起來,這裏面的玄機就是使用了ms-windows-store協議!app
好比下面這個UWP應用:https://www.microsoft.com/store/apps/9nblggh5x991tcp
(順便安利一下我最新的UWP應用——禮物說 - 最全美物收藏地)ide
用F12大法查看這個頁面的源碼,會發現如下這段代碼url
1 <iframe id="cli_redirectFrame" class="hidden"></iframe> 2 <script> 3 oneStoreRedirect(oneStoreUserAgent(), document) 4 .autoRedirectToNativeStorePdp("cli_redirectFrame", { 5 "threshold":"ms-windows-store://pdp/?productid=9NBLGGH5X991\u0026referrer=unistoreweb", 6 "win8x":"ms-windows-store:PDP?PFN=39014AppChampionStudio.-_ttcpf2hpawt8p\u0026referrer=unistoreweb", 7 "phone81":"ms-windows-store:navigate?appid=ddc54195-22fd-43f3-ab67-964ca250bd6c\u0026referrer=unistoreweb", 8 "phone807x":"zune://navigate/?appid=ddc54195-22fd-43f3-ab67-964ca250bd6c\u0026referrer=unistoreweb" 9 }, '9NBLGGH5X991', false, '禮物說 - 最全美物收藏地', true, true, false, false); 10 </script>
在頁面加載的時候會自動執行這段代碼,做用就是自動去調用ms-windows-store協議,嘗試把系統的應用商店App啓動起來,並導航到具體的應用頁面:spa
在Web中使用協議的方法很是簡單,只需把ms-windows-store協議的Url類比成一個http協議來請求就能夠了。3d
在UWP應用裏,也能夠將系統的應用商店啓動起來。事實上,任何協議均可以試着使用以下API來調用:code
1 await Windows.System.Launcher.LaunchUriAsync(new Uri(InputUri));
事實上「ms-windows-store://」的做用至關於"http://",ms-windows-store就是一個自定義的URI Scheme,緊跟着的參數規則嚴格按照Uri格式進行。
固然UWP應用(實際上應用商店也是一個UWP應用)能夠在Package.appxmanifest的「聲明」中,聲明這個UWP支持某個自定義的協議(好比叫作myscheme),那麼只要在任何地方(Web、UWP App、iOS App、安卓App,甚至本身這個UWP)調用(myscheme://,注意帶有「//」),這個UWP均可以被啓動起來。從UWP的生命週期角度講,不該該叫「啓動(Launch)」起來,而應該是被「激活(Activated)」起來。App.cs能夠經過OnActivated方法接收到自定義協議裏帶着的Uri參數,從而自行進行解析並做頁面導航處理。這一部份內容咱們留到下一篇具體展開。
咱們這講的主題是應用商店的協議,前面講了不少光是啓動商店進入一個應用的詳情遠遠不能知足咱們平時的開發需求,你可能還須要求好評功能。
MSDN文檔對ms-windows-store做了很是詳細的介紹,連接:https://msdn.microsoft.com/en-us/library/windows/apps/mt228343.aspx
描述 | 重要參數 | URI Scheme |
啓動到商店首頁 | ms-windows-store://home ms-windows-store:// <--- 若是在UWP應用內能夠只寫這個 |
|
啓動到商店的分類 (並不是全部用戶都能看到全部類別,目前類別有應用、遊戲、音樂、視頻) 路徑navigatetopage |
ms-windows-store://navigatetopage/?Id=Apps ms-windows-store://navigatetopage/?Id=Games ms-windows-store://navigatetopage/?Id=Music ms-windows-store://navigatetopage/?Id=Video |
|
啓動到某個應用詳情 路徑pdp (product detail page) |
ProductId,ProductId,ProductId (重要的參數說三遍,UWP最推薦的方式) |
ms-windows-store://pdp/?ProductId=9NBLGGH5X991 |
PFN(Pacakge Family Name) | ms-windows-store://pdp/?PFN= Microsoft.Office.OneNote_8wekyb3d8bbwe | |
PhoneAppId (Windows Phone 7.x/8.x) | ms-windows-store://pdp/?PhoneAppId=ca05b3ab-f157-450c-8c49-a1f127f5e71d | |
AppId (Windows 8.x) | ms-windows-store://pdp/?AppId=f022389f-f3a6-417e-ad23-704fbdf57117 | |
啓動到某個應用編寫評論 路徑review、reviewapp(Windows Phone 7.x/8.x) |
ProductId,ProductId,ProductId (重要的參數說三遍,UWP最推薦的方式) |
ms-windows-store://review/?ProductId=9NBLGGH5X991 |
PFN | ms-windows-store://review/?PFN= Microsoft.Office.OneNote_8wekyb3d8bbwe | |
AppId (Windows Phone 7.x/8.x) | ms-windows-store://reviewapp/?AppId=ca05b3ab-f157-450c-8c49-a1f127f5e71d | |
AppId (Windows 8.x) | ms-windows-store://review/?AppId=f022389f-f3a6-417e-ad23-704fbdf57117 | |
啓動關聯搜索 路徑assoc |
FileExt(與文件擴展名關聯的產品) | ms-windows-store://assoc/?FileExt=pdf |
|
Protocol (與協議關聯的產品) | ms-windows-store://assoc/?Protocol=liwushuo |
|
Tags (與標記關聯的產品) | ms-windows-store://assoc/?Tags=Photos_Rich_Media_Edit, Camera_Capture_App |
啓動搜索 路徑search |
ms-windows-store://search/?query=OneNote | |
啓動類別中的產品搜索 路徑browse |
ms-windows-store://browse/?type=Apps&cat=Productivity ms-windows-store://browse/?type=Apps&cat=Health+%26+fitness |
|
啓動某發佈者發佈的產品搜索(名稱中容許空格) 路徑publisher |
ms-windows-store://publisher/?name=AppChampion Studio |
|
啓動下載和更新頁面 |
ms-windows-store://downloadsandupdates |
|
啓動商店設置頁面 |
ms-windows-store://settings |
以上ms-windows-store協議的規則適用於Win10 UWP應用,部分規則WP或Win8.x並不適用。
小結
本講的主題是Win10自帶的應用商店相關協議的規則,並介紹了URI Scheme的基本原理。下一講咱們講UWP裏使用URI Scheme的具體用法,解析響應以及適用場合。