Sdílet prostřednictvím


Povolení aplikací pro weby pomocí obslužných rutin identifikátorů URI aplikací

Aplikace pro weby přidružují vaši aplikaci k webu, takže když někdo otevře odkaz na váš web, spustí se aplikace místo otevření prohlížeče. Pokud vaše aplikace není nainstalovaná, web se otevře v prohlížeči obvyklým způsobem. Uživatelé můžou důvěřovat tomuto prostředí, protože k odkazu se můžou zaregistrovat jenom ověření vlastníci obsahu. Uživatelé budou moct zkontrolovat všechny svoje zaregistrované odkazy na webové aplikace tak, že přejdou na Aplikace pro > nastavení > pro weby.

Důležité

Počínaje aktualizací Windows 10 Creators a ve všech verzích Windows 11 se podporované odkazy klikané na starší verzi Microsoft Edge spustí odpovídající aplikaci. Podporované odkazy, na které jste klikli v podporovaných prohlížečích (například Microsoft Edge Chromium, Firefox, Internet Explorer atd.), budete mít přehled o procházení.

Pokud chcete povolit propojení webových aplikací, budete muset:

  • Identifikace identifikátorů URI, které bude vaše aplikace zpracovávat v souboru manifestu
  • Soubor JSON, který definuje přidružení mezi vaší aplikací a webem. se jménem rodiny balíčků aplikace ve stejném kořenovém adresáři hostitele jako deklarace manifestu aplikace.
  • Zpracujte aktivaci v aplikaci.

Vaše aplikace potřebuje identifikovat identifikátory URI webů, které bude zpracovávat. Uděláte to tak, že přidáte registraci rozšíření Windows.appUriHandler do souboru manifestu vaší aplikace Package.appxmanifest.

Pokud je adresa vašeho webu například "msn.com", v manifestu aplikace byste udělali následující položku:

<Applications>
  <Application ... >
      ...
      <Extensions>
         <uap3:Extension Category="windows.appUriHandler">
          <uap3:AppUriHandler>
            <uap3:Host Name="msn.com" />
          </uap3:AppUriHandler>
        </uap3:Extension>
      </Extensions>
  </Application>
</Applications>

Výše uvedená deklarace zaregistruje vaši aplikaci pro zpracování odkazů ze zadaného hostitele. Pokud má váš web více adres (například m.example.com, www.example.com, and example.com), přidejte do každé adresy samostatnou <uap3:Host Name=... /> položku <uap3:AppUriHandler> .

Přidružení aplikace a webu k souboru JSON

Pokud chcete zajistit, aby obsah na vašem webu mohl otevřít jenom vaše aplikace, zahrňte název rodiny balíčků vaší aplikace do souboru JSON umístěného v kořenovém adresáři webového serveru nebo v dobře známém adresáři v doméně. To značí, že váš web dává souhlas s aplikacemi uvedeným v seznamu, aby otevíral obsah na vašem webu. Název rodiny balíčků najdete v části Balíčky v návrháři manifestu aplikace.

Důležité

Soubor JSON by neměl mít příponu souboru .json.

Vytvořte soubor JSON (bez přípony souboru .json) s názvem windows-app-web-link a zadejte název rodiny balíčků vaší aplikace. Například:

[{
  "packageFamilyName" : "Your app's package family name, e.g MyApp_9jmtgj1pbbz6e",
  "paths" : [ "*" ],
  "excludePaths" : [ "/news/*", "/blog/*" ]
 }]

Windows vytvoří připojení https k vašemu webu a vyhledá odpovídající soubor JSON na vašem webovém serveru.

Podpora subdomény

Pokud manifest aplikace obsahuje hlavní doménu (například example.com) i subdomény se zástupnými výjimkou (například *.example.com), musíte do souboru JSON přidat allowSubdomains pole, abyste povolili propojení subdomény. Bez tohoto pole se odkazy na subdomény otevřou v prohlížeči místo vaší aplikace.

[{
  "packageFamilyName" : "Your app's package family name, e.g MyApp_9jmtgj1pbbz6e",
  "paths" : [ "*" ],
  "excludePaths" : [ "/news/*", "/blog/*" ],
  "allowSubdomains" : true
 }]

Pokud allowSubdomains je nastavená hodnota true, odkazy na subdomény, jako je subdomain.example.com/path to, se ve vaší aplikaci správně otevřou místo prohlížeče.

Zástupné znaky

Výše uvedený příklad souboru JSON ukazuje použití zástupných znaků. Zástupné čáry umožňují podporovat širokou škálu odkazů s menším počtem řádků kódu. Propojení webové aplikace podporuje dva typy zástupných znaků v souboru JSON:

Zástupný znak Description
* Představuje libovolný podřetětěr.
? Představuje jeden znak.

Například ve výše uvedeném "excludePaths" : [ "/news/*", "/blog/*" ] příkladu bude vaše aplikace podporovat všechny cesty, které začínají adresou vašeho webu (například msn.com), s výjimkou těch, které jsou pod /news/ a /blog/. msn.com/weather.html budou podporovány, ale nebudou msn.com/news/topnews.html.

Více aplikací

Pokud máte dvě aplikace, které chcete propojit s webem, uveďte oba názvy rodin balíčků aplikací v souboru JSON pro Windows-app-web-link . Obě aplikace je možné podporovat. Uživateli se zobrazí volba, která je výchozím odkazem, pokud jsou obě nainstalované. Pokud chtějí později změnit výchozí odkaz, můžou ho změnit v > Nastavení aplikací pro weby. Vývojáři také můžou soubor JSON kdykoli změnit a zobrazit změnu na stejný den, ale nejpozději do osmi dnů po aktualizaci.

[{
  "packageFamilyName": "Your apps's package family name, e.g MyApp_9jmtgj1pbbz6e",
  "paths": [ "*" ],
  "excludePaths" : [ "/news/*", "/blog/*" ]
 },
 {
  "packageFamilyName": "Your second app's package family name, for example, MyApp2_8jmtgj2pbbz6e",
  "paths": [ "/example/*", "/links/*" ]
 }]

Poznámka:

Pokud vaše aplikace potřebují podporovat subdomény, přidejte "allowSubdomains": true do každé položky aplikace v souboru JSON.

Pokud chcete uživatelům poskytnout co nejlepší prostředí, použijte cesty vyloučení, abyste měli jistotu, že je obsah jenom online vyloučený z podporovaných cest v souboru JSON.

Nejprve se zaškrtnou možnost Vyloučit cesty a pokud se zobrazí shoda s odpovídající stránkou, otevře se místo určené aplikace prohlížeč. V předchozím příkladu obsahuje /news/*všechny stránky pod touto cestou, zatímco /news* (žádné stopy lomítka 'news') zahrnují všechny cesty pod "news*", například "newslocal/", "newsinternational/" atd.

Přejděte na App.xaml.cs v řešení sady Visual Studio vaší aplikace a v onActivated() přidejte zpracování propojeného obsahu. V následujícím příkladu závisí stránka otevřená v aplikaci na cestě URI:

protected override void OnActivated(IActivatedEventArgs e)
{
    Frame rootFrame = Window.Current.Content as Frame;
    if (rootFrame == null)
    {
        ...
    }

    // Check ActivationKind, Parse URI, and Navigate user to content
    Type deepLinkPageType = typeof(MainPage);
    if (e.Kind == ActivationKind.Protocol)
    {
        var protocolArgs = (ProtocolActivatedEventArgs)e;        
        switch (protocolArgs.Uri.AbsolutePath)
        {
            case "/":
                break;
            case "/index.html":
                break;
            case "/sports.html":
                deepLinkPageType = typeof(SportsPage);
                break;
            case "/technology.html":
                deepLinkPageType = typeof(TechnologyPage);
                break;
            case "/business.html":
                deepLinkPageType = typeof(BusinessPage);
                break;
            case "/science.html":
                deepLinkPageType = typeof(SciencePage);
                break;
        }
    }

    if (rootFrame.Content == null)
    {
        // Default navigation
        rootFrame.Navigate(deepLinkPageType, e);
    }

    // Ensure the current window is active
    Window.Current.Activate();
}

Důležité

Nezapomeňte nahradit konečnou if (rootFrame.Content == null) logiku, rootFrame.Navigate(deepLinkPageType, e); jak je znázorněno v příkladu výše.

Testování v místním ověřovacím nástroji

Konfiguraci aplikace a webu můžete otestovat spuštěním nástroje pro ověření registrace hostitele aplikace, který je k dispozici v:

%windir%\system32\AppHostRegistrationVerifier.exe

Otestujte konfiguraci aplikace a webu spuštěním tohoto nástroje s následujícími parametry:

AppHostRegistrationVerifier.execesta k souboru packagefamilyname název hostitele

  • Název hostitele: Váš web (například microsoft.com)
  • Název rodiny balíčků (PFN): PFN vaší aplikace
  • Cesta k souboru: Soubor JSON pro místní ověření (například C:\SomeFolder\windows-app-web-link)

Pokud nástroj nic nevrátí, bude ověření fungovat na daném souboru při nahrání. Pokud existuje kód chyby, nebude fungovat.

V rámci místního ověřování můžete povolit následující klíč registru, který vynutí porovnávání cest pro aplikace načtené bokem:

HKCU\Software\Classes\LocalSettings\Software\Microsoft\Windows\CurrentVersion\ AppModel\SystemAppData\YourApp\AppUriHandlers

Název klíče: ForceValidation Hodnota: 1

Test it: Ověření webu

Zavřete aplikaci a ověřte, že je aplikace aktivovaná po kliknutí na odkaz. Potom zkopírujte adresu jedné z podporovaných cest na vašem webu. Pokud je adresa vašeho webu například "msn.com" a jedna z cest podpory je "path1", použili byste http://msn.com/path1

Ověřte, že je vaše aplikace zavřená. Stisknutím klávesy Windows + R otevřete dialogové okno Spustit a vložte odkaz do okna. Aplikace by se měla spustit místo webového prohlížeče.

Kromě toho můžete aplikaci otestovat tak, že ji spustíte z jiné aplikace pomocí rozhraní LaunchUriAsync API. Toto rozhraní API můžete použít také k testování na telefonech.

Pokud chcete postupovat podle logiky aktivace protokolu, nastavte zarážku v obslužné rutině události OnActivated .

Tipy pro AppUriHandlers

Tyto tipy vám pomůžou získat maximum z funkce AppUriHandlers:

  • Nezapomeňte zadat jenom odkazy, které vaše aplikace dokáže zpracovat.
  • Uveďte všechny hostitele, které budete podporovat. Všimněte si, že www.example.com and example.com jsou různí hostitelé.
  • Uživatelé si můžou zvolit, kterou aplikaci preferují pro zpracování webů v Nastavení.
  • Soubor JSON se musí nahrát na server https.
  • Pokud potřebujete změnit cesty, které chcete podporovat, můžete znovu publikovat soubor JSON bez opětovného publikování aplikace. Uživatelé uvidí změny za 1 až 8 dnů.
  • Všechny aplikace načtené bokem s AppUriHandlers budou mít ověřené odkazy na hostitele při instalaci. K otestování funkce nemusíte mít nahraný soubor JSON.
  • Tato funkce funguje vždy, když je aplikace pro UPW spuštěná pomocí LaunchUriAsync nebo desktopové aplikace pro Windows spuštěná pomocí ShellExecuteEx. Pokud adresa URL odpovídá zaregistrované obslužné rutině identifikátoru URI aplikace, spustí se aplikace místo prohlížeče.

Ukázkový projekt web-to-app

registrace protokolu windows.protocol

Zpracování aktivace identifikátoru URI