Ana içeriğe atla

Genel bakış

Bu kılavuz, Web Push Bildirimleri için OneSignal Service Worker’ın nasıl yapılandırılacağını kapsar.
WordPress eklentimizi kullanıyorsanız, OneSignal Service Worker dosyası otomatik olarak eklenir ve bu dosyaları sitenize manuel olarak eklememeli siniz. Daha fazla bilgi için WordPress kurulum sayfasına dönün.

Service worker’lar nedir?

Service Worker, ana sayfadan ayrı bir thread’de çalışan bir arka plan komut dosyasıdır. Push bildirimleri, çevrimdışı önbelleğe alma ve arka plan senkronizasyonu gibi özellikleri etkinleştirir. Siteniz onu kaydettiğinde yüklenir ve her zaman çalışmasa da, kullanıcı uzaklaştıktan sonra bile olayları (push dahil) işlemek için uyandırılabilir.

Service worker'lar nasıl çalışır


OneSignal’in service worker’ını nasıl entegre edilir

Web SDK Kurulum kılavuzumuzu takip ederken, OneSignalSDKWorker.js service worker dosyası size sağlanacaktır.

.js dosyasını indirin

OneSignalSDKWorker.js dosyasını OneSignal dashboard’undan indirin veya OneSignal Service Worker Dosyasını buradan indirin.

.js dosyasını sunucunuza yükleyin

SDK’mız varsayılan olarak sitenizin kökünde OneSignalSDKWorker.js dosyasını arar, örneğin: https://yoursite.com/OneSignalSDKWorker.js Bu dosyayı sitenizin kök dizinine yükleyebilir ve sonraki adımlar için Web push kurulum kılavuzuna dönebilirsiniz. Ancak, bu OneSignalSDKWorker.js dosyasını, kullanıcıları asla bağlantı vermeyeceğiniz bir alt dizin yoluna yerleştirmeniz önerilir, örneğin: https://yoursite.com/push/onesignal/OneSignalSDKWorker.js. Bu dosyayı köke yerleştirebilirsiniz, ancak şimdi sahip olduğunuz veya gelecekte ekleyebileceğiniz diğer Service Worker’larla çakışabilir. Ayrıca, dosya asla değişmeyecek kalıcı bir konum yoluna konulmalıdır. Bir Service Worker tarayıcıya kaydedildiğinde, değiştirmek zordur.

Service Worker yapılandırması

OneSignal service worker dosyası OneSignalSDKWorker.js şu gereksinimleri karşılamalıdır:
  • Dosya herkese açık olarak erişilebilir olmalıdır, yani tarayıcıda dosyaya gidebilmeli ve kodu görebilmelisiniz.
  • Dosya application/javascript; charset=utf-8 content-type ile sunulmalıdır.
  • Dosya aynı site origin’ine (site domain’iniz) işaret etmelidir. Farklı bir origin’deki bir Service Worker’a işaret etmeye izin verilmez. CDN veya subdomain yok.

Service worker’ın doğru şekilde kurulduğunu onaylayın

Tarayıcınızda service worker’ı ziyaret edin. Service worker için kodu görmelisiniz: importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");

Service worker kodu örneği

OneSignalSDKWorker.js dosyasını sitenizin köküne yüklediyseniz (https://yoursite.com/OneSignalSDKWorker.js adresinde erişilebilir) başka bir işlem gerekmez. Ancak, https://yoursite.com/push/onesignal/OneSignalSDKWorker.js gibi bir alt dizine koyduysanız, kayıt kapsamını aşağıdaki gibi ayarlamanız gerekecektir:
  • Tipik site kurulumu
  • Özel Kod Kurulumu
OneSignal dashboard’unda, Uygulamanızın Settings > Push & In-App > Web Settings bölümüne gidinAdvanced Push Settings altında, Customize service workers paths and filenames anahtarını açın ve verilerinizi girin.

Tipik site kurulumu için service worker yapılandırması

  • Path to service worker files, OneSignal Service Worker dosyasının nerede mevcut olacağına ilişkin dizindir. Service Worker şu adreste mevcutsa: https://yoursite.com/push/onesignal/OneSignalSDKWorker.js o zaman yol: /push/onesignal/
  • Main and Updater service worker filenames, Service worker dosyasının adıdır. OneSignalSDKWorker.js olmalıdır ancak değiştirdiyseniz, .js dosya uzantısını kullandığınızdan emin olun. Örneğin, sunucunuz dosyaları küçük harf yapmaya zorluyorsa, dosya adını onesignalsdkworker.js olarak ayarlayabilirsiniz
  • Service worker registration scope, bu dosyanın üzerinde çalışabileceği sayfalardır. Bu, kullanıcıları asla bağlantı vermeyeceğiniz ve şimdi veya gelecekte hiçbir zaman sayfa barındırmayacağınız bir yol olmalıdır. Yaygın bir yol örneği: /push/onesignal/ ve kapsam aynı yol veya daha derin olabilir, örneğin: /push/onesignal/js/
Service worker kurulumu tamamlandı!Sonraki adımlar için Web SDK Kurulum kılavuzuna dönün.

OneSignal Service Worker taşıma kılavuzu

Bu bölüm yalnızca OneSignal’i zaten kullanan, büyük miktarda web push abonesi olan ve OneSignal Service Worker ayarlarını değiştirmek isteyen müşteriler içindir. Bunu yapmak için özel bir nedeniniz yoksa önerilmez.
Bu kılavuz yalnızca şu anda web sitelerinde OneSignal kullanan ve OneSignalSDKWorker.js dosyasını farklı bir yola veya kapsama taşımak isteyen müşteriler içindir.
OneSignal’in Service Worker’ı, siteniz için aşağıdaki sorunları yaratabilecek bir kök kapsama varsayılandır:
  • PWA ile çakışma
  • AMP kurulumu ile çakışma
  • Önbelleğe alma Service Worker’ınızla veya kök kapsam gerektiren diğer herhangi bir Service Worker özelliğiyle çakışma
  • Sitenizin, kullanıcılarınızın ziyaret edeceği bir sayfayı kontrol eden kapsamda üçüncü taraf Service Worker kodunun çalışmasına izin vermeyen güvenlik gereksinimleri vardır.
Bunlardan biri veya daha fazlası sizin için geçerliyse lütfen bu kılavuzu izleyin.

OneSignal Service Worker Kapsamı Seçme

Hiçbir zaman bir kullanıcıyı bağlamayacağınız, ancak ne yaptığını hala net olan bir Service Worker kapsam yolu seçmeniz önerilir. Örnek: /push/onesignal/. Bu şekilde PWA’nız, AMP’niz veya diğer herhangi bir önbelleğe alma ServiceWorker’ı, bir kullanıcının doğru çalışması için görüntülediği sayfayı kontrol edebilir.Birden fazla service worker’ı aynı konum yoluna koymak sorun değil, ancak benzersiz kapsam yolu olmalıdır.
  • Seçenek 1: Kapsamı değiştir
  • Seçenek 2: Dosya adını veya konumu değiştir

OneSignal Service Worker Kapsamını güvenli bir şekilde değiştir

Mümkünse yalnızca kapsamı değiştirmeniz önerilir, Service Worker’ın dosya adını veya konum yolunu değiştirmenin ek hususları vardır. Aboneleri kaybetmemeniz veya bildirim görüntüleme sorunlarıyla karşılaşmamanız için hem hangi senaryonun sizin için geçerli olduğunun ayrıntılarına hem de her adıma yakından dikkat edin

Kurulum Tipi 1. Varsayılan OneSignal Kurulumu - Kök kapsam ”/” VE varsayılan OneSignalSDKWorker.js İçeriği

OneSignalSDKWorker.js dosyanızın içeriğinin OneSignal Service Worker Dosyasını buradan indirin’de bulunanla aynı olduğunu onaylayın. (İçinde ihtiyacınız olabilecek diğer OneSignal olmayan kodlar olmadan)Bu durumda, başka bir Service Worker’ı kök kapsama yerleştirmek için yer açmak üzere OneSignal kapsamını seçtiğiniz herhangi bir şeye değiştirebilirsiniz. Yukarıdaki Service Worker Entegrasyonunuzu Özelleştir’e bakın.
OneSignalSDKWorker.js dosyanız bugün domain’inizin kökünde barındırılmıyorsa, örneğin şu şekilde barındırmıyorsanız: https://mysite.com/OneSignalSDKWorker.js o zaman uzun bir süre (1 yıl veya daha fazla önerilir) Service-Worker-Allowed başlığıyla barındırmaya DEVAM ETMELİSİNİZ.Mümkünse, kazara kaldırılmamasını sağlamak için backend kodunuza veya dahili dokümantasyonunuza bir yorum eklemenizi öneririz.

Kurulum Tipi 2. Nadir - Kök kapsam ”/” VE OneSignalSDKWorker.js (veya yapılandırdığınız dosya adı) OneSignal + diğer kod veya importScripts içerir

Bu daha az yaygındır ancak “Birden Fazla Service Worker Entegre Etme” OneSignal kılavuzunu takip ederek bunu zaten yapmış olabilirsiniz. Bu kurulum hala tüm gereksinimlerinizi karşılıyorsa, push olaylarını işleyen birleştirilmiş ServiceWorker dosyasını ayırmak için gereken karmaşık ve iki aşamalı kullanıma sunma nedeniyle kurulumunuzu olduğu gibi tutmanızı şiddetle öneririz.
Bu bölüm, mevcut Service Worker’ınızda OneSignal VE aşağıdaki gibi başka bir özel kod veya importScript varsa geçerlidir.
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
//Ve aynı dosyada diğer site özel kodu örneği.
importScripts("https://site.com/my-other-service-worker.js");
1

Mevcut service worker kodunuzu tutun.

Mevcut ServiceWorker dosyanıza bu satırın üstüne importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js"); uzun bir süre (bir yıl veya daha fazla önerilir, siteyi asla yeniden ziyaret etmeyen kullanıcılara ne kadar süre push göndermeye devam etmek istediğinize bağlıdır) tutmak için bir kod yorumu ekleyin. Örnek: // YYYY-AA-GG'ye kadar TUTUN: Yeni OneSignal özel ServiceWorker'a taşımak için yeniden ziyaret etmemiş kullanıcılar için push'ların doğru çalışması için gerekli.
2

Yeni bir service worker dosyası oluşturun

Aşağıdaki tek kod satırıyla /push/onesignal/ gibi farklı bir dizin altında yeni bir OneSignalSDKWorker.js oluşturun importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
3

Kapsamınızı, dosya adınızı ve yolunuzu değiştirmek için "Service Worker Entegrasyonunuzu Özelleştirme" kılavuzunu izleyin.

4

Bu noktada yeni ve geri dönen kullanıcılar otomatik olarak yeni OneSignal ServiceWorker'a abone olacaktır.

5

1. adımda belirtildiği gibi süreyi (yaklaşık bir yıl) bekleyin.

6

Seçtiğiniz zaman çizelgesinden daha eski kullanıcıları silmek için OneSignal - "Delete Users" kılavuzunu izleyin.

7

Orijinal service worker'dan yorumu kaldırın

Son olarak, orijinal kök ServiceWorker’ınızdan yorum içeren importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js"); satırını kaldırın.

OneSignal ServiceWorker kapsamını taşıma - SSS

Adı veya konum yolunu değiştirirsem neden orijinal ServiceWorker dosya URL’sini barındırmaya devam etmeliyim?
Bu, yeni dosya adının alınması için sitenizi yeniden ziyaret etmemiş kullanıcılar için gereklidir. Push gönderdiğinizde (önbellek sona erme zamanı geçmişse, maksimum önbellek 24 saattir) orijinal ServiceWorker dosyası tarayıcı tarafından alınacaktır. Orijinal ServiceWorker dosyası mevcut değilse, bir push gönderirken barındırma sağlayıcınızdan döndürülen 404 hatalarında bir artış göreceksiniz. Bu, sunucunuza daha fazla istek anlamına gelebilir. Bu aynı zamanda bu kullanıcıların yeni OneSignal özelliklerini ve düzeltmelerini almadığı anlamına gelir.