Web Uygulaması Kapsam Uzantıları

Chrome 122'den itibaren, birden fazla alt alan adını ve üst düzey alanı kontrol eden sitelerin tek bir web uygulaması olarak sunulmasına olanak tanıyan scope_extensionsuygulama manifesti üyesinin kaynak deneme sürümüne abone olabilirsiniz. Bu belgede, Chrome Ekibi'nin bu özelliği neden kullanıma sunduğu ve ne zaman kullanmak isteyebileceğiniz açıklanmaktadır.

Genel Bakış

Bazı web uygulamalarının birden fazla kökeni vardır. Örneğin, ana uygulama olarak example.com, ardından space_1.example.com, …,space_n.example.com ve bazen special-example.com ile birlikte alt deneyimler olarak, tümü ana uygulamanın çatısı altındadır. Bu tür bir site mimarisi, Progresif Web Uygulamaları bağlamında önemli sonuçlar doğurur. Sınırlılıklar arasında hizmet çalışanlarını, cihaz türlerini, yerel depolama alanını ve izinleri farklı kaynaklar arasında paylaşamama yer alır. Bağımsız bir PWA'daki kaynaklar arası gezinme, kullanıcının PWA deneyiminden çıktığını belirten bir pencere kullanıcı arayüzü ("kapsam dışı" çubuğu) gösterir. Bu sorunlardan bazılarının nasıl çözüleceğini Çok kaynaklı sitelerde Progresif Web Uygulamaları ve Aynı alan adında birden fazla Progresif Web Uygulaması oluşturma makalelerinde öğrenebilirsiniz.

Scope Extensions API, web uygulamalarının aynı kaynak politikasının bu tür site mimarisine getirdiği bazı zorlukların üstesinden gelmesine olanak tanır. Web uygulamalarının birincil kaynağı ile ilişkili kaynaklar arasındaki anlaşmaya göre, birleşik bir deneyim elde etmeye yardımcı olması için kapsamını diğer kaynakları içerecek şekilde genişletmesine olanak tanır.

Hedefler

Kapsam Uzantıları API'sinin ana hedefi, birden fazla alt alan adını ve üst düzey alanı kontrol eden sitelerin web uygulaması kullanıcı arayüzü ve bağlantı yakalama konusunda tek bir sürekli web uygulaması gibi davranmasına izin vermektir. Örneğin, example.com.co.uk ve support.example.com özelliklerini kapsayan example.com sitesinin, tek bir web uygulaması kadar aynı şekilde davranmasına izin vermek.

Ana PWA'yı ve ilişkili alt deneyimleri gösteren şema.

Kapsam uzantıları, web uygulaması kullanıcı arayüzü söz konusu olduğunda çok kaynaklı PWA'ların birbirine bağlı bir web uygulaması gibi davranmasına olanak tanır.

Pratikte bu, iki belirli hedef daha anlamına gelir:

  • Kaynaklar arası gezinme: Kullanıcıları, PWA'dan ayrıldıklarını bildiren pencere kullanıcı arayüzünü çağırarak kullanıcı deneyimini kesintiye uğratmadan ilişkili kaynaklar arasında gezinmeye izin verin.
  • Kaynaklar arası bağlantı yakalama: Web uygulamalarının, ilişkili oldukları sitelere yapılan kullanıcı gezinmelerini yakalamasına izin verir.

Kaynaklar arası kapsam içi gezinme

Varsayılan olarak, kullanıcılar bağımsız bir PWA'da kaynaklar arasında gezindiğinde, PWA deneyiminin dışına çıktıklarını belirten bir pencere kullanıcı arayüzü gösterilir. Chrome'da bu kullanıcı arayüzü, yeni kaynağın URL'sini içeren bir "kapsam dışında" çubuğundan oluşur. Kullanıcılar aynı uygulama bağlamında gezinmeye devam etmeyi beklediğinden ancak uygulamadan çıkarıldığını algılayabileceğinden bu durum kullanıcı deneyimini olumsuz etkiler.

Bağımsız bir PWA'nın üst kısmındaki kapsam dışında çubuğu.

Kullanıcılar bağımsız bir PWA'da farklı kaynaklar arasında gezinirken Chrome'da gösterilen "Kapsam dışında" çubuğu.

Kapsam Uzantıları ile kullanıcılar ilişkili kaynaklardan herhangi birine gittiğinde pencere kullanıcı arayüzü gösterilmez. Böylece PWA, birleştirilmiş bir deneyim olarak sunulur.

Bağlantı Yakalama, bir uygulamanın kendi kapsamı içindeki bağlantıları yakalayabilmesini ifade eder. Bu özelliğin uygulanması, tarayıcılar ve işletim sistemleri arasında değişiklik gösterir. Örneğin, ChromeOS'teki Chrome'da yüklü bir PWA kapsamındaki bağlantılar, varsayılan olarak adres çubuğunda bu bağlantıları işleyebilen bir uygulama olduğunu belirten bir tarayıcı sekmesi açar. Bu bilgi, kullanıcının söz konusu noktadan otomatik bağlantı yakalamayı etkinleştirmesine olanak tanır.

Yüklü bir PWA için Omnibar istemi.

ChromeOS'teki bir sekme için Chrome adres çubuğu fragmenti. Bağlantının bir PWA tarafından işlenebileceğine dair görsel bir gösterge ve bu kararı hatırlama seçeneği gösterilmektedir.

Kullanıcı, PWA'nın kapsamı dışındaki bir bağlantıyı (alt alan adları veya üst düzey alan bağlantıları dahil) tıklarsa bu bağlantıya ait olarak algılanmaz. Örneğin, bağlantılar bir tarayıcı sekmesinde açılır ve kullanıcıya bağlantıyı işleyebilecek bir uygulamanın bulunduğuna dair herhangi bir işaret gösterilmez. Scope Extensions API, ilişkili kaynakların kapsam içi bağlantılar olarak değerlendirilmesi için PWA'nın kapsamının genişletilmesine olanak tanır.

Uygulama

Kapsam uzantılarının uygulanması, ana kaynak ile ilişkili kaynaklar arasında ilişkinin kurulmasını gerektirir.

İlişkili kaynakların listesini beyan etme

Web uygulamasının kapsamını diğer kaynaklara genişletmesini sağlamak için ana PWA kaynağına bir scope_extensions web uygulaması manifesti üyesi ekleyin.

Web Uygulama Manifesti (https://example.com)

{
  "name": "Example",
  "display": "standalone",
  "start_url": "/index.html",
  "scope_extensions": [
    { "origin": "https://*.example.com" },
    { "origin": "https://example.co.uk" },
    { "origin": "https://*.example.co.uk" }
  ]
}

İlişkilendirmeleri onaylama

Listelenen kaynakların her biri, /.well-known/web-app-origin-association yapılandırma dosyası kullanarak web uygulamasıyla ilişkiyi onaylar. Bu dosya, Belirli Bir URI olduğundan web-app-origin-association olarak adlandırılmalı ve tam olarak bu konumda yayınlanmalıdır.

/.well-known/web-app-origin-association (ilişkili kaynak)

{
  "web_apps": [{ "web_app_identity": "https://example.com" }]
}

Demo

Demo iki siteden oluşur:

Aşağıdaki testleri gerçekleştirmek için about://flags/#enable-desktop-pwas-scope-extensions işaretini etkinleştirmeniz gerekir (Chrome 115 ve sonraki sürümlerde kullanılabilir).

Kaynaklar arası gezinmeyi test etme

Bu testlerin ön koşulu olarak, ana PWA'yı bir tarayıcıda açın, PWA olarak yükleyin ve bağımsız modda çalıştırmak için açın. PWA, geniş kapsamlı bir kaynağa ve geniş kapsamlı olmayan bir kaynağa bağlantılar içeriyor.

Kapsam içi ve genişletilmiş kapsam bağlantıları içeren ana PWA penceresi.

Geniş kapsamda kaynak bağlantıları ve genişletilmiş kapsamda olmayan kaynak içeren demo PWA.

Varsayılan kaynakta gezinme (geniş kapsamda değil)

  1. Tam ekran PWA'nın içinde kaynak, genişletilmiş kapsamda değil bağlantısını tıklayın.
  2. Bunun sonucunda gezinme gerçekleşir ve kapsam dışı çubuğu gösterilir.

Kapsam dışı bağlantısı tıklandıktan sonra kapsam dışı çubuğunun gösterildiği ana PWA penceresi.

Bağımsız modda bir PWA için kaynaklar arası gezinme için varsayılan olarak gösterilen "Kapsam dışı" çubuğu.

Kapsam uzantılarıyla kaynak ötesi gezinme (genişletilmiş kapsamda)

  1. PWA'nın ana sayfasına geri dönün.
  2. Geniş kapsamda olmayan kaynağın bağlantısını tıklayın.
  3. Varsayılan olarak "kapsam dışında" çubuğu gösterilmelidir ancak kapsam uzantıları ilişkilendirmesi nedeniyle gösterilmez.

Genişletilmiş kapsam bağlantısını tıkladıktan sonra kapsam dışında çubuğu olmayan ana PWA penceresi.

Kapsam Uzantıları ile kaynak ilişkilendirmesi yapıldıktan sonra kaynaklar arası gezinmede "Kapsam dışı" çubuğu gösterilmez.

  1. Ana PWA'yı açıp ChromeOS cihazına yükleyin.
  2. Aşağıdaki bağlantıyı tıklayın: İlişkili kaynak.
  3. Bağlantı yeni bir tarayıcı sekmesinde açılır ve yüklenen PWA'da açma istemi gösterilir.

Genişletilmiş kapsama sahip yüklü bir PWA için çok amaçlı adres çubuğu istemi.

Bir PWA'nın ilişkili kaynağının bağlantısı tıklandığında bağlantı yeni bir sekmede açılır ve kullanıcının otomatik bağlantı yakalamayı etkinleştirmesine olanak tanıyan bir "Uygulamada aç" simgesi gösterilir.

Kaynak denemesi

Uygulamanızda bu API'yi gerçek kullanıcılarla birlikte test etmek istiyorsanız kaynak denemesi ile bunu yapabilirsiniz. Kaynak denemeleri, alanınıza bağlı bir test jetonu elde ederek deneysel özellikleri kullanıcılarınızla denemenize olanak tanır. Ardından uygulamanızı dağıtabilir ve test ettiğiniz özelliği destekleyen bir tarayıcıda çalışmasını bekleyebilirsiniz (bu durumda, Chrome 121 ile 126 arasında kullanılabilir). Kaynak denemesi çalıştırmak üzere kendi jetonunuzu almak için başvuru formunu doldurun.

Geri bildirim

Chrome Ekibi, bu API'nin yararlılığı hakkında geri bildirim almak istiyor. Ekibin, API'nin yararlılığı ve mevcut sürümde yer almayan yeni kullanım alanları hakkındaki geri bildirimlerle bu API'yi geliştirmesine yardımcı olmak için GitHub'da bir sorun açın.

Ek kaynaklar

Teşekkür ederiz

Bu API'nin geliştirilmesinde emeği geçen ekibe özel teşekkürler. Kapsam Uzantıları, Matt Giuca'nın katkılarıyla Alan Cutter ve Lu Huang tarafından belirlendi. API, Google Chrome'dan Alan Cutter, Microsoft Edge'den Hassan Talat, Kristin Lee ve Lu Huang tarafından uygulanmıştır.