【Win10 UWP】URI Scheme(一):Windows Store协议的解析和使用
协议是Windows Phone和Windows Store应用的一个重要特点,可以做到在不同应用之间进行互相呼起调用。小小协议,学问大着呢。我打算写几篇关于协议在UWP中使用的文章。

这一讲的主要对象是Win10系统自带的应用商店应用所支持的相关启动协议ms-windows-store。
一. ms-windows-store协议的调用方式
ms-windows-store协议支持在Web或者UWP应用内调用,都能直接将系统自带的应用商店启动起来。
1.通过Web启动应用商店
大家可能注意到,平时我们在浏览器打开一个Win10应用的url链接时,系统自带的应用商店会被调起来,这里面的玄机就是使用了ms-windows-store协议!
比如下面这个UWP应用:https://www.microsoft.com/store/apps/9nblggh5x991
(顺便安利一下我最新的UWP应用——礼物说 - 最全美物收藏地)
用F12大法查看这个页面的源码,会发现以下这段代码
<iframe id="cli_redirectFrame" class="hidden"></iframe>
<script>
oneStoreRedirect(oneStoreUserAgent(), document)
.autoRedirectToNativeStorePdp("cli_redirectFrame", {
"threshold":"ms-windows-store://pdp/?productid=9NBLGGH5X991\u0026referrer=unistoreweb",
"win8x":"ms-windows-store:PDP?PFN=39014AppChampionStudio.-_ttcpf2hpawt8p\u0026referrer=unistoreweb",
"phone81":"ms-windows-store:navigate?appid=ddc54195-22fd-43f3-ab67-964ca250bd6c\u0026referrer=unistoreweb",
"phone807x":"zune://navigate/?appid=ddc54195-22fd-43f3-ab67-964ca250bd6c\u0026referrer=unistoreweb"
}, '9NBLGGH5X991', false, '礼物说 - 最全美物收藏地', true, true, false, false);
</script>
在页面加载的时候会自动执行这段代码,作用就是自动去调用ms-windows-store协议,尝试把系统的应用商店App启动起来,并导航到具体的应用页面:

在Web中使用协议的方法非常简单,只需把ms-windows-store协议的Url类比成一个http协议来请求就可以了。
2.在UWP应用中启动应用商店
在UWP应用里,也可以将系统的应用商店启动起来。事实上,任何协议都可以试着使用如下API来调用:
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参数,从而自行进行解析并作页面导航处理。这一部分内容我们留到下一篇具体展开。
二. ms-windows-store协议的高端用法
我们这讲的主题是应用商店的协议,前面讲了很多光是启动商店进入一个应用的详情远远不能满足我们平时的开发需求,你可能还需要求好评功能。
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的具体用法,解析响应以及适用场合。
【Win10 UWP】URI Scheme(一):Windows Store协议的解析和使用的更多相关文章
- 【Win10 UWP】URI Scheme(二):自定义协议的处理和适用场景
上一篇提到Windows Store协议的使用,其实Windows Store协议仅是系统内建的一种协议规则.我们也可以自己定义一套规范的URI-Scheme,除了可以给其他App调用外,本应用也可以 ...
- win10 UWP 剪贴板 Clipboard
win10 UWP 剪贴板 Clipboard使用Windows.ApplicationModel.DataTransfer.Clipboard 设置文本 DataPackage dataPackag ...
- Win10版《芒果TV》获评2016年度Windows Store最佳官方/休闲娱乐应用(LiveSino和微软信仰中心联合评选)
微软信仰中心于2016年12月9日联合了 LiveSino 进行了最佳 Windows Store 应用特辑的投票评选,通过为期20天的海量用户投票,Win10版<芒果TV>荣获最佳官方应 ...
- 【Win10 UWP】QQ SDK(二):SDK的回调处理
上一讲,我们介绍了QQ SDK的使用方法,请看<[Win10 UWP]QQ SDK(一):SDK基本使用方法> 一. 回调的基本形式 从前面的介绍中我们知道,我们的应用和QQ客户端之间需要 ...
- win10 uwp 读取保存WriteableBitmap 、BitmapImage
我们在UWP,经常使用的图片,数据结构就是 BitmapImage 和 WriteableBitmap.关于 BitmapImage 和 WriteableBitmap 区别,我就不在这里说.主要说的 ...
- win10 uwp smms图床
本文,如何使用smms图床上传图片,用到win10 uwp post文件,因为我是渣渣,如果本文有错的,请和我说,在本文评论,或发给我邮箱lindexi_gd@163.com,请不要发不良言论 找到一 ...
- win10 uwp httpClient 登陆CSDN
本文告诉大家如何模拟登陆csdn,这个方法可以用于模拟登陆其他网站. HttpClient 使用 Cookie 我们可以使用下面代码让 HttpClient 使用 Cookie ,有了这个才可以保存登 ...
- Win10 UWP开发系列:实现Master/Detail布局
在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...
- 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...
随机推荐
- zTree树的模糊搜索
工作需要,所以做了一个比较方便的搜索功能:1.功能实现都是基于zTree的API:2.如有更好的建议,欢迎拍我:其中要说明下的是flag 这个字段, 这是我自己定义的扩展字段,代码中涉及到flag 请 ...
- Java GC工作原理以及Minor GC、Major GC、Full GC简单总结
名词解释: GC:垃圾收集器 Minor GC:新生代GC,指发生在新生代的垃圾收集动作,所有的Minor GC都会触发全世界的暂停(stop-the-world),停止应用程序的线程,不过这个过程非 ...
- ip地址合法性
/* * Java语法上正则化表达式的使用技巧,对于'.'要用'\\.' (2)注意空字符串“”和null的区别,判断一个字符串是不是空字符串用.equals("") * (1,判 ...
- C# 解析 Json
C# 解析 json JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的 ...
- iis 500.19错误解决过程记录
前段时间一直在纠结C#中,dll的管理问题.最后选择使用nugetgallery进行公共库管理.项目地址:https://github.com/NuGet/NuGetGallery.这是一个nuget ...
- runtime 运行机制
// // HKPerson.h // runtimeDemo1 // // Created by 123 on 16/5/23. // Copyright © 2016年 123. All ...
- C#获取当前路径的7种方法
总结C#获取当前路径的7种方法 C#获取当前路径的方法如下: 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName ...
- 1500. Prime Gap 11 月 11日
/*本篇为转载,在此申明,具体就是先设定从2以后所有的数都为质数,定为质数的数的倍数则不是质数,慢慢排除后面的数*/ #include<iostream>#include<cstri ...
- 可维护的javascript
理论上我只能把序看完....... 第一章:基本的格式化 1.1:JSLint,JSHint查找代码中潜在的错误. 1.2:缩进:空格(2,4,8没有兼容性)和tab(不同的编辑器展现不一样),在编辑 ...
- Head First 设计模式读书笔记
在网上学习了一段时间设计模式,总感觉不系统,很容易忘,最近买书,学习了<Head First设计模式>,受益匪浅,特做此记录,以便激励自己不断的向后学习. 原书JAVA版本,本次学习记录及 ...