Dela via


Aktivera appar för webbplatser med hjälp av app-URI-hanterare

Appar för webbplatser associerar din app med en webbplats så att när någon öppnar en länk till din webbplats startas din app i stället för att öppna webbläsaren. Om appen inte är installerad öppnas webbplatsen som vanligt i webbläsaren. Användarna kan lita på den här upplevelsen eftersom endast verifierade innehållsägare kan registrera sig för en länk. Användarna kommer att kunna kontrollera alla sina registrerade webb-till-app-länkar genom att gå till Inställningar > Appar > Appar för webbplatser.

Viktig

Från och med Windows 10 Creators-uppdateringen och i alla Windows 11-versioner startar stödda länkar som klickas på i Microsoft Edge Legacy den motsvarande appen. Länkar som stöds och som klickas i webbläsare som stöds (till exempel Microsoft Edge Chromium, Firefox, Internet Explorer osv.) håller dig kvar i webbupplevelsen.

Om du vill aktivera webb-till-app-länkning måste du:

  • Identifiera de URI:er som din app ska hantera i manifestfilen
  • En JSON-fil som definierar associationen mellan din app och din webbplats. med appen Package Family Name vid samma värdrot som appmanifest-deklarationen.
  • Hantera aktiveringen i appen.

Din app måste identifiera URI:er för de webbplatser som den hanterar. Det gör du genom att lägga till registreringen av tillägget Windows.appUriHandler i appens manifestfil Package.appxmanifest.

Om webbplatsens adress till exempel är "msn.com" gör du följande post i appens manifest:

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

Deklarationen ovan registrerar din app för att hantera länkar som kommer från den angivna värden. Om webbplatsen har flera adresser (till exempel m.example.com, www.example.com, and example.com) lägger du till en separat <uap3:Host Name=... /> post i <uap3:AppUriHandler> för varje adress.

Associera din app och webbplats med en JSON-fil

För att säkerställa att endast din app kan öppna innehåll på din webbplats inkluderar du appens paketfamiljenamn i en JSON-fil som finns i webbserverroten eller i den välkända katalogen på domänen. Detta innebär att din webbplats ger medgivande för de listade apparna att öppna innehåll på din webbplats. Du hittar paketfamiljenamnet i avsnittet Paket i appmanifestdesignern.

Viktig

JSON-filen bör inte ha ett .json filsuffix.

Skapa en JSON-fil (utan filnamnstillägget .json) med namnet windows-app-web-link och ange appens paketfamiljenamn. Till exempel:

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

Windows skapar en https-anslutning till din webbplats och söker efter motsvarande JSON-fil på webbservern.

Jokertecken

JSON-filexemplet ovan visar användningen av jokertecken. Med jokertecken kan du hantera en mängd olika länkar med färre rader kod. Webb-till-app-länkning stöder två typer av jokertecken i JSON-filen.

Jokertecken Beskrivning
* Representerar vilken som helst delsträng
? Representerar ett enda tecken

Med "excludePaths" : [ "/news/*", "/blog/*" ] i exemplet ovan stöder din app till exempel alla sökvägar som börjar med webbplatsens adress (till exempel msn.com), förutom dem under /news/ och /blog/. msn.com/weather.html stöds, men inte msn.com/news/topnews.html.

Flera appar

Om du har två appar som du vill länka till din webbplats listar du båda programpaketfamiljenamnen i din windows-app-web-link JSON-fil. Båda apparna kan stödjas. Användaren visas med ett val som är standardlänken om båda är installerade. Om de vill ändra standardlänken senare kan de ändra den i Inställningar > Appar för webbplatser. Utvecklare kan också ändra JSON-filen när som helst och se ändringen redan samma dag men senast åtta dagar efter uppdateringen.

[{
  "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/*" ]
 }]

För att ge användarna bästa möjliga upplevelse använder du exkluderingssökvägar för att se till att innehåll endast online undantas från sökvägarna som stöds i JSON-filen.

Exkluderingssökvägar kontrolleras först och om det finns en matchning öppnas motsvarande sida med webbläsaren i stället för den avsedda appen. I exemplet ovan innehåller "/news/*" alla sidor under den sökvägen medan '/news*' (inga snedstrecksspår för "nyheter") innehåller alla sökvägar under "nyheter*" som "newslocal/", "newsinternational/" och så vidare.

Gå till App.xaml.cs i appens Visual Studio-lösning och i OnActivated() lägga till hantering för länkat innehåll. I följande exempel beror sidan som öppnas i appen på URI-sökvägen:

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();
}

Viktig

Ersätt den slutgiltiga if (rootFrame.Content == null) logiken med rootFrame.Navigate(deepLinkPageType, e); som du ser i exemplet ovan.

Testa i ett lokalt valideringsverktyg

Du kan testa konfigurationen av din app och webbplats genom att köra verktyget för att verifiera appvärdregistrering som finns tillgängligt i:

%windir%\system32\AppHostRegistrationVerifier.exe

Testa konfigurationen av din app och webbplats genom att köra det här verktyget med följande parametrar:

AppHostRegistrationVerifier.exe

  • Värdnamn: Din webbplats (till exempel microsoft.com)
  • Paketfamiljenamn (PFN): Appens PFN
  • Filsökväg: JSON-filen för lokal validering (till exempel C:\SomeFolder\windows-app-web-link)

Om verktyget inte returnerar något fungerar valideringen på filen när den laddas upp. Om det finns en felkod fungerar den inte.

Du kan aktivera följande registernyckel för att framtvinga sökvägsmatchning för sido-laddade appar som en del av lokal validering.

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

Nyckelnamn: ForceValidation Värde: 1

Testa det: Webbverifiering

Stäng programmet för att kontrollera att appen aktiveras när du klickar på en länk. Kopiera sedan adressen till en av de sökvägar som stöds på webbplatsen. Om webbplatsens adress till exempel är "msn.com" och en av supportsökvägarna är "path1" använder du http://msn.com/path1

Kontrollera att appen är stängd. Tryck på Windows Key + R för att öppna dialogrutan Kör och klistra in länken i fönstret. Appen bör startas i stället för webbläsaren.

Dessutom kan du testa din app genom att starta den från en annan app med hjälp av LaunchUriAsync API. Du kan även använda det här API:et för att testa telefoner.

Om du vill följa logiken för protokollaktivering anger du en brytpunkt i händelsehanteraren OnActivated.

AppUriHandlers-tips

De här tipsen hjälper dig att få ut mesta möjliga av AppUriHandlers-funktionen:

  • Se till att endast ange länkar som din app kan hantera.
  • Visa en lista över alla värdar som du kommer att stödja. Observera att www.example.com and example.com är olika värdar.
  • Användare kan välja vilken app de föredrar att hantera webbplatser i Inställningar.
  • JSON-filen måste laddas upp till en https-server.
  • Om du behöver ändra sökvägarna som du vill stödja kan du publicera om JSON-filen utan att publicera om appen. Användarna ser ändringarna om 1–8 dagar.
  • Alla sidoinstallerade appar med AppUriHandlers kommer att ha verifierade länkar för värden vid installation. Du behöver inte ha en JSON-fil uppladdad för att testa funktionen.
  • Den här funktionen fungerar när din app är en UWP-app som startas med LaunchUriAsync eller en Windows-skrivbordsapp som startas med ShellExecuteEx. Om URL:en motsvarar en registrerad app-URI-hanterare startas appen i stället för webbläsaren.

Web-to-App-exempelprojekt

windows.protocol-registrering

Hantera URI-aktivering