PWA'lar (Progresif Web Uygulaması) için URL protokol işleyici kaydı

Daha entegre bir deneyim için yüklü PWA'ların belirli bir protokolü kullanan bağlantıları işlemesine izin verin.

Şemalar (protokoller) hakkında bilgi

Tek tip kaynak tanımlayıcısı (URI), soyut veya fiziksel bir kaynağı tanımlayan kısa bir karakter dizisidir. Her URI, ilgili şemada tanımlayıcı atamaya yönelik bir spesifikasyonu ifade eden bir şema adıyla başlar. Bu nedenle, URI söz dizimi, her şemanın spesifikasyonunun, bu şemayı kullanan tanımlayıcıların söz dizimini ve semantiğini daha da kısıtlayabileceği birleşik ve genişletilebilir bir adlandırma sistemidir. Şemalar, protokol olarak da bilinir. Şemalarla ilgili bazı örnekleri görebilirsiniz.

tel:+1-816-555-1212
mailto:Jane.Doe@example.com
news:comp.infosystems.www.servers.unix
https://web.dev/

Tekdüzen Kaynak Konum Belirleyicisi (URL) terimi, bir kaynağı tanımlamanın yanı sıra birincil erişim mekanizmasını (ör. ağ konumu) açıklayarak kaynağı bulma yöntemi sağlayan URI'ların alt kümesini ifade eder.

registerProtocolHandler() yöntemi hakkında bilgi

Yalnızca güvenli içerik Navigator yöntemi registerProtocolHandler() sitelerin belirli URL şemalarını açma veya işleme yeteneklerini kaydetmelerine olanak tanır. Bu nedenle sitelerin yöntemi şu şekilde çağırması gerekir: navigator.registerProtocolHandler(scheme, url). Bu iki parametre şu şekilde tanımlanır:

  • scheme: Sitenin işlemek istediği protokolü içeren bir dize.
  • url: İşleyicinin URL'sini içeren bir dize. Bu URL, işlenecek çıkış URL'si ile değiştirilecek bir yer tutucu olarak %s içermelidir.

Şema, güvenli listeye alınmış şemalardan biri olmalı (ör. mailto, bitcoin veya magnet) ya da web+ ile başlayıp web+ ön ekinden sonra en az bir veya daha fazla küçük ASCII harfi (ör. web+coffee) içermelidir.

Bu konuyu daha net açıklamak için akışla ilgili somut bir örnek verelim:

  1. Kullanıcı, https://coffeeshop.example.com/ adresinde aşağıdaki çağrıyı yapan bir siteyi ziyaret eder: navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s').
  2. Daha sonra, https://randomsite.example.com/ adresini ziyaret ederken kullanıcı <a href="web+coffee:latte-macchiato">All about latte macchiato</a> gibi bir bağlantıyı tıklar.
  3. Bu, tarayıcının şu URL'ye gitmesine neden olur: https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. Arama dizesinin URL kodu çözüldüğünde ?type=web+coffee://latte-macchiato olur.

Protokol işleme nedir?

Mevcut PWA'lar (Progresif Web Uygulaması) için URL protokol işleyici kaydı mekanizması, manifesti aracılığıyla bir PWA yüklemesinin parçası olarak protokol işleyici kaydı sunmakla ilgilidir. Bir PWA'yı protokol işleyici olarak kaydettikten sonra, kullanıcı bir tarayıcıdan veya platforma özel bir uygulamadan mailto, bitcoin ya da web+music gibi belirli bir şemaya sahip bir köprüye tıkladığında kayıtlı PWA açılır ve URL'yi alır. Önerilen manifest tabanlı kaydın ve geleneksel registerProtocolHandler()'nin pratikte çok benzer roller oynadığını ancak tamamlayıcı kullanıcı deneyimleri sunma olasılığını da sağladığını belirtmek önemlidir:

  • Benzerlikler arasında, kaydedilmesine izin verilen şemaların listesi ve parametrelerin adı ile biçimi gibi gereksinimler yer alır.
  • Manifest tabanlı kayıttaki farklılıklar çok belirgin olmasa da PWA kullanıcılarının deneyimini iyileştirmek için faydalı olabilir. Örneğin, manifest tabanlı PWA kaydı, kullanıcının başlattığı PWA yüklemesi dışında ek bir kullanıcı işlemi gerektirmeyebilir.

Kullanım alanları

  • Kelime işlemci PWA'sında, dokümandaki kullanıcı web+presentations://deck2378465 gibi bir sunu bağlantısıyla karşılaşır. Kullanıcı bağlantıyı tıkladığında sunu PWA'sı otomatik olarak doğru kapsamda açılır ve slayt sunusunu gösterir.
  • Platforma özel bir sohbet uygulamasında, sohbet mesajındaki kullanıcı bir magnet URL'sinin bağlantısını alır. Bağlantı tıklandığında, yüklü bir torrent PWA'sı başlatılır ve indirme işlemi başlar.
  • Kullanıcının cihazında müzik akışı PWA'sı yüklü. Bir arkadaşınız web+music://songid=1234&time=0:13 gibi bir şarkının bağlantısını paylaştığında ve kullanıcı bu bağlantıyı tıkladığında, müzik akışı PWA'sı otomatik olarak bağımsız bir pencerede açılır.

PWA'lar (Progresif Web Uygulaması) için URL protokol işleyici kaydını kullanma

URL protokol işleyici kaydı için API, navigator.registerProtocolHandler() ile yakından modellenmiştir. Ancak bu kez bilgiler, "protocol" ve "url" olmak üzere iki zorunlu anahtara sahip bir nesne dizisi alan "protocol_handlers" adlı yeni bir özellikte web uygulaması manifesti kullanılarak bildirimli olarak iletilir. Aşağıdaki kod snippet'inde, web+tea ve web+coffee'nin nasıl kaydedileceği gösterilmektedir. Değerler, kaçış karakterli URL için gerekli %s yer tutucusunu içeren işleyicinin URL'sini içeren dizelerdir.

{
  "protocol_handlers": [
    {
      "protocol": "web+tea",
      "url": "/tea?type=%s"
    },
    {
      "protocol";: "web+coffee",
      "url": "/coffee?type=%s"
    }
  ]
}

Aynı protokol için birden fazla uygulamanın kaydolması

Birden fazla uygulama kendisini aynı şema (ör. mailto protokolü) için işleyici olarak kaydettirirse işletim sistemi, kullanıcıya bir seçici gösterir ve kayıtlı işleyicilerden hangisini kullanacağına karar vermesini sağlar.

Aynı uygulamanın birden fazla protokol için kaydolması

Kod örneğinde görebileceğiniz gibi, aynı uygulama birden fazla protokol için kendini kaydedebilir.

Uygulama güncellemeleri ve işleyici kaydı

İşleyici kayıtları, uygulama tarafından sağlanan en son manifest sürümüyle senkronize edilir. İki durum vardır:

  • Yeni işleyiciler ekleyen bir güncelleme, işleyici kaydını tetikler (uygulama yüklemesinden ayrı olarak).
  • İşleyicileri kaldıran bir güncelleme, işleyici kaydının iptal edilmesini tetikler (uygulamanın kaldırılmasından ayrıdır).

Geliştirici Araçları'nda protokol işleyici hata ayıklama

Uygulama > Manifest panelini kullanarak Protokol İşleyiciler bölümüne gidin. Kullanılabilir tüm protokolleri burada görüntüleyebilir ve test edebilirsiniz.

Manifesto bölmesindeki protokol işleyicileri

Güvenlikle ilgili olarak göz önünde bulundurulması gerekenler

PWA yüklemesi için bağlamın güvenli olması gerektiğinden protokol işleme de bu kısıtlamayı devralır. Kayıtlı protokol işleyicilerin listesi hiçbir şekilde web'e gösterilmez. Bu nedenle, dijital parmak izi vektörü olarak kullanılamaz.

Kullanıcı tarafından başlatılmayan gezinme girişimleri

Kullanıcı tarafından başlatılmayan ancak programatik olan gezinme girişimleri uygulamaları açmayabilir. Özel protokol URL'si yalnızca üst düzey tarama bağlamlarında kullanılabilir. Örneğin, bir iframe'in URL'si olarak kullanılamaz.

Protokollerin izin verilenler listesi

registerProtocolHandler() gibi, uygulamaların işlemek için kaydolabileceği protokollerin izin verilenler listesi vardır.

PWA, çağrılan bir protokol nedeniyle ilk kez başlatıldığında kullanıcıya bir izin iletişim kutusu gösterilir. Bu iletişim kutusunda uygulamanın adı ve kaynağı gösterilir ve kullanıcıya, uygulamanın protokolden gelen bağlantıları işlemesine izin verilip verilmediği sorulur. Kullanıcı izin iletişim kutusunu reddederse kayıtlı protokol işleyici, işletim sistemi tarafından yoksayılır. Protokol işleyicinin kaydını iptal etmek için kullanıcının, protokol işleyiciyi kaydeden PWA'yı kaldırması gerekir. Kullanıcı "Seçimimi hatırla"yı ve "İzin verme"yi seçerse tarayıcı, protokol işleyicinin kaydını da iptal eder.

Geri bildirim

Chromium ekibi, PWA'lar için URL protokol işleyici kaydıyla ilgili deneyimlerinizi öğrenmek istiyor.

API tasarımı hakkında bilgi verin

API'nin beklediğiniz gibi çalışmayan bir yönü var mı? Yoksa fikrinizi uygulamak için eksik yöntemler veya özellikler mi var? Güvenlik modeliyle ilgili sorunuz veya yorumunuz mu var? İlgili GitHub deposunda bir spesifikasyon sorunu bildirin veya mevcut bir soruna düşüncelerinizi ekleyin.

Uygulamayla ilgili sorun bildirme

Chromium'un uygulamasında bir hata mı buldunuz? Yoksa uygulama, spesifikasyondan farklı mı? new.crbug.com adresinde bir hata bildirin. Mümkün olduğunca fazla ayrıntı ve hatayı yeniden oluşturma talimatlarını eklediğinizden emin olun ve Bileşenler kutusuna UI>Browser>WebAppInstalls yazın.

API'yi desteklediğinizi gösterme

PWA'lar (Progresif Web Uygulaması) için URL protokol işleyici kaydını kullanmayı planlıyor musunuz? Herkese açık desteğiniz, Chromium ekibinin özelliklere öncelik vermesine yardımcı olur ve diğer tarayıcı tedarikçilerine bu özellikleri desteklemenin ne kadar önemli olduğunu gösterir.

WICG Discourse ileti dizisinde bu API'yi nasıl kullanmayı planladığınızı paylaşın. #ProtocolHandler hashtag'ini kullanarak @ChromiumDev hesabına tweet gönderin ve bu özelliği nerede ve nasıl kullandığınızı bize bildirin.

Onaylar

PWA'lar (Progresif Web Uygulaması) için URL protokol işleyici kaydı, Microsoft Edge ekibinden Fabio Rocha, Diego González, Connor Moody ve Samuel Tang tarafından uygulanmış ve belirtilmiştir. Bu doküman Joe Medley ve Fabio Rocha tarafından incelenmiştir.