Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacje dla witryn sieci Web kojarzą twoją aplikację z witryną internetową, aby po otwarciu linku do witryny internetowej aplikacja została uruchomiona zamiast otwierać przeglądarkę. Jeśli aplikacja nie jest zainstalowana, witryna internetowa zostanie otwarta w przeglądarce w zwykły sposób. Użytkownicy mogą ufać temu doświadczeniu, ponieważ tylko zweryfikowani właściciele treści mogą zarejestrować się, aby uzyskać link. Użytkownicy będą mogli sprawdzić wszystkie zarejestrowane linki internetowe do aplikacji, przechodząc do pozycji Ustawienia > Aplikacje > dla witryn internetowych.
Ważne
Począwszy od aktualizacji systemu Windows 10 dla twórców oraz we wszystkich wersjach systemu Windows 11, obsługiwane linki kliknięte w przeglądarce Microsoft Edge w wersji Legacy uruchomią odpowiednią aplikację. Obsługiwane linki kliknięte przy użyciu obsługiwanych przeglądarek (na przykład Microsoft Edge Chromium, Firefox, Internet Explorer i inne) pozostaną w środowisku przeglądania.
Aby włączyć łączenie między aplikacjami internetowymi, należy wykonać następujące kroki:
- Zidentyfikuj adresy URI obsługiwane przez aplikację w pliku manifestu
- Plik JSON definiujący skojarzenie między aplikacją a witryną internetową. z nazwą rodziny pakietów aplikacji w tym samym katalogu głównym hosta, co deklaracja manifestu aplikacji.
- Obsługa aktywacji w aplikacji.
Rejestrowanie w celu obsługi linków http i https w manifeście aplikacji
Aplikacja musi zidentyfikować identyfikatory URI witryn internetowych, które będą obsługiwane. W tym celu dodaj rejestrację rozszerzenia Windows.appUriHandler do pliku manifestu aplikacji Package.appxmanifest.
Jeśli na przykład adres witryny internetowej to "msn.com", należy wprowadzić następujący wpis w manifeście aplikacji:
<Applications>
<Application ... >
...
<Extensions>
<uap3:Extension Category="windows.appUriHandler">
<uap3:AppUriHandler>
<uap3:Host Name="msn.com" />
</uap3:AppUriHandler>
</uap3:Extension>
</Extensions>
</Application>
</Applications>
Powyższa deklaracja rejestruje aplikację w celu obsługi linków z określonego hosta. Jeśli witryna internetowa ma wiele adresów (na przykład: m.example.com, www.example.com, and example.com), dodaj oddzielny <uap3:Host Name=... /> wpis wewnątrz <uap3:AppUriHandler> elementu dla każdego adresu.
Kojarzenie aplikacji i witryny internetowej z plikiem JSON
Aby upewnić się, że tylko aplikacja może otwierać zawartość w witrynie internetowej, dołącz nazwę rodziny pakietów aplikacji do pliku JSON znajdującego się w katalogu głównym serwera internetowego lub w dobrze znanym katalogu w domenie. Oznacza to, że witryna internetowa wyraża zgodę na otwieranie zawartości w witrynie przez wymienione aplikacje. Nazwę rodziny pakietów można znaleźć w sekcji Pakiety w projektancie manifestu aplikacji.
Ważne
Plik JSON nie powinien mieć rozszerzenia .json.
Utwórz plik JSON (bez rozszerzenia pliku .json) o nazwie windows-app-web-link i podaj nazwę rodziny pakietów aplikacji. Przykład:
[{
"packageFamilyName" : "Your app's package family name, e.g MyApp_9jmtgj1pbbz6e",
"paths" : [ "*" ],
"excludePaths" : [ "/news/*", "/blog/*" ]
}]
System Windows będzie nawiązywał połączenie HTTPS ze stroną internetową i wyszuka odpowiedni plik JSON na serwerze internetowym.
Obsługa poddomeny
Jeśli manifest aplikacji zawiera zarówno domenę główną (na przykład example.com), jak i poddomeny wieloznaczne (na przykład *.example.com), należy dodać allowSubdomains pole do pliku JSON, aby włączyć łączenie poddomeny. Bez tego pola linki do poddomen będą otwierane w przeglądarce zamiast aplikacji.
[{
"packageFamilyName" : "Your app's package family name, e.g MyApp_9jmtgj1pbbz6e",
"paths" : [ "*" ],
"excludePaths" : [ "/news/*", "/blog/*" ],
"allowSubdomains" : true
}]
Gdy allowSubdomains jest ustawione na true, linki do poddomen, takie jak subdomain.example.com/path, będą otwierały się poprawnie w aplikacji zamiast w przeglądarce.
Symbole wieloznaczne
W powyższym przykładzie pliku JSON pokazano użycie symboli wieloznacznych. Symbole wieloznaczne umożliwiają obsługę szerokiej gamy linków z mniejszą liczbą wierszy kodu. Łączenie między aplikacjami w sieci Web obsługuje dwa typy symboli wieloznacznych w pliku JSON:
| Symbol zastępczy | Opis |
|---|---|
| * | Reprezentuje dowolny podciąg |
| ? | Reprezentuje pojedynczy znak |
Na przykład w "excludePaths" : [ "/news/*", "/blog/*" ] powyższym przykładzie aplikacja będzie obsługiwać wszystkie ścieżki rozpoczynające się od adresu witryny internetowej (na przykład msn.com), z wyjątkiem tych w obszarze /news/ i /blog/.
msn.com/weather.html będą obsługiwane, ale nie msn.com/news/topnews.html.
Wiele aplikacji
Jeśli masz dwie aplikacje, które chcesz połączyć z witryną internetową, wpisz obie nazwy rodzin pakietów aplikacji w pliku JSON windows-app-web-link. Obie aplikacje mogą być obsługiwane. Użytkownik zostanie wyświetlony z wyborem, który jest domyślnym linkiem, jeśli oba są zainstalowane. Jeśli użytkownik chce później zmienić link domyślny, może go zmienić w obszarze Ustawienia > aplikacje dla witryn sieci Web. Deweloperzy mogą również w dowolnym momencie zmienić plik JSON i zobaczyć zmianę już tego samego dnia, ale nie później niż osiem dni po aktualizacji.
[{
"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/*" ]
}]
Uwaga / Notatka
Jeśli aplikacje muszą obsługiwać poddomeny, dodaj "allowSubdomains": true do każdego wpisu aplikacji w pliku JSON.
Aby zapewnić najlepsze doświadczenie użytkownikom, użyj wykluczeń ścieżek, aby zawartość dostępna wyłącznie online była wykluczona z obsługiwanych ścieżek w pliku JSON.
Najpierw sprawdzane są ścieżki wykluczone i jeśli istnieje dopasowanie, odpowiednia strona zostanie otwarta w przeglądarce zamiast wyznaczonej aplikacji. W powyższym przykładzie, ciąg "/news/*" obejmuje wszystkie strony znajdujące się pod tą ścieżką, podczas gdy "/news*" (brak ukośnika za 'news') obejmuje wszystkie ścieżki rozpoczynające się od 'news', takie jak "newslocal/", "newsinternational/" itd.
Obsługa linków podczas aktywacji, aby je połączyć z zawartością
Przejdź do App.xaml.cs w rozwiązaniu programu Visual Studio aplikacji i w obszarze OnActivated() dodaj obsługę połączonej zawartości. W poniższym przykładzie strona otwarta w aplikacji zależy od ścieżki identyfikatora 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();
}
Ważne
Pamiętaj, aby zastąpić ostateczną if (rootFrame.Content == null) logikę rootFrame.Navigate(deepLinkPageType, e); , jak pokazano w powyższym przykładzie.
Testowanie w lokalnym narzędziu do sprawdzania poprawności
Konfigurację aplikacji i witryny internetowej można przetestować, uruchamiając narzędzie do sprawdzania rejestracji hosta aplikacji, które jest dostępne w:
%windir%\system32\AppHostRegistrationVerifier.exe
Przetestuj konfigurację aplikacji i witryny internetowej, uruchamiając to narzędzie przy użyciu następujących parametrów:
AppHostRegistrationVerifier.exenazwa hosta packagefamilyname filepath
- Nazwa hosta: Witryna internetowa (na przykład microsoft.com)
- Nazwa rodziny pakietów (PFN): nazwa PFN aplikacji
- Ścieżka pliku: plik JSON na potrzeby walidacji lokalnej (na przykład C:\SomeFolder\windows-app-web-link)
Jeśli narzędzie nie zwróci niczego, walidacja będzie działać na tym pliku po jego przesłaniu. Jeśli istnieje kod błędu, nie będzie działać.
Możesz włączyć następujący klucz rejestru, aby wymusić dopasowanie ścieżki dla aplikacji ładowanych bezpośrednio w ramach lokalnej weryfikacji:
HKCU\Software\Classes\LocalSettings\Software\Microsoft\Windows\CurrentVersion\ AppModel\SystemAppData\YourApp\AppUriHandlers
Nazwa klucza: ForceValidation Wartość: 1
Testowanie: walidacja sieci Web
Zamknij aplikację, aby sprawdzić, czy aplikacja jest aktywowana po kliknięciu linku. Następnie skopiuj adres jednej z obsługiwanych ścieżek w witrynie internetowej. Jeśli na przykład adres witryny internetowej to "msn.com", a jedna ze ścieżek pomocy technicznej to "path1", należy użyć polecenia http://msn.com/path1
Sprawdź, czy aplikacja jest zamknięta. Naciśnij klawisz Windows + R, aby otworzyć okno dialogowe Uruchom i wklej link w oknie. Aplikacja powinna zostać uruchomiona zamiast przeglądarki internetowej.
Ponadto możesz przetestować aplikację, uruchamiając ją z innej aplikacji przy użyciu interfejsu API LaunchUriAsync . Możesz również użyć tego interfejsu API do testowania na telefonach.
Jeśli chcesz postępować zgodnie z logiką aktywacji protokołu, ustaw punkt przerwania w procedurze obsługi zdarzeń OnActivated .
Porady dotyczące programu AppUriHandlers
Te wskazówki pomogą Ci w pełni wykorzystać funkcję AppUriHandlers.
- Pamiętaj, aby określić tylko linki, które aplikacja może obsłużyć.
- Wyświetl listę wszystkich hostów, które będą obsługiwane. Należy pamiętać, że www.example.com and example.com są różnymi hostami.
- Użytkownicy mogą wybrać, która aplikacja woli obsługiwać witryny internetowe w obszarze Ustawienia.
- Plik JSON musi zostać przekazany do serwera https.
- Jeśli musisz zmienić ścieżki, które chcesz obsługiwać, możesz ponownie opublikować plik JSON bez ponownego publikowania aplikacji. Użytkownicy zobaczą zmiany w ciągu 1–8 dni.
- Wszystkie aplikacje ładowane bezpośrednio za pomocą programu AppUriHandlers będą miały zweryfikowane linki dla hosta podczas instalacji. Nie musisz mieć załadowanego pliku JSON, aby przetestować tę funkcję.
- Ta funkcja działa za każdym razem, gdy aplikacja jest aplikacją UWP uruchomioną przez LaunchUriAsync lub aplikacją desktopową systemu Windows uruchomioną przez klasę ShellExecuteEx. Jeśli adres URL odpowiada zarejestrowanemu programowi obsługi identyfikatora URI aplikacji, aplikacja zostanie uruchomiona zamiast przeglądarki.
Treści powiązane
Przykładowy projekt Web-to-App
Windows developer