Megosztás a következőn keresztül:


URI-aktiválás kezelése

Megtudhatja, hogyan regisztrálhat egy alkalmazást, hogy az legyen az egységes erőforrás-azonosító (URI) séma nevének alapértelmezett kezelője. A WinUI-alkalmazások regisztrálhatnak egy URI-sémanév alapértelmezett kezelőjeként. Ha a felhasználó az alkalmazást választja az URI-sémanév alapértelmezett kezelőjeként, az alkalmazás minden alkalommal aktiválódik, amikor az adott URI-típus elindul.

Azt javasoljuk, hogy csak akkor regisztráljon egy URI-sémanévre, ha az adott URI-sémához tartozó összes URI-indítást kezelni szeretné. Ha úgy dönt, hogy regisztrál egy URI-sémanévre, meg kell adnia a végfelhasználónak azokat a funkciókat, amelyek az adott URI-séma alkalmazásának aktiválásakor várhatók. Például egy alkalmazásnak, amely regisztrál a mailto: URI séma nevére, meg kell nyitnia egy új e-mail üzenetet, hogy a felhasználó új e-mailt írjon. Az URI-társításokról további információt a Fájlok, mappák és tárak című témakörben talál.

Ezek a lépések bemutatják, hogyan regisztrálhat egyéni URI-sémanévre, alsdk://és hogyan aktiválhatja az alkalmazást, amikor a felhasználó elindít egy alsdk:// URI-t.

Fontos API-k

Ebben a témakörben a következő API-kat használjuk:

Megjegyzés:

Windows rendszerben bizonyos URI-k és fájlkiterjesztések a beépített alkalmazások és az operációs rendszer számára vannak fenntartva. Az alkalmazás fenntartott URI-val vagy fájlkiterjesztéssel való regisztrálására tett kísérletek figyelmen kívül lesznek hagyva. Tekintse meg fenntartott URI-sémák nevét és fájltípusait azoknak az URI-sémáknak a betűrendes listájához, amelyeket nem tud regisztrálni az alkalmazásokhoz, mert azok fenntartottak vagy tiltottak.

1. lépés: Adja meg a bővítménypontot a csomagjegyzékben

Az alkalmazás csak a csomagjegyzékben felsorolt URI-sémák neveihez fogad aktiválási eseményeket. Így jelezheti, hogy az alkalmazás kezeli az alsdk URI-séma nevét.

  1. A Megoldáskezelőbenkattintson duplán a package.appxmanifest fájlra a jegyzéktervező megnyitásához. Válassza a Deklarációk lapot, majd az Elérhető deklarációk legördülő listában válassza a Protokoll lehetőséget, majd kattintson a Hozzáadás gombra.

    Íme egy rövid leírás az egyes mezőkről, amelyeket kitölthet a protokoll jegyzéktervezőjében (részletekért tekintse meg az AppX-csomagjegyzéket ):

szakterület Leírás
Embléma Adja meg a logót, amely az URI-séma nevének azonosítására szolgál a Alapértelmezett programok beállítása a Vezérlőpulton. Ha nincs megadva embléma, a rendszer az alkalmazás kis emblémáját használja.
Megjelenített név Adja meg a megjelenítési nevet az URI-séma nevének az azonosítására a Alapértelmezett programok beállítása-ban a Vezérlőpultban.
Név Válasszon nevet az Uri-sémának.
Megjegyzés A névnek kisbetűkben kell lennie.
Fenntartott és tiltott fájltípusok A Fenntartott URI-sémák nevei és fájltípusai azoknak az URI-sémáknak a betűrendes listáját ismertetik, amelyeket nem lehet regisztrálni a Windows-alkalmazásokra, mert fenntartottak vagy tiltottak.
végrehajtható Meghatározza a protokoll alapértelmezett indító programját. Ha nincs megadva, a rendszer az alkalmazás végrehajtható fájlját használja. Ha meg van adva, a sztringnek 1 és 256 karakter közötti hosszúságúnak kell lennie, ".exe" végződésűnek kell lennie, és nem tartalmazhat ilyen karaktereket: >, , <:, ", |, ?, vagy *. Ha meg van adva, a belépési pont is használható. Ha a belépési pont nincs megadva, a rendszer az alkalmazáshoz definiált belépési pontot használja.
Belépési pont A protokollbővítményt kezelő feladatot adja meg. Ez általában egy Windows-futtatókörnyezet-típus teljes névtér-minősített neve. Ha nincs megadva, a rendszer az alkalmazás belépési pontját használja.
Kezdőlap A bővíthetőségi pontot kezelő weblap.
Erőforráscsoport A bővítményaktiválások erőforrás-kezelési célokra való csoportosítására használható címke.
Kívánt nézet (csak Windows rendszeren) Adja meg a Kívánt nézet mezőt, amely jelzi az alkalmazás ablakának az URI-séma nevének elindításakor szükséges helyet. A Kívánt nézet lehetséges értékei az Alapértelmezett, a UseLess, a UseHalf, a UseMore vagy a UseMinimum.
Jegyzet A Windows több különböző tényezőt is figyelembe vesz a célalkalmazás végső ablakméretének meghatározásakor, például a forrásalkalmazás előnyben részesítése, a képernyőn megjelenő alkalmazások száma, a képernyő tájolása stb. A Kívánt nézet beállítása nem garantálja a célalkalmazás adott ablakozási viselkedését.
Mobileszköz-család: A kívánt nézet nem támogatott a mobileszköz-családban.
  1. Adja meg images\Icon.pnglogóként.

  2. Adja meg a Megjelenítendő név SDK Sample URI Scheme

  3. Adja meg alsdk-t névként.

  4. A módosítás a package.appxmanifest fájlba való mentéséhez nyomja le a Ctrl+S billentyűkombinációt.

    Ez hozzáad egy ilyen bővítményelemet a csomagjegyzékhez. A windows.protocol kategória azt jelzi, hogy az alkalmazás kezeli az alsdk URI-séma nevét.

    <Applications>
        <Application Id= ... >
            <Extensions>
                <uap:Extension Category="windows.protocol">
                  <uap:Protocol Name="alsdk">
                    <uap:Logo>images\icon.png</uap:Logo>
                    <uap:DisplayName>SDK Sample URI Scheme</uap:DisplayName>
                  </uap:Protocol>
                </uap:Extension>
          </Extensions>
          ...
        </Application>
   </Applications>

2. lépés: A megfelelő ikonok hozzáadása

Az URI-séma alapértelmezett nevének minősülő alkalmazások ikonjai a rendszer különböző pontjain jelennek meg, például az Alapértelmezett programok vezérlőpulton. Tegyen be egy 44x44-es ikont a projekthez erre a célra. Egyezzen az alkalmazáscsempe emblémájának megjelenésével, és használja az alkalmazás háttérszínét az ikon áttetszővé tétele helyett. Az embléma a szegélyig terjedjen ki, és ne legyen rá párnázás. Tesztelje az ikonokat fehér háttéren. Az ikonjairól bővebb információt a alkalmazásikonok és emblémák alatt talál.

3. lépés: Az aktivált esemény kezelése

Megjegyzés:

WinUI-alkalmazásokban az App.OnLaunched alkalmazásban (vagy valójában bármikor) meghívhatja (AppInstance.GetActivatedEventArgs) az aktivált esemény argek lekéréséhez, és ellenőrizheti őket, hogy az alkalmazás hogyan lett aktiválva. További információért az UWP és a WinUI alkalmazások közötti életciklus-különbségekről lásd az alkalmazás életciklus-funkciójának migrálását.

Az UWP-alkalmazásokban az OnActivated eseménykezelő minden aktiválási eseményt fogad. A Kind tulajdonság az aktiválási esemény típusát jelzi. Ez a példa protokollaktiválási események kezelésére van beállítva.

public partial class App
{
   protected override void OnActivated(IActivatedEventArgs args)
  {
      if (args.Kind == ActivationKind.Protocol)
      {
         ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
         // TODO: Handle URI activation
         // The received URI is eventArgs.Uri.AbsoluteUri
      }
   }
}
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs const& args)
{
    if (args.Kind() == Windows::ApplicationModel::Activation::ActivationKind::Protocol)
    {
        auto protocolActivatedEventArgs{ args.as<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs>() };
        // TODO: Handle URI activation  
        auto receivedURI{ protocolActivatedEventArgs.Uri().RawUri() };
    }
}
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs^ args)
{
   if (args->Kind == Windows::ApplicationModel::Activation::ActivationKind::Protocol)
   {
      Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ eventArgs =
          dynamic_cast<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(args);
      
      // TODO: Handle URI activation  
      // The received URI is eventArgs->Uri->RawUri
   }
}

Megjegyzés:

Protokollszerződésen keresztül történő indításkor győződjön meg arról, hogy a Vissza gomb visszaviszi a felhasználót arra a képernyőre, amely elindította az alkalmazást, és ne az alkalmazás korábbi tartalmára.

Az alábbi kód programozott módon indítja el az alkalmazást az URI-ján keresztül:

   // Launch the URI
   var uri = new Uri("alsdk:");
   var success = await Windows.System.Launcher.LaunchUriAsync(uri)

Az alkalmazások URI-val történő elindításáról további információt az URI alapértelmezett alkalmazásának elindítása című témakörben talál.

Javasoljuk, hogy az alkalmazások új XAML-keretet hozzanak létre minden olyan aktiválási eseményhez, amely új lapot nyit meg. Így az új XAML-keret navigációs háttérrendszere nem tartalmaz olyan korábbi tartalmat, amelyet az alkalmazás a felfüggesztéskor az aktuális ablakban tartalmazhatna. Azoknak az alkalmazásoknak, amelyek úgy döntenek, hogy egyetlen XAML-keretet használnak az indításhoz és a fájlszerződésekhez, törölniük kell a Keret navigációs napló lapjait, mielőtt új oldalra lépnek.

Protokollaktiválással történő indításkor az alkalmazásoknak fontolóra kell venniük a felhasználói felület használatát, amely lehetővé teszi, hogy a felhasználó visszatérjen az alkalmazás felső oldalára.

Megjegyzések

Bármely alkalmazás vagy webhely használhatja az URI-séma nevét, beleértve a rosszindulatúakat is. Az URI-ban kapott adatok tehát nem megbízható forrásból származhatnak. Javasoljuk, hogy soha ne végezzen állandó műveletet az URI-ban kapott paraméterek alapján. Például URI-paraméterekkel indíthatja el az alkalmazást egy felhasználó fióklapján, de azt javasoljuk, hogy soha ne használja őket közvetlenül a felhasználói fiók módosítására.

Megjegyzés:

Ha új URI-sémanevet hoz létre az alkalmazáshoz, mindenképpen kövesse az RFC 4395 útmutatóját. Ez biztosítja, hogy a neve megfeleljen az URI-sémák szabványainak.

Megjegyzés:

Amikor egy UWP-alkalmazás protokollszerződésen keresztül indul el, győződjön meg arról, hogy a Vissza gomb visszaviszi a felhasználót az alkalmazást elindító képernyőre, nem pedig az alkalmazás korábbi tartalmára.

Javasoljuk, hogy az alkalmazások hozzanak létre egy új XAML-Frame példányt minden aktiválási eseményre, amely új Uri-célt nyit meg. Így az új XAML-keret navigációs háttérrendszere nem tartalmaz olyan korábbi tartalmat, amelyet az alkalmazás a felfüggesztéskor az aktuális ablakban tartalmazhatna.

Ha úgy dönt, hogy egyetlen XAML-Keret-t szeretne használni az indítási és protokollszerződésekhez, törölje a Keret navigációs naplójának lapjait, mielőtt új lapra navigál. Protokollszerződésen keresztül történő indításkor fontolja meg a felhasználói felület használatát az alkalmazásokba, amelyek lehetővé teszik a felhasználó számára, hogy visszalépjen az alkalmazás tetejére.