zoukankan      html  css  js  c++  java
  • 【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大法查看这个页面的源码,会发现以下这段代码

     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=9NBLGGH5X991u0026referrer=unistoreweb",
     6              "win8x":"ms-windows-store:PDP?PFN=39014AppChampionStudio.-_ttcpf2hpawt8pu0026referrer=unistoreweb",
     7              "phone81":"ms-windows-store:navigate?appid=ddc54195-22fd-43f3-ab67-964ca250bd6cu0026referrer=unistoreweb",
     8              "phone807x":"zune://navigate/?appid=ddc54195-22fd-43f3-ab67-964ca250bd6cu0026referrer=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://”的作用相当于"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的具体用法,解析响应以及适用场合。

  • 相关阅读:
    HTML中一定会常用的标签和标签属性(这是网页构成的重要元素
    HTML(超文本语言)
    SQL SERVER中视图、事务
    important覆盖行内样式
    线性渐变
    「JavaScript面向对象编程指南」闭包
    移动端文章图片大小限制
    Vue中ajax返回的结果赋值
    「JavaScript面向对象编程指南」基础
    JS媒体查询
  • 原文地址:https://www.cnblogs.com/zhxilin/p/4819372.html
Copyright © 2011-2022 走看看