WindowsStore协议(ms-windows-store)解析和使⽤
⼀. ms-windows-store协议的调⽤⽅式
1.通过Web启动应⽤商店
⼤家可能注意到,平时我们在浏览器打开⼀个Win10应⽤的url链接时,系统⾃带的应⽤商店会被调起来,这⾥⾯的⽞机就是使⽤了ms-windows-store协议!
⽤F12⼤法查看这个页⾯的源码(搜索ms-windows-store),会发现以下这段代码:
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启动起来,并导航到具体的应⽤页⾯:
在Web中使⽤协议的⽅法⾮常简单,只需把ms-windows-store协议的Url类⽐成⼀个http协议来请求就可以了。
2.在UWP应⽤中启动应⽤商店
在UWP应⽤⾥,也可以将系统的应⽤商店启动起来。事实上,任何协议都可以试着使⽤如下API来调⽤:
1 await Windows.System.Launcher.LaunchUriAsync(new Uri(InputUri));
事实上“ms-windows-store://”的作⽤相当于"",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参数,从⽽⾃⾏进⾏解析并作页⾯导航处理。这⼀部分内容我们留到下⼀篇具体展开。
⼆. ms-windows-store协议的⾼端⽤法
我们这讲的主题是应⽤商店的协议,前⾯讲了很多光是启动商店进⼊⼀个应⽤的详情远远不能满⾜我们平时的开发需求,你可能还需要求好评功能。
描述重要参数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
启动类别中的产品搜索ms-windows-store://browse/? type=Apps&cat=Productivity
路径browse 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并不适⽤。
三、在UWP的安装⽂件中寻蛛丝马迹
你不妨先看⼀下上⾯这篇⽂章,看能不能得到你需要的,如果能,也请你看⼀下下⾯这篇⽂章。希望能为你打开另外⼀个世界。
拿⽹易云⾳乐UWP来说,⾸先安装“⽹易云⾳乐UWP”,去到你的Windows store默认安装⽬录——C:\Program
Files\WindowsApps(如果你没修改过)。第⼀次访问这个⽂件,系统不会让你访问。修改⼀下安全属性。右键“属性”——“安全”选项卡——“⾼级设置”——“更改所有者设置”,增加安全访问⽤户。
安装应用商店然后你就可以进⼊该⽂件,按安装时间排列⼀下,你就可以看到安装⽂件。如下图:
⼀个贪吃蛇的游戏UWP :10437webabcd.173815756DD78_1.0.0.19_neutral__s2b9shdpk31kj ——》  去掉_1.0.0.19_neutral__,你知道这是什么吗?
⽹易云⾳乐UWP :1F8B0F94.122165AE053F _1.1.0.0_neutral_~_j2p0p5q0044a6——》  去掉_1.0.0.19_neutral__,你知道这是什么吗?
按照上⽂的⽅法,去做,这次我们PFN ⽽不是productid 。    看下图(⽹易云⾳乐UWP
的⽹页源码):
对⽐⼀下,希望我说的你已经明⽩了!我其实就是想说 ,我们在Windows store 的APP 安装⽂件中到了软件的PFN !    如果您不信,在你的UWP 程序中执⾏⼀下下⾯这句:
[cpp]
1. await Windows.System.Launcher.LaunchUriAsync(new Uri(@"ms-windows-store:PDP?
PFN=1F8B0F94.122165AE053F_j2p0p5q0044a6"));

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。