Skip to main content
OneSignal service worker (OneSignalSDKWorker.js), web push bildirimleri için gerekli olan ve sunucunuzda barındırılan bir JavaScript dosyasıdır. Kullanıcı sayfanızda olmasa bile sitenizin bildirimleri alıp görüntülemesini sağlar.
Diagram showing the OneSignal service worker receiving a push event and displaying a notification

OneSignal service worker'ın push bildirimlerini işleme şekli

WordPress eklentisini kullanıyorsanız, bu kılavuzu atlayın. Eklenti, OneSignalSDKWorker.js dosyasını sdk_files dizininde barındırır ve yolu sizin için yapılandırır. Dosyayı site kök dizinine yüklemeyin veya kontrol panelinde ya da kodda özel bir yol ayarlamayın. WordPress kurulumu’na bakın. Shopify de worker’ı sizin için dağıtır. Shopify kurulumu’na bakın.

Service worker kurulumu

OneSignal push bildirimleri için özel bir OneSignalSDKWorker.js dosyası oluşturun. Sitenizde zaten bir service worker varsa ve tek bir dosya kullanmak istiyorsanız, bunun yerine Birden fazla service worker birleştirme bölümüne bakın.
1

OneSignalSDKWorker.js'yi indirin veya oluşturun

Web SDK kurulumu sırasında OneSignal kontrol panelinden dosyayı indirin veya GitHub’dan indirin.Alternatif olarak, aşağıdaki tek kod satırıyla OneSignalSDKWorker.js adında bir dosya oluşturun:
Gerekirse dosyayı yeniden adlandırabilirsiniz (örn. onesignalsdkworker.js, ossw.js). Bunu yaparsanız, bu kılavuzdaki OneSignalSDKWorker.js ifadesini dosya adınızla değiştirin.
2

Web sunucunuza yükleyin

OneSignalSDKWorker.js dosyasını sunucunuza yerleştirerek HTTPS üzerinden kamuya açık şekilde erişilebilir hale getirin. Dosyaya erişim için kimlik doğrulama veya giriş gerektirmemelidir.Önerilen: Dosyayı, hiçbir zaman sayfa sunmayan özel bir alt dizinde barındırın, örneğin /push/onesignal/. Bu, sitenizdeki diğer service worker’larla (örn. bir PWA veya AMP service worker’ı) çakışmayı önler ve URL yolunu kararlı tutar.
  • Örnek: https://yoursite.com/push/onesignal/OneSignalSDKWorker.js
Alternatif: OneSignal Web SDK, varsayılan olarak dosyayı site kök dizininizde (https://yoursite.com/OneSignalSDKWorker.js) arar. Dosyayı kök dizine yükleyebilirsiniz, ancak kök kapsamına ihtiyaç duyan diğer service worker’larla çakışabilir. Bir PWA kullanıyorsanız, OneSignalSDKWorker.js dosyasını bir alt dizine yerleştirin.
Kalıcı bir URL yolu seçin. Bir tarayıcı belirli bir URL’de service worker kaydettikten sonra, o URL’yi değiştirmek bir geçiş gerektirir.
3

Dosyanın erişilebilir olduğunu doğrulayın

Tarayıcınızda dosya URL’sine gidin (örn. https://yoursite.com/push/onesignal/OneSignalSDKWorker.js). İlk adımdaki importScripts satırını görmelisiniz:
Browser displaying the single importScripts line inside OneSignalSDKWorker.js

Tarayıcıda beklenen service worker dosyası içeriği

404 hatası, boş sayfa veya giriş istemi görüyorsanız, dosya doğru şekilde yüklenmemiş veya kimlik doğrulamanın arkasındadır.
4

SDK'ya dosyayı nerede bulacağını söyleyin

Web SDK, ona farklı bir konum söylemediğiniz sürece OneSignalSDKWorker.js dosyasını site kök dizininizde (https://yoursite.com/OneSignalSDKWorker.js) arar. Bunu nasıl söyleyeceğiniz entegrasyon türünüze bağlıdır.Dosyayı site kök dizininize yerleştirdiyseniz, ek yapılandırma gerekmez. Bir sonraki adıma geçin.Dosyayı bir alt dizine yerleştirdiyseniz, yolu ayarlamanız gerekir. Typical Site bunu kontrol panelinde ayarlar. Özel Kod bunu OneSignal.init() içinde ayarlar. İkisini karıştırmak çalışmaz: kontrol paneli yol alanları Özel Kod için geçerli değildir ve serviceWorkerPath Typical Site için geçerli değildir.

Typical Site

Yolu OneSignal kontrol panelinde ayarlayın. Kodda serviceWorkerPath geçirmeyin.
  1. Settings > Push & In-App > Web’e gidin.
  2. Advanced Push Settings altında Customize service worker paths and filenames seçeneğini etkinleştirin.
OneSignal dashboard fields for service worker path, filename, and registration scope

Kontrol panelinde service worker yolu yapılandırması

Typical Site prosedürü için Web SDK kurulumu’na bakın.

Özel Kod

OneSignal.init() çağrınıza serviceWorkerPath ve serviceWorkerParam parametrelerini geçirin. Özel Kod, kontrol panelindeki Customize service worker paths and filenames alanlarını kullanmaz.
Dosya site kök dizininde değilse ve bu seçenekleri atlarsanız, SDK yine de https://yoursite.com/OneSignalSDKWorker.js adresini getirir ve kayıt başarısız olur.Bu seçenekleri tam init kod parçanıza eklemek için Özel Kod kurulumu’na bakın.
5

Service worker gereksinimlerini inceleyin

Push bildirimlerinin çalışması için OneSignalSDKWorker.js dosyası aşağıdaki gereksinimlerin tamamını karşılamalıdır.
Service worker kurulumu tamamlandı.

Web SDK kurulumu

Sonraki adımlar için Web SDK kurulum kılavuzuna devam edin.

Birden fazla service worker birleştirme

Sitenizdeki her service worker dosyası bir kapsama — hangi sayfaları kontrol ettiğini belirleyen bir URL yoluna — kaydedilir. Belirli bir kapsamda yalnızca bir service worker etkin olabilir. Halihazırda bir service worker’ınız varsa (örneğin, bir PWA veya önbellek worker’ı) ve OneSignal’ın aynı dosyayı paylaşmasını istiyorsanız, bunları birleştirebilirsiniz.
Service worker’ları ayrı kapsamlara sahip ayrı dosyalarda tutmak bakımı daha basittir ve çakışmaları önler. Yalnızca kurulumunuz tek bir service worker dosyası gerektiriyorsa birleştirin.
Birleştirmek için, OneSignal importScripts satırını mevcut service worker dosyanıza ekleyin:
Birleştirdikten sonra, mevcut service worker dosyanızı gösterecek şekilde OneSignal yapılandırmasını güncelleyin. Birleştirilmiş dosyanızın yolunu ve dosya adını kullanarak SDK’ya dosyayı nerede bulacağını söyleyin bölümünü izleyin.

Geçiş kılavuzu

Bu bölüm, service worker dosya yolunu, dosya adını veya kapsamı değiştirmesi gereken mevcut OneSignal müşterileri içindir. Mevcut yapılandırmanızı değiştirmek için özel bir nedeniniz olmadıkça bu adımları uygulamayın.
Geçiş nedenleri:
  • Kök kapsamlı OneSignal service worker, bir Progressive Web App (PWA) ile çakışıyor
  • Service worker, AMP veya başka bir önbellek service worker’ı ile çakışıyor
  • Güvenlik politikaları kök kapsamda üçüncü taraf service worker koduna izin vermiyor
Seçenek 1: Yalnızca kapsamı değiştirin (önerilen)Yalnızca kapsamı değiştirmek en güvenli geçiştir. Dosya mevcut URL’sinde kalır, bu nedenle mevcut aboneler kesintisiz bildirim almaya devam eder.Dosyanız yalnızca OneSignal kodu içeriyorsaOneSignalSDKWorker.js dosyasının yalnızca şunu içerdiğini doğrulayın:
SDK’ya dosyayı nerede bulacağını söyleyin bölümünde açıklandığı gibi kontrol panelini (Typical Site) veya serviceWorkerParam’ı (Özel Kod) kullanarak kapsamı güncelleyin. Başka değişiklik gerekmez.
OneSignalSDKWorker.js bugün alan adı kök dizininizde barındırılmıyorsa, Service-Worker-Allowed başlığıyla mevcut URL’sinde en az bir yıl boyunca barındırmaya devam etmelisiniz. Dosyanın yanlışlıkla silinmemesi için backend kodunuza veya iç belgelerinize bir yorum ekleyin.
Dosyanız OneSignal + başka kod içeriyorsaService worker’ınız ek importScripts çağrıları içerebilir (örn. Birden fazla service worker birleştirme kılavuzunu takip etmiş olmanız durumunda). Mevcut kurulumunuz hâlâ çalışıyorsa, olduğu gibi bırakın — birleştirilmiş bir service worker’ı ayırmak iki aşamalı bir dağıtım gerektirir.Ayırmanız gerekiyorsa:
1

Mevcut dosyaya bir saklama yorumu ekleyin

Mevcut service worker’ınızdaki OneSignal importScripts satırının üzerine ekleyin:
Tarihi en az bir yıl sonrası olarak ayarlayın.
2

Yeni bir özel OneSignal service worker oluşturun

Bir alt dizinde (örn. /push/onesignal/) yalnızca şunu içeren OneSignalSDKWorker.js dosyasını oluşturun:
3

OneSignal yapılandırmasını güncelleyin

SDK’ya dosyayı nerede bulacağını söyleyin bölümünde açıklandığı gibi kontrol panelini (Typical Site) veya OneSignal.init()’i (Özel Kod) kullanarak yeni yolu ve kapsamı ayarlayın.
4

Abonelerin geçişini bekleyin

Yeni ve geri dönen ziyaretçiler otomatik olarak yeni service worker’a kaydolur. Mevcut abonelerin çoğunluğunun sitenizi tekrar ziyaret etmesi için en az bir yıl bekleyin.
5

Temizlik

Seçtiğiniz saklama süresinden daha eski etkin olmayan kullanıcıları silin, ardından orijinal service worker dosyasından OneSignal importScripts satırını kaldırın.
Seçenek 2: Dosya adını veya dosya konumunu değiştirinDosya adını veya dizini değiştirmek daha karmaşıktır çünkü tarayıcılar service worker’ı başlangıçta kaydedildiği URL’den getirir. Sitenizi tekrar ziyaret etmemiş aboneler hâlâ eski URL’yi referans alır.
Orijinal dosyayı eski URL’sinde en az bir yıl boyunca barındırmaya devam etmelisiniz. Kaldırılması, tarayıcı service worker’ı güncellemeye çalıştığında 404 hatalarına neden olur ve etkilenen aboneler bildirim almayı bırakır.
Dosyanız yalnızca OneSignal kodu içeriyorsa
1

Eski dosyaya bir saklama yorumu ekleyin

2

Yeni konumda yeni dosyayı oluşturun

OneSignalSDKWorker.js’yi (veya seçtiğiniz dosya adını) yeni dizine şunu içerecek şekilde yerleştirin:
3

OneSignal yapılandırmasını güncelleyin

SDK’ya dosyayı nerede bulacağını söyleyin bölümünde açıklandığı gibi yeni yolu, dosya adını ve kapsamı ayarlayın.
4

Abonelerin geçişini bekleyin

Yeni ve geri dönen ziyaretçiler otomatik olarak yeni dosyaya kaydolur. En az bir yıl bekleyin.
5

Temizlik

Saklama sürenizden daha eski etkin olmayan kullanıcıları silin, ardından eski dosyayı kaldırın.
Dosyanız OneSignal + başka kod içeriyorsaYukarıdaki Seçenek 1: Yalnızca kapsamı değiştirin adımlarını izleyin. Süreç aynıdır.

SSS

Bu kılavuz WordPress için geçerli mi?

Hayır. WordPress eklentisi, OneSignalSDKWorker.js dosyasını sdk_files dizininde barındırır ve kaydeder. Site kök dizinine bir worker yüklemeyin veya kodda serviceWorkerPath ayarlamayın. WordPress kurulumu’na bakın.

Typical Site ve Özel Kod için service worker yolunu nasıl ayarlarım?

Web SDK, özel bir yol ayarlamadığınız sürece OneSignalSDKWorker.js dosyasını site kök dizininizde arar. Typical Site bu yolu kontrol panelinde Customize service worker paths and filenames altında ayarlar. Özel Kod bunu OneSignal.init() içindeki serviceWorkerPath ve serviceWorkerParam ile kodda ayarlar. Kontrol paneli yol alanları Özel Kod için geçerli değildir. SDK’ya dosyayı nerede bulacağını söyleyin’e bakın.

Service worker’ım neden 404 döndürüyor?

Dosya, SDK’nın beklediği URL’de değil. Erişilebilir olduğunu doğrulamak için tarayıcınızda tam dosya URL’sine gidin. Dosyayı bir alt dizine yerleştirdiyseniz, yapılandırılan yol, dizin ve dosya adı dahil gerçek dosya konumuyla eşleşmelidir. Typical Site: kontrol paneli yol ayarlarını kontrol edin. Özel Kod: OneSignal.init() içindeki serviceWorkerPath’i kontrol edin.

Service worker dosyasını taşıdıktan sonra bildirimler neden gösterilmiyor?

Mevcut aboneler hâlâ eski service worker URL’sini referans alıyor. Tarayıcı, her push geldiğinde kayıtlı URL’yi getirir (en fazla 24 saat önbelleğe alınır). Eski URL 404 döndürürse, o aboneler bildirim almaz. Aboneler sitenizi tekrar ziyaret ederek doğal olarak geçiş yaparken, eski dosyayı en az bir yıl boyunca barındırmaya devam edin. Geçiş kılavuzu ve Web push bildirimleri gösterilmiyor kılavuzuna bakın.

Service worker’ı bir CDN veya alt alan adında barındırabilir miyim?

Hayır. Tarayıcılar, service worker’ların onları kaydeden sayfayla aynı kaynaktan sunulmasını gerektirir. Dosya birincil alan adınızda olmalıdır — CDN, alt alan adı veya farklı bir alan adında olamaz.

PWA’ım neden OneSignal service worker ile çakışıyor?

Her ikisi de muhtemelen kök kapsamda (/) kayıtlıdır ve belirli bir kapsamda yalnızca bir service worker etkin olabilir. PWA’nızın kök kapsamın kontrolünü koruyabilmesi için OneSignal service worker’ı bir alt dizin kapsamına (örn. /push/onesignal/) taşıyın ya da Birden fazla service worker birleştirme bölümünde açıklandığı gibi birleştirin.

OneSignalSDKWorker.js dosyasını yeniden adlandırabilir miyim?

Evet. Sunucunuz belirli bir adlandırma kuralı gerektiriyorsa (örn. tümü küçük harf), dosyayı onesignalsdkworker.js gibi bir adla yeniden adlandırın. Typical Site: kontrol panelindeki Service worker filename alanını güncelleyin. Özel Kod: OneSignal.init() çağrınızdaki serviceWorkerPath’i güncelleyin. SDK’ya dosyayı nerede bulacağını söyleyin’e bakın.

Sunucum service worker dosyası için hangi içerik türünü döndürmelidir?

Sunucu Content-Type: application/javascript; charset=utf-8 döndürmelidir. Bazı sunucu veya CDN yapılandırmaları yanlış bir MIME türü döndürür; bu, tarayıcının service worker kaydını reddetmesine neden olur.