Uygulama URI işleyicilerini kullanarak web siteleri için uygulamaları etkinleştirme
Web Siteleri için Uygulamalar uygulamanızı bir web sitesiyle ilişkilendirir, böylece birisi web sitenizin bağlantısını açtığında tarayıcıyı açmak yerine uygulamanız başlatılır. Uygulamanız yüklü değilse, web siteniz her zamanki gibi tarayıcıda açılır. Yalnızca doğrulanmış içerik sahipleri bir bağlantıya kaydolabildiğinden kullanıcılar bu deneyime güvenebilir. Kullanıcılar, Ayarlar > Uygulamalar > Web siteleri için Uygulamalar'a giderek tüm kayıtlı web-uygulama bağlantılarını denetleyebilecektir.
Önemli
Windows 10 Creators güncelleştirmesiyle başlayarak ve tüm Windows 11 sürümlerinde, Microsoft Edge Eski sürümünde tıklanan desteklenen bağlantılar ilgili uygulamayı başlatır. Desteklenen tarayıcılarda (örneğin, Microsoft Edge Chromium, Firefox, Internet Explorer vb.) tıklanan desteklenen bağlantılar sizi göz atma deneyiminde tutar.
Web'de uygulama bağlantısını etkinleştirmek için yapmanız gerekenler:
- Uygulamanızın bildirim dosyasında işleyecek URI'leri tanımlama
- Uygulamanızla web siteniz arasındaki ilişkiyi tanımlayan bir JSON dosyası. uygulama manifesti beyanıyla aynı ana bilgisayar kökünde uygulama Paket Aile Adı ile.
- Uygulamada etkinleştirmeyi gerçekleştirin.
Uygulama bildiriminde http ve https bağlantılarını işlemek için kaydolun
Uygulamanızın işleyecek web siteleri için URI'leri tanımlaması gerekir. Bunu yapmak için Windows.appUriHandler uzantı kaydını package.appxmanifest uygulamanızın bildirim dosyasına ekleyin.
Örneğin, web sitenizin adresi "msn.com" ise uygulamanızın bildiriminde aşağıdaki girişi yaparsınız:
<Applications>
<Application ... >
...
<Extensions>
<uap3:Extension Category="windows.appUriHandler">
<uap3:AppUriHandler>
<uap3:Host Name="msn.com" />
</uap3:AppUriHandler>
</uap3:Extension>
</Extensions>
</Application>
</Applications>
Yukarıdaki bildirim, belirtilen sunucudan bağlantıları işlemek için uygulamanızı kaydeder. Web sitenizin birden çok adresi varsa (örneğin: m.example.com, www.example.com, and example.com) her adres için <uap3:AppUriHandler>
içine ayrı bir <uap3:Host Name=... />
girişi ekleyin.
Uygulamanızı ve web sitenizi bir JSON dosyasıyla ilişkilendirme
Yalnızca uygulamanızın web sitenizde içerik açabilmesini sağlamak için, uygulamanızın paket ailesi adını web sunucusu kökünde veya etki alanındaki iyi bilinen dizinde bulunan bir JSON dosyasına ekleyin. Bu, web sitenizin listelenen uygulamaların sitenizde içerik açmasına izin verdiğini gösterir. Paket ailesi adını uygulama bildirim tasarımcısının Paketler bölümünde bulabilirsiniz.
Önemli
JSON dosyasının .json dosya soneki olmamalıdır.
windows-app-web-link adlı bir JSON dosyası (.json dosya uzantısı olmadan) oluşturun ve uygulamanızın paket ailesi adını sağlayın. Örneğin:
[{
"packageFamilyName" : "Your app's package family name, e.g MyApp_9jmtgj1pbbz6e",
"paths" : [ "*" ],
"excludePaths" : [ "/news/*", "/blog/*" ]
}]
Windows web sitenize bir https bağlantısı oluşturur ve web sunucunuzda ilgili JSON dosyasını arar.
Joker karakterler
Yukarıdaki JSON dosyası örneği joker karakterlerin kullanımını gösterir. Joker karakterler, daha az kod satırı içeren çok çeşitli bağlantıları desteklemenizi sağlar. Web'den uygulamaya bağlantı, JSON dosyasında iki tür joker karakteri destekler.
Joker Karakter | Açıklama |
---|---|
* | Herhangi bir alt dizeyi temsil eder |
? | Tek bir karakteri temsil eder |
Örneğin, yukarıdaki örnekteki "excludePaths" : [ "/news/*", "/blog/*" ]
verilen uygulama, web sitenizin adresiyle başlayan tüm yolları (örneğin, msn.com) /news/
ve /blog/
altındakiler dışında destekler.
msn.com/weather.html desteklenir, ancak msn.com/news/topnews.htmldesteklenmez.
Birden çok uygulama
Web sitenize bağlamak istediğiniz iki uygulamanız varsa, windows-app-web-link JSON dosyanızdaki uygulama paketi aile adlarının ikisini de listeleyin. Her iki uygulama da desteklenebilir. Her ikisi de yüklüyse, kullanıcıya varsayılan bağlantıyı seçme şansı sunulur. Varsayılan bağlantıyı daha sonra değiştirmek isterlerse, Ayarlar > Web Siteleri için Uygulamalar'nde değiştirebilirler. Geliştiriciler ayrıca JSON dosyasını istedikleri zaman değiştirebilir ve değişikliği aynı gün kadar erken görebilir ancak güncelleştirmeden en geç sekiz gün sonra görebilir.
[{
"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/*" ]
}]
Kullanıcılarınız için en iyi deneyimi sağlamak için, yalnızca çevrimiçi içeriğin JSON dosyanızdaki desteklenen yollardan dışlandığından emin olmak için dışlama yollarını kullanın.
Öncelikle dışlama yolları kontrol edilir ve eşleşme varsa, ilgili sayfa belirlenen uygulama yerine tarayıcı ile açılır. Yukarıdaki örnekte '/news/*' söz konusu yolun altındaki sayfaları içerirken, '/news*' (önce eğik çizgi olmadan 'news'), 'newslocal/', 'newsinternational/' gibi herhangi bir "news*" yolu altında sayfaları içerir.
İçeriğe bağlanmak için Etkinleştirme bağlantılarını işleme
Uygulamanızın Visual Studio çözümünde App.xaml.cs dosyasına gidin ve OnActivated() metodunda bağlı içerik için işleme ekleyin. Aşağıdaki örnekte, uygulamada açılan sayfa URI yoluna bağlıdır:
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();
}
Önemli
Yukarıdaki örnekte gösterildiği gibi son if (rootFrame.Content == null)
mantığını rootFrame.Navigate(deepLinkPageType, e);
ile değiştirdiğinden emin olun.
Yerel doğrulama aracında test edin
Uygulama ana bilgisayar kaydı doğrulayıcı aracını çalıştırarak uygulamanızın ve web sitenizin yapılandırmasını test edebilirsiniz:
%windir%\system32\AppHostRegistrationVerifier.exe
Bu aracı aşağıdaki parametrelerle çalıştırarak uygulamanızın ve web sitenizin yapılandırmasını test edin:
AppHostRegistrationVerifier.exeana bilgisayar adı packagefamilyname dosya yolu
- Ana bilgisayar adı: Web siteniz (örneğin, microsoft.com)
- Paket Aile Adı (PFN): Uygulamanızın PFN'si
- Dosya yolu: Yerel doğrulama için JSON dosyası (örneğin, C:\SomeFolder\windows-app-web-link)
Araç herhangi bir şey döndürmezse, dosya yüklendiğinde doğrulama bu dosya üzerinde yapılacaktır. Bir hata kodu varsa, çalışmaz.
Yerel doğrulamanın bir parçası olarak dışarıdan yüklenen uygulamalar için yol eşleştirmeyi zorlamak için aşağıdaki kayıt defteri anahtarını etkinleştirebilirsiniz:
HKCU\Software\Classes\LocalSettings\Software\Microsoft\Windows\CurrentVersion\ AppModel\SystemAppData\YourApp\AppUriHandlers
Anahtar adı: ForceValidation
Değeri: 1
Test edin: Web doğrulaması
Bir bağlantıya tıkladığınızda uygulamanın etkinleştirildiğini doğrulamak için uygulamanızı kapatın. Ardından web sitenizde desteklenen yollardan birinin adresini kopyalayın. Örneğin, web sitenizin adresi "msn.com" ise ve destek yollarından biri "path1" ise, http://msn.com/path1
kullanırsınız.
Uygulamanızın kapalı olduğunu doğrulayın. Windows Tuşu + R tuşlarına basarak Çalıştır iletişim kutusunu açın ve bağlantıyı pencereye yapıştırın. Uygulamanızın web tarayıcısı yerine başlatılması gerekir.
Ayrıca, LaunchUriAsync API'sini kullanarak uygulamanızı başka bir uygulamadan başlatarak test edebilirsiniz. Bu API'yi telefonlarda test etmek için de kullanabilirsiniz.
Protokol etkinleştirme mantığını izlemek istiyorsanız, OnActivated olay işleyicisinde bir kesme noktası ayarlayın.
AppUriHandlers ipuçları
Bu ipuçları, AppUriHandlers özelliğinden en iyi şekilde yararlanmak için size yardımcı olur:
- Yalnızca uygulamanızın işleyebileceği bağlantıları belirttiğinizden emin olun.
- Destekleyeceğiniz tüm sunucuları listeleyin. www.example.com and example.com'un farklı sunucular olduğunu unutmayın.
- Kullanıcılar, Ayarlar'da web sitelerini işlemeyi tercih ettikleri uygulamayı seçebilir.
- JSON dosyanız bir https sunucusuna yüklenmelidir.
- Desteklemek istediğiniz yolları değiştirmeniz gerekiyorsa, uygulamanızı yeniden yayımlamadan JSON dosyanızı yeniden yayımlayabilirsiniz. Kullanıcılar değişiklikleri 1-8 gün içinde görür.
- AppUriHandlers ile yan yüklenen tüm uygulamalar, yükleme sırasında sunucu için doğrulanmış bağlantılara sahip olacaktır. Özelliği test etmek için bir JSON dosyasının karşıya yüklenmesi gerekmez.
- Bu özellik, uygulamanız LaunchUriAsync ile başlatılan bir UWP uygulaması veya ShellExecuteExile başlatılan bir Windows masaüstü uygulaması olduğunda çalışır. URL kayıtlı bir Uygulama URI işleyicisine karşılık geliyorsa, uygulama tarayıcı yerine başlatılır.
İlgili içerik
Windows developer