Chrome 116'da Uzantılar için Yenilikler

Chrome 116 şu anda beta sürümündedir ve Chrome Uzantısı geliştiricileri için birçok heyecan verici güncelleme içerir. Yeniliklere hızlıca göz atalım.

Sedat Benz
Sebastian Benz

Yan paneli programatik olarak açma

Yan panel, Chrome uzantılarında en çok istenen özelliklerden biri olmuştur ve Chrome'da 114 sürümünden beri kullanılmaktadır. Yan Panel API'sini kullanıma sunduktan sonra aldığımız ilk geri bildirimlerden biri, geliştiricilerin yan paneli programlı bir şekilde açmanın bir yolunu istedikleri yönündeydi. chrome.sidePanel.open artık beta sürümünde. Bunu, içerik menüsü tıklaması gibi bir kullanıcı etkileşimine yanıt olarak uzantı yan panelini programatik olarak açmak için kullanabilirsiniz:

chrome.contextMenus.onClicked.addListener((info, tab) => {
  if (info.menuItemId === 'openSidePanel') {
    // This will open the panel in all the pages on the current window.
    chrome.sidePanel.open({ windowId: tab.windowId });
  }
});

Hizmet Çalışanlarında WebSocket desteği

WebSocket desteği, Manifest V3'e geçmeyi planlayan birçok uzantı için kritik öneme sahiptir. Tüm WebSocket etkinlikleri, 30 sn. hizmet çalışanı boşta kalma zamanlayıcısını sıfırladığından Chrome 116, hizmet çalışanlarında WebSocket desteğini daha da iyileştiriyor. Bu, WebSocket'iniz etkin olduğu sürece hizmet çalışanının kullanımda kalacağı anlamına gelir.

Bunu, sunucunuzdan gelen iletileri beklerken (bir sonraki iletinin gelmesi 30 saniyeden fazla sürse bile) hizmet çalışanınızın etkin kalmasını sağlayan bir keepalive mekanizması uygulamak için kullanabilirsiniz:

function keepAlive() {
  const keepAliveIntervalId = setInterval(
    () => {
      if (webSocket) {
        webSocket.send('keepalive');
      } else {
        clearInterval(keepAliveIntervalId);
      }
    },
    // It's important to pick an interval that's shorter than 30s, to
    // avoid that the service worker becomes inactive.
    20 * 1000
  );
}

Daha fazla ayrıntı için yeni WebSocket kılavuzumuza ve örnekmize göz atın.

Hizmet Çalışanları için güçlü canlı tutma

Service Worker'ın yaşam döngüsünden bahsetmişken önemli bir güncelleme daha sunulmuştur: Kullanıcı etkileşimi gerektiren API'ler için güçlü keepalive. Kullanıcı etkileşimi gerektiren API'lerin, uzantı hizmeti çalışanları için "güçlü" keepalive'ları olur (ör. çalışanın bu görevde 5 dakikadan fazla çalışmasına izin verir):

Arka planda ses ve video kaydediliyor

Manifest V2 ile Manifest V3 arasındaki bir boşluk daha da kapatıldı: tabCapture özelliğini ve ekran dışı dokümanları kullanarak arka planda ses ve video kaydedebilirsiniz. Kullanıcı hareketinin ardından akış kimliği almak için Service Worker'da chrome.tabCapture API'yi kullanın. Bu veri, daha sonra kaydı başlatmak için ekran dışındaki bir dokümana aktarılabilir.

Nasıl çalıştığını öğrenmek için güncellenmiş tabCapture kılavuzumuza göz atın veya çalışan bir örnek için Sekme Yakalama - Kaydedici örneğine bakın.

Yeni API: schedule.getContexts()

Yeni runtime.getContexts() API'si, uzantılarınızla ilişkilendirilmiş etkin bağlamlar hakkında bilgi getirmenize olanak tanır. Örneğin, etkin bir ekran dışı doküman olup olmadığını kontrol etmek için bunu kullanabilirsiniz:

const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
    (c) => c.contextType === 'OFFSCREEN_DOCUMENT'
  );

Yeni ekran dışı neden: GEOLOCATION

geolocation, ekran dışı doküman kullanmak için başka bir geçerli neden olarak eklendi. Offscreen API'yi kullanarak uzantının coğrafi konumunu nasıl alacağınız hakkında daha fazla bilgi edinmek için coğrafi konumu kullanma kılavuzumuza göz atın.

chrome.action.setBadgeText()

action.setBadgeText, Manifest V2 ile Manifest V3 arasındaki tutarsızlığı gidermek için güncellendi. action.setBadgeText öğesine boş bir dize veya null geçirildiğinde, belirtilen sekmeye ait rozet metni silinir ve bunun yerine varsayılan olarak global rozet metni kullanılır.

action.setBadgeText({tabId: tabId, text: ''});

Özet: Manifest V3'e doğru bir adım daha

Hizmet Çalışanı için iyileştirilmiş yaşam boyu destek ve güncellenen TabCapture API ile Manifest V2 ile V3 arasındaki özellik boşluğunu kapatma hedefimiz doğrultusunda ilerleme kaydetmeye devam ettik. Mevcut durum için bilinen sorunlar sayfamıza göz atın.