Alkalmazások engedélyezése webhelyekhez alkalmazás URI-kezelőkkel

Fontos

Csomagolás szükséges. Az windows.appUriHandler ebben a funkcióban használt bővítményhez csomagolt alkalmazásra van szükség – teljes MSIX-csomagra vagy ritka csomagra (külső hellyel rendelkező csomagolás). Ha az alkalmazás jelenleg ki van csomagolva, először meg kell adnia neki egy csomagdentitást. Útmutatásért lásd: Identitás megadása csomagolatlan alkalmazásnak. Az egyéni myapp:// URI-sémák csomagolatlan alkalmazásokban való kezeléséről az URI aktiválásának kezelése című témakörben olvashat.

A Webhelyekhez készült alkalmazások társítják az alkalmazást egy webhelyhez, így amikor valaki megnyitja a webhelyére mutató hivatkozást, az alkalmazás a böngésző megnyitása helyett elindul. Ha az alkalmazás nincs telepítve, a webhely a szokásos módon nyílik meg a böngészőben. A felhasználók megbízhatnak ebben a felhasználói élményben, mert csak az ellenőrzött tartalomtulajdonosok regisztrálhatnak egy hivatkozásra. A felhasználók a Beállítások > Alkalmazások > Webhelyekhez készült alkalmazások menüpontban ellenőrizhetik az összes regisztrált webhelyről az alkalmazásra mutató hivatkozást.

Fontos

A Windows 10 Alkotók frissítésétől és a Windows 11 összes verziójában a Microsoft Edge Legacy böngészőben a támogatott hivatkozásokra kattintva a megfelelő alkalmazás indul el. A támogatott böngészőkben megnyitott (például Microsoft Edge Chromium, Firefox, Internet Explorer stb.) támogatott hivatkozások a böngészési élményt fenntartják.

A web-alkalmazás csatolásának engedélyezéséhez a következőkre van szükség:

  • Az alkalmazás által a jegyzékfájlban kezelt URI-k azonosítása
  • Egy JSON-fájl, amely meghatározza az alkalmazás és a webhely közötti társításokat. Az alkalmazáscsomag neve az alkalmazásjegyzék deklaráció gazdagép gyökerével azonos.
  • Az aktiválás kezelése az alkalmazásban.

Az alkalmazásnak azonosítania kell az általa kezelt webhelyek URI-jait. Ehhez adja hozzá a Windows.appUriHandler bővítményregisztrációt az alkalmazás Package.appxmanifest jegyzékfájljához.

Ha például a webhely címe "msn.com", a következő bejegyzést kell beírnia az alkalmazás jegyzékfájljában:

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

A fenti deklaráció regisztrálja az alkalmazást a megadott gazdagép hivatkozásainak kezeléséhez. Ha a webhely több címmel (például m.example.com, www.example.com, and example.com) rendelkezik, akkor adjon hozzá egy külön <uap3:Host Name=... /> bejegyzést az <uap3:AppUriHandler> egyes címekhez.

Alkalmazás és webhely társítása JSON-fájllal

Annak érdekében, hogy csak az alkalmazás nyisson meg tartalmat a webhelyén, adja meg az alkalmazás csomagcsaládjának nevét egy, a webkiszolgáló gyökérkönyvtárában vagy a tartomány jól ismert könyvtárában található JSON-fájlban. Ez azt jelzi, hogy a webhely hozzájárul ahhoz, hogy a felsorolt alkalmazások tartalmakat nyissanak meg a webhelyen. A csomagcsalád nevét az alkalmazásjegyzék-tervező Csomagok szakaszában találja.

Fontos

A JSON-fájl nem rendelkezhet .json fájl utótagjával.

Hozzon létre egy windows-app-web-link nevű JSON-fájlt (a .json fájlkiterjesztés nélkül), és adja meg az alkalmazás csomagcsaládjának nevét. Például:

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

A Windows https-kapcsolatot létesít a webhelyével, és megkeresi a megfelelő JSON-fájlt a webkiszolgálón.

Altartomány támogatása

Ha az alkalmazásjegyzék egy fő tartományt (például example.com) és helyettesítő altartományokat (például *.example.com) is tartalmaz, hozzá kell adnia a allowSubdomains mezőt a JSON-fájlhoz az altartomány-csatolás engedélyezéséhez. E mező nélkül az altartományokra mutató hivatkozások az alkalmazás helyett a böngészőben nyílnak meg.

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

Ha allowSubdomains be van állítva true, az altartományokra mutató hivatkozások, például subdomain.example.com/path a böngésző helyett helyesen nyílnak meg az alkalmazásban.

Helyettesítő karakterek

A fenti JSON-fájl példája a helyettesítő karakterek használatát mutatja be. A helyettesítő karakterek lehetővé teszik, hogy kevesebb kódsort tartalmazó hivatkozások széles skáláját támogassa. A web-alkalmazás összekapcsolása kétféle helyettesítő karaktert támogat a JSON-fájlban:

Helyettesítő Leírás
* Bármely alsztringet jelöl
? Egyetlen karaktert jelöl

A fenti példában az Ön alkalmazása támogatja a webhely címével kezdődő összes elérési utat (például msn.com), kivéve azokat, amelyek a /news/ és /blog/ alatti útvonalak alatt találhatók. msn.com/weather.html támogatott, de nem msn.com/news/topnews.html.

Több alkalmazás

Ha két olyan alkalmazással rendelkezik, amelyeket a webhelyére szeretne csatolni, a windows-app-web-link JSON-fájlban listázhatja az alkalmazáscsomag családneveit. Mindkét alkalmazás támogatott. A felhasználónak fel kell kínálni egy választási lehetőséget arra vonatkozóan, hogy melyik legyen az alapértelmezett hivatkozás, ha mindkét hivatkozás telepítve van. Ha később módosítani szeretnék az alapértelmezett hivatkozást, módosíthatják azt a Webhelybeállítások > alkalmazásokban. A fejlesztők bármikor módosíthatják a JSON-fájlt, és a módosítást már ugyanazon a napon, de legkésőbb nyolc nappal a frissítés után láthatják.

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

Megjegyzés:

Ha az alkalmazásoknak támogatniuk kell az altartományokat, adja hozzá a "allowSubdomains": true minden alkalmazásbejegyzéshez a JSON fájlban.

Annak érdekében, hogy a felhasználók számára a lehető legjobb élményt nyújthassa, használjon kizárási útvonalakat annak biztosítására, hogy a csak online tartalom ne szerepeljen a JSON-fájl támogatott elérési útjai között.

A kizárási útvonalakat először a rendszer ellenőrzi, és ha van egyezés, a megfelelő lap a böngészővel nyílik meg a kijelölt alkalmazás helyett. A fenti példában a "/news/*" magában foglalja az elérési út alatti oldalakat, míg a "/news*" (ahol a "news" végén nincs perjel) kiterjed minden, a "news*" alatt található útvonalra, például a "newslocal/", "newsinternational/" és így tovább.

Navigáljon a App.xaml.cs fájlba az alkalmazás Visual Studio-megoldásában, és az OnActivated() metódusban adjon hozzá kezelést a csatolt tartalomhoz. Az alábbi példában az alkalmazásban megnyitott oldal az URI elérési útjától függ:

protected override void OnActivated(IActivatedEventArgs e)
{
    // In WinUI 3, Window.Current is always null. Store your Window in App.Window.
    Frame rootFrame = App.Window?.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
    App.Window?.Activate();
}

Fontos

Cserélje le a if (rootFrame.Content == null) logikát rootFrame.Navigate(deepLinkPageType, e); logikára, a fenti példában látható módon.

Tesztelés helyi érvényesítő eszközben

Az alkalmazás és a webhely konfigurációját az alkalmazás gazdagépregisztrációs ellenőrző eszközének futtatásával tesztelheti, amely a következő helyen érhető el:

%windir%\system32\AppHostRegistrationVerifier.exe

Tesztelje az alkalmazás és a webhely konfigurációját az eszköz futtatásával a következő paraméterekkel:

AppHostRegistrationVerifier.exehostname packagefamilyname filepath

  • Állomásnév: A webhely (például microsoft.com)
  • Csomagcsalád neve (PFN): Az alkalmazás PFN-címe
  • Fájl elérési útja: A helyi ellenőrzés JSON-fájlja (például C:\SomeFolder\windows-app-web-link)

Ha az eszköz nem ad vissza semmit, a feltöltéskor az ellenőrzés működni fog a fájlon. Ha hibakód van, az nem fog működni.

Engedélyezheti a következő beállításkulcsot, hogy a helyi ellenőrzés részeként kényszerítse az elérési út egyeztetését az oldaltöltésű alkalmazásokhoz:

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

Kulcsnév: ForceValidation Érték: 1

Tesztelés: Webes ellenőrzés

Zárja be az alkalmazást annak ellenőrzéséhez, hogy az alkalmazás aktiválva van-e, amikor egy hivatkozásra kattint. Ezután másolja ki a webhely egyik támogatott útvonalának címét. Ha például a webhely címe "msn.com", és az egyik támogatási útvonal a "path1", akkor a http://msn.com/path1 használja.

Ellenőrizze, hogy az alkalmazás bezárva van-e. A Windows Billentyű + R billentyűkombinációval nyissa meg a Futtatás párbeszédpanelt, és illessze be a hivatkozást az ablakba. Az alkalmazásnak a webböngésző helyett kell elindulnia.

Emellett tesztelheti az alkalmazást úgy is, hogy elindítja azt egy másik alkalmazásból a LaunchUriAsync API használatával. Ezzel az API-val telefonokon is tesztelhet.

Ha követni szeretné a protokollaktiválási logikát, állítson be egy töréspontot az OnActivated eseménykezelőben.

AppUriHandlers tippek

Ezek a tippek segítenek a legtöbbet kihozni az AppUriHandlers szolgáltatásból:

  • Ügyeljen arra, hogy csak az alkalmazás által kezelhető hivatkozásokat adja meg.
  • Sorolja fel az összes gazdagépet, amelyet támogatni fog. Vegye figyelembe, hogy www.example.com és example.com különböző gazdagépeket.
  • A felhasználók a Beállításokban választhatják ki, hogy melyik alkalmazás kezelje a webhelyeket.
  • A JSON-fájlt fel kell tölteni egy https-kiszolgálóra.
  • Ha módosítania kell a támogatni kívánt elérési utakat, az alkalmazás újbóli közzététele nélkül újra közzéteheti a JSON-fájlt. A felhasználók 1-8 napon belül láthatják a módosításokat.
  • Az összes külső forrásból telepített, AppUriHandlers funkcionalitással rendelkező alkalmazás az érvényesített hivatkozásokkal rendelkezik a gazdagéphez a telepítés során. A funkció teszteléséhez nem kell JSON-fájlt feltöltenie.
  • Ez a funkció akkor működik, ha az alkalmazás egy LaunchUriAsync használatával indított UWP-alkalmazás, vagy a ShellExecuteEx használatával indított Windows asztali alkalmazás. Ha az URL-cím egy regisztrált alkalmazás URI-kezelőjének felel meg, az alkalmazás a böngésző helyett indul el.

Web-to-App példaprojekt

windows.protokoll regisztráció

URI-aktiválás kezelése