Açıklayıcı Bağlantı Yakalama nedir?
Web'deki bağlantıları tıklamak bazen hoş bir sürprizle sonuçlanabilir. Örneğin, mobil cihazda YouTube'a yönlendiren bir web sayfası bağlantısı tıklandığında, yüklüyse YouTube iOS veya Android uygulaması açılır. Ancak YouTube PWA'yı masaüstü bilgisayara yüklediğinizde ve bir bağlantıyı tıkladığınızda bağlantı bir tarayıcı sekmesinde açılır.
Ancak durum daha karmaşık. Bağlantı bir web sitesinde değil de Google'ın sohbet uygulamalarından birinde aldığınız sohbet mesajında görünüyorsa ne yapmalısınız? Ayrı uygulama pencereleri kavramına sahip masaüstü işletim sistemlerinde, uygulama zaten açıksa her bağlantı tıklaması için yeni bir pencere veya sekme oluşturulmalı mı? Bağlantıların ve gezinme öğelerinin yakalanmasının birçok yolu vardır. Bunlara aşağıdakiler dahildir ancak bunlarla sınırlı değildir:
- Diğer web sayfalarındaki tıklanan bağlantılar.
- URL, işletim sistemindeki platforma özel bir uygulamadan başlatılır.
- Uygulama Kısayol API'sinden gelen gezinmeler.
- URL protokolü işleyicileri üzerinden giden bağlantılar.
- Dosya işleyiciler tarafından yapılan gezinmeler.
- Share Target API'nin neden olduğu gezinmeler.
- …ve diğerleri.
Açıklayıcı Bağlantı Yakalama, "capture_links"
adlı bir web uygulaması manifest mülkü için bir öneridir. Bu öneri, tarayıcıdan uygulamanın gezinme kapsamı dışındaki bir bağlamdan uygulamanın gezinme kapsamı içindeki bir URL'ye gitmesi istendiğinde ne olması gerektiğini geliştiricilerin açık bir şekilde belirlemesine olanak tanır. Kullanıcı gezinme kapsamındaysa (örneğin, kapsam içinde açık bir tarayıcı sekmesi varsa ve dahili bir bağlantıyı tıklarsa) bu teklif geçerli değildir.
Bağlantıyı orta tıklamak (veya sağ tıklayıp "yeni sekmede aç") gibi bazı özel koşullar genellikle bağlantı yakalama davranışını tetiklemez. Bir bağlantının target=_self
veya target=_blank
olması önemli değildir. Bu nedenle, bir tarayıcı penceresinde (veya farklı bir PWA'nın penceresinde) tıklanan bağlantılar, normalde aynı sekmede gezinmeye neden olsalar bile PWA'da açılır.
Önerilen kullanım alanları
Bu API'yi kullanabilecek sitelere örnek olarak şunlar verilebilir:
- Kullanıcı bağlantılarını tıkladığında tarayıcı sekmesi yerine pencere açmak isteyen PWA'lar. Masaüstü ortamında aynı anda birden fazla uygulama penceresi açık olması genellikle mantıklı bir durumdur.
- Geliştiricinin, her zaman uygulamanın yalnızca tek bir örneğinin açık olmasını tercih ettiği ve yeni gezinme öğelerinin mevcut örneği odak aldığı tek pencereli PWA'lar. Alt kullanım alanları şunlardır:
- Yalnızca bir örneğinin çalışmasının mantıklı olduğu uygulamalar (ör. müzik çalar, oyun).
- Tek bir örnekte çok doküman yönetimi içeren uygulamalar (ör. HTML ile uygulanmış sekme çubuğu).
about://flags üzerinden etkinleştirme
Kaynak deneme jetonu olmadan yerel olarak Açıklayıcı Bağlantı Yakalama'yı denemek için about://flags
dosyasında #enable-desktop-pwas-link-capturing
işaretini etkinleştirin.
Açıklayıcı Bağlantı Yakalama nasıl kullanılır?
Geliştiriciler, ek web uygulaması manifest alanı "capture_links"
'ten yararlanarak bağlantıların nasıl yakalanacağını açık bir şekilde belirleyebilir. Değeri olarak bir dize veya dize dizisi alır. Bir dize dizisi verilirse kullanıcı aracısı, listedeki ilk desteklenen öğeyi seçer ve varsayılan olarak "none"
değerini kullanır. Aşağıdaki değerler desteklenir:
"none"
(varsayılan): Bağlantı yakalanmaz; bu PWA kapsamına giden tıklanan bağlantılar, PWA penceresi açmadan normal şekilde gezinir."new-client"
: Tıklanan her bağlantı, ilgili URL'de yeni bir PWA penceresi açar."existing-client-navigate"
: Tıklanan bağlantı, mevcut bir PWA penceresinde (varsa) veya yoksa yeni bir pencerede açılır. Birden fazla PWA penceresi varsa tarayıcı, birini keyfi olarak seçebilir. Şu anda açık pencere yoksa bu değer"new-client"
gibi davranır. 🚨 Dikkatli olun. Sayfalar keyfi olarak başka bir sayfaya yönlendirilebileceğinden bu seçenek veri kaybına neden olabilir. Siteler, bu seçeneği belirleyerek bu tür bir davranışı etkinleştirdiklerini bilmelidir. Bu seçenek, müzik çalarlar gibi kullanıcı verilerini bellekte tutmayan "salt okunur" siteler için en iyi şekilde çalışır. Gezinme işleminin yapıldığı sayfadabeforeunload
etkinliği varsa kullanıcı, gezinme işlemi tamamlanmadan önce istemi görür.
Demo
Açıklayıcı Bağlantı Yakalama demosu aslında birlikte etkileşime geçen iki demodan oluşur:
Aşağıdaki ekran kaydı, iki öğenin nasıl etkileşimde bulunduğunu gösterir. Bunlar "new-client"
ve "existing-client-navigate"
olmak üzere iki farklı davranış gösterir. Davranıştaki farkı görmek için uygulamaları sekmede veya yüklü bir PWA olarak çalıştırarak farklı durumlarda test ettiğinizden emin olun.
Güvenlik ve izinler
Chromium ekibi, kullanıcı kontrolü, şeffaflık ve ergonomi gibi Güçlü Web Platformu Özelliklerine Erişimi Kontrol Etme başlıklı makalede tanımlanan temel ilkeleri kullanarak Açıklayıcı Bağlantı Yakalama özelliğini tasarlayıp uyguladı. Bu API, sitelere yeni ek kontrol seçenekleri sunar. İlk olarak, yüklü uygulamaları bir pencerede otomatik olarak açabilirsiniz. Bu yöntemde mevcut kullanıcı arayüzü kullanılır ancak sitenin bu arayüzü otomatik olarak tetiklemesi sağlanır. İkincisi, mevcut bir pencereyi kendi alanında odaklama ve tıklanan URL'yi içeren bir etkinlik tetikleme özelliğidir. Bu, sitenin varsayılan HTML gezinme akışını geçersiz kılarak mevcut bir pencereden yeni bir sayfaya gitmesine olanak tanır.
Launch Handler API'ye geçiş yapma
Chromium 97 ve önceki sürümler için Declarative Link Capturing API kaynak denemesinin 30 Mart 2022'de süresi doldu. Chromium 98 ve sonraki sürümlerde, kullanıcı tarafından etkinleştirilen bağlantı yakalama ve Launch Handler API gibi yeni özellikler ve API'ler ile değiştirilecek.
Bağlantı yakalama
Chromium 98'de otomatik bağlantı yakalama, web uygulamasına yükleme sırasında verilen bir özellik yerine kullanıcının etkinleştirmesi gereken bir davranış haline geldi. Bağlantı yakalamayı etkinleştirmek için kullanıcının, Şu programla aç'ı kullanarak tarayıcıdan yüklü bir uygulamayı başlatması ve Seçimimi hatırla'yı seçmesi gerekir.
Alternatif olarak, kullanıcılar uygulama yönetimi ayarları sayfasında belirli bir web uygulaması için bağlantı yakalamayı etkinleştirebilir veya devre dışı bırakabilir.
Bağlantı yakalama özelliği şu anda yalnızca ChromeOS'te kullanılabilir. Windows, macOS ve Linux için destek çalışmaları devam etmektedir.
Launch Handler API
Gelen gezinmenin kontrolü, Launch Handler API'ye taşınır. Bu API, web uygulamalarının bağlantı yakalama, paylaşım hedefi veya dosya işleme gibi çeşitli durumlarda nasıl başlatılacağına karar vermesine olanak tanır. Declarative Link Capturing API'den Launch Handler API'ye geçmek için:
- Sitenizi Başlatma işleyicisi kaynak denemesi için kaydedin ve kaynak deneme anahtarını web uygulamanıza yerleştirin.
Sitenizin manifest dosyasına
"launch_handler"
girişi ekleyin."capture_links": "new-client"
kullanmak için:"launch_handler": { "route_to": "new-client" }
ekleyin."capture_links": "existing-client-navigate"
kullanmak için şunu ekleyin:"launch_handler": { "route_to": "existing-client-navigate" }
."capture_links": "existing-client-event"
(Declarative Link Capturing kaynak denemesinde hiçbir zaman uygulanmadı) kullanmak için şunu ekleyin:"launch_handler": { "route_to": "existing-client-retain" }
. Bu seçenekle, uygulama kapsamınızdaki sayfalar bir bağlantı gezinmesi yakalandığında artık otomatik olarak gezinmez. Gezinmeyi etkinleştirmek içinwindow.launchQueue.setConsumer()
'ü çağırarak JavaScript'teLaunchParams
'ü işlemeniz gerekir.
capture_links
alanı ve Declarative Link Capturing kaynak deneme kaydı 30 Mart 2022'ye kadar geçerlidir. Bu sayede, Chromium 97 ve önceki sürümleri kullanan kullanıcılar, web uygulamasını yakalanan bir bağlantıdan başlatmaya devam edebilir.
Daha fazla bilgi için Uygulamanızın nasıl başlatılacağını kontrol etme başlıklı makaleyi inceleyin.
Geri bildirim
Chromium ekibi, Açıklayıcı Bağlantı Yakalama ile ilgili deneyimlerinizi öğrenmek istiyor.
API tasarımı hakkında bilgi verin
API ile ilgili olarak beklediğiniz gibi çalışmayan bir şey var mı? Yoksa fikrinizi uygulamak için ihtiyaç duyduğunuz yöntemler veya özellikler eksik mi? Güvenlik modeliyle ilgili sorunuz veya yorumunuz mu var? İlgili GitHub deposunda spesifikasyon sorunu oluşturun veya mevcut bir soruna düşüncelerinizi ekleyin.
Uygulamayla ilgili sorunları bildirme
Chromium'un uygulamasında bir hata mı buldunuz? Yoksa uygulama, spesifikasyondan farklı mı?
new.crbug.com adresinden hata kaydı oluşturun. Mümkün olduğunca fazla ayrıntı ekleyin, hatayı yeniden oluşturmayla ilgili basit talimatlar verin ve Bileşenler kutusuna UI>Browser>WebAppInstalls
yazın. Glitch, hızlı ve kolay yeniden oluşturma işlemlerini paylaşmak için mükemmel bir araçtır.
API'yi destekleme
Açıklayıcı Bağlantı Yakalama'yı kullanmayı planlıyor musunuz? Herkese açık desteğiniz, Chromium ekibinin özelliklere öncelik vermesine yardımcı olur ve diğer tarayıcı tedarikçi firmalarına bu özellikleri desteklemenin ne kadar önemli olduğunu gösterir.
#DeclarativeLinkCapturing
hashtag'ini kullanarak @ChromiumDev hesabına tweet gönderin ve bu özelliği nerede ve nasıl kullandığınızı bize bildirin.
Faydalı bağlantılar
- Özellik taslağı
- Açıklayıcı
- Chromium hatası
- Prototip oluşturma amacı
- Deneme yapma niyeti
- ChromeStatus girişi
Teşekkür ederiz
Açıklayıcı Bağlantı Yakalama, Alan Cutter ve Dominick Ng'nin katkılarıyla Matt Giuca tarafından belirlendi. API, Alan Cutter tarafından uygulanmıştır. Bu makale Joe Medley, Matt Giuca, Alan Cutter ve Shunya Shishido tarafından incelenmiştir. Unsplash'tan Zulmaury Saavedra tarafından oluşturulan hero resim.