Chrome 116'da Uzantılar için Yenilikler

Chrome 116 artık beta sürümünde kullanıma sunuldu. Bu sürüm, Chrome uzantısı geliştiricileri için birçok heyecan verici güncelleme içeriyor. Yeniliklere hızlıca göz atalım.

Yan paneli programatik olarak açma

Yan panel, Chrome uzantılarında en çok istenen özelliklerden biri oldu ve Chrome 114 sürümünden beri Chrome'da kullanılabiliyor. Yan Panel API'yi kullanıma sunduktan sonra aldığımız ilk geri bildirimlerden biri, geliştiricilerin yan paneli programatik olarak açma yöntemi istedikleriydi. chrome.sidePanel.open artık beta sürümünde. Bu işlevi, kullanıcı etkileşimine (ör. içerik menüsü tıklaması) 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 çok önemlidir. Chrome 116, tüm WebSocket etkinlikleri 30 saniyelik hizmet çalışanı boşta kalma zamanlayıcısını sıfırlayacağından hizmet çalışanlarında WebSocket desteğini daha da iyileştirir. Bu, WebSocket'iniz etkin olduğu sürece hizmet çalışanının etkin kalacağı anlamına gelir.

Bir sonraki mesajın gelmesi 30 saniyeden uzun sürse bile sunucunuzdan mesaj beklerken servis çalışanınızın etkin kalmasını sağlayan bir keepalive mekanizması uygulamak için bunu 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 bilgi için yeni WebSocket kılavuzumuza ve örneğimize göz atın.

Hizmet İşleyiciler için güçlü keepalive

Hizmet çalışanı yaşam döngüsünden bahsetmişken, kullanıcı etkileşimi gerektiren API'ler için güçlü keepalive özelliğini de kullanıma sunduk. Kullanıcı etkileşimi gerektiren API'lerde, uzantı hizmet çalışanları için "güçlü" keepalive'ler bulunur (ör. çalışanın bu görevi 5 dakikadan uzun süre yapmasına izin verilir):

Arka planda ses ve video kaydı yapma

Manifest V2 ile Manifest V3 arasındaki bir diğer boşluk da kapatıldı: tabCapture ve ekran dışı dokümanları kullanarak arka planda ses ve video kaydedebilirsiniz. Kullanıcı hareketinden sonra bir yayın kimliği almak için hizmet işçisinde chrome.tabCapture API'yi kullanın. Bu, kaydı başlatmak için bir ekran dışı dokümana aktarılabilir.

Bu özelliğin nasıl çalıştığını öğrenmek için güncellenmiş tabCapture kılavuzumuza göz atın veya çalışan bir örnek görmek için Tab Capture - Recorder örneğine bakın.

Yeni API: runtime.getContexts()

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

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

Yeni ekran dışı nedeni: Coğrafi Konum

geolocation, ekran dışı doküman kullanmanın geçerli bir nedeni 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 konulu 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. null parametresine boş bir dize veya action.setBadgeText iletilmesi, belirtilen sekmenin rozet metnini temizler ve bunun yerine varsayılan olarak global rozet metnini kullanır.

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

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

İyileştirilmiş Service Worker yaşam boyu desteği ve güncellenmiş TabCapture API ile Manifest V2 ve V3 arasındaki özellik boşluğunu kapatma hedefimizde ilerlemeye devam ettik. Mevcut durum için bilinen sorunlar sayfamıza göz atın.