Ana içeriğe atla
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
WordPress eklentimizi kullanıyorsanız service worker otomatik olarak eklenir. Bu kılavuzu atlayın ve WordPress kurulumuna dönü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 panosundan dosyayı indirin veya GitHub’dan indirin.Alternatif olarak, aşağıdaki tek kod satırıyla OneSignalSDKWorker.js adında bir dosya oluşturun:
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
Gerekirse dosyayı yeniden adlandırabilirsiniz (örn. onesignalsdkworker.js). Bunu yaparsanız, bu kılavuzdaki OneSignalSDKWorker.js ifadesini dosya adınızla değiştirmeniz yeterlidir.
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ş yapılmaması gerekir.Önerilen: Dosyayı hiçbir zaman sayfa sunmayacak olan özel bir alt dizinde barındırın (örn. /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ünüzde (https://yoursite.com/OneSignalSDKWorker.js) arar. Dosyayı kök dizinine yükleyebilirsiniz, ancak kök kapsamına ihtiyaç duyan diğer service worker’larla çakışabilir. Örneğin, 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 için geçiş yapılması gerekir.
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).
  1. Adım’daki importScripts satırını görmelisiniz:
Browser displaying the single importScripts line inside OneSignalSDKWorker.js
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 yolunu yapılandırın (yalnızca alt dizin)

Dosyayı site kökünüze yerleştirdiyseniz ek yapılandırma gerekmez — sonraki adıma atlayın.Dosyayı bir alt dizine yerleştirdiyseniz SDK’ya dosyanın nerede olduğunu bildirin:

Tipik site kurulumu

  1. OneSignal panosunda Ayarlar > Push & In-App > Web Ayarları’na gidin.
  2. Gelişmiş Push Ayarları altında Service worker yollarını ve dosya adlarını özelleştir seçeneğini etkinleştirin.
OneSignal dashboard fields for service worker path, filename, and registration scope
AlanAçıklamaÖrnek
Path to service worker filesOneSignalSDKWorker.js’nin barındırıldığı dizin./push/onesignal/
Service worker filename.js dosyasının adı.OneSignalSDKWorker.js
Service worker registration scopeService worker’ın kontrol ettiği URL yolu. Dosyanın barındırıldığı dizinde veya altında olmalıdır. Kullanıcıya yönelik sayfaların sunulmadığı bir yol kullanın./push/onesignal/

Özel kod kurulumu

OneSignal.init() çağrınıza serviceWorkerPath ve serviceWorkerParam parametrelerini ekleyin:
<script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
<script>
  window.OneSignalDeferred = window.OneSignalDeferred || [];
  window.OneSignalDeferred.push(async function(OneSignal) {
    await OneSignal.init({
      appId: "YOUR_APP_ID",
      serviceWorkerPath: "push/onesignal/OneSignalSDKWorker.js",
      serviceWorkerParam: { scope: "/push/onesignal/" },
    });
  });
</script>
ParametreAçıklamaÖrnek
serviceWorkerPathSite kökünden .js dosyasına göreli yol (baştaki eğik çizgi olmadan)."push/onesignal/OneSignalSDKWorker.js"
serviceWorkerParam.scopeService worker’ın kontrol ettiği URL yolu. Dosyanın barındırıldığı dizinde veya altında olmalıdır. Kullanıcıya yönelik sayfaların sunulmadığı bir yol kullanın."/push/onesignal/"
5

Service worker gereksinimlerini inceleyin

OneSignalSDKWorker.js dosyası aşağıdaki gereksinimlerin tamamını karşılamalıdır. Herhangi biri karşılanmazsa push bildirimleri çalışmaz.
GereksinimAyrıntılar
Kamuya açık erişilebilirTarayıcıda dosya URL’sine gidin ve JavaScript kodunu gördüğünüzü doğrulayın.
Doğru içerik türüSunucu Content-Type: application/javascript; charset=utf-8 döndürmelidir.
Aynı kökenDosya, sitenizle aynı etki alanında barındırılmalıdır. CDN’lere ve alt etki alanlarına izin verilmez. Bkz. MDN: Worker’ınızı kaydetme.
HTTPSService worker’lar güvenli bir bağlam gerektirir. Geliştirme sırasında localhost tek istisnadı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 (örn. 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 kurulumunuzun tek bir service worker dosyası gerektirmesi durumunda birleştirin.
Birleştirmek için, OneSignal importScripts satırını mevcut service worker dosyanıza ekleyin:
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
importScripts("https://yoursite.com/your-other-service-worker.js");
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 4. Adım: SDK yolunu yapılandırın bölümünü takip edin.

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 kapsama sahip 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:
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
4. Adım: SDK yolunu yapılandırın bölümünde açıklandığı gibi panoyu veya serviceWorkerParam’ı kullanarak kapsamı güncelleyin. Başka değişiklik gerekmez.
OneSignalSDKWorker.js bugün etki alanı kökünüzde barındırılmıyorsa, Service-Worker-Allowed başlığıyla mevcut URL’de en az bir yıl boyunca barındırmaya devam etmelisiniz. Dosyanın yanlışlıkla silinmemesi için arka uç 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:
// KEEP until YYYY-MM-DD: Required for push delivery to subscribers who have not revisited.
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
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:
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
3

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

4. Adım: SDK yolunu yapılandırın bölümünde açıklandığı gibi panoyu veya OneSignal.init()’i 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 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 alır. 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

// KEEP until YYYY-MM-DD: Required for push delivery to subscribers still on the old service worker URL.
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
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:
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
3

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

4. Adım: SDK yolunu yapılandırın 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ı takip edin. Süreç aynıdır.

Sık karşılaşılan sorunlar

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, serviceWorkerPath (özel kod) veya pano yol ayarının dizin ve dosya adı dahil gerçek dosya konumuyla eşleştiğini doğrulayın.

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 alır (en fazla 24 saat önbelleğe alınmış). Eski URL 404 döndürürse o aboneler bildirim almaz. Aboneler sitenizi tekrar ziyaret ederek doğal olarak geçiş yapana kadar 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 etki alanında barındırabilir miyim?

Hayır. Tarayıcılar, service worker’ların onları kaydeden sayfayla aynı kökenden sunulmasını gerektirir. Dosya birincil etki alanınızda olmalıdır — CDN, alt etki alanı veya farklı bir etki alanı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 kaydedilebilir. 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 service worker’ları 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ırabilirsiniz. Bunu yaparsanız OneSignal yapılandırmanızda dosya adını güncelleyin — panodaki Service worker filename alanında veya OneSignal.init() çağrınızdaki serviceWorkerPath parametresinde. Ayrıntılar için 4. Adım’a 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ürebilir; bu, tarayıcının service worker kaydını reddetmesine neden olur.