Böylece, çevrimdışı çalışmasını sağlayan bir hizmet çalışanıyla birlikte progresif web uygulaması elde etmiş olursunuz. Mükemmel! Ayrıca web uygulamanız için mevcut bir Google Analytics kurulumunuz var ve internete bağlı değilken gerçekleşen kullanımdan elde edilen analizleri kaçırmamak istiyorsunuz. Ancak çevrimdışıyken Google Analytics'e veri göndermeye çalışırsanız bu istekler başarısız olur ve veriler kaybolur.
Çözümün hizmet çalışanları olduğunu öğrendiğinizde şaşırmayacaksınız. Daha açık belirtmek gerekirse, Google Analytics isteklerini (IndexedDB
kullanarak) depolamak ve ağ mevcut olduğunda daha sonra yeniden denemek için hizmet işleyicinize kod ekler. Bu mantığı işlemek için açık kaynak Google I/O web uygulaması kapsamında kod paylaştık. Ancak bunun faydalı bir kalıp olduğunu ve kodun kopyalanıp yapıştırılmasının hassas olabileceğini fark ettik.
Bugün, hizmet işleyicinizde çevrimdışı Google Analytics isteklerini işlemek için ihtiyaç duyduğunuz her şeyin bir npm paketinde toplandığını duyurmaktan memnuniyet duyuyoruz: npm install --save-dev sw-offline-google-analytics
sw-offline-google-analytics kullanma
Mevcut servis çalışanı kodunuza şunları ekleyin:
// This code should live inside your service worker JavaScript, ideally
// before any other 'fetch' event handlers are defined:
// First, import the library into the service worker global scope:
importScripts('path/to/offline-google-analytics-import.js');
// Then, call goog.offlineGoogleAnalytics.initialize():
// See https://github.com/GoogleChrome/workbox/tree/main/packages/workbox-google-analytics
goog.offlineGoogleAnalytics.initialize();
// At this point, implement any other service worker caching strategies
// appropriate for your web app.
Hepsi bu kadar.
Neler oluyor?
sw-offline-google-analytics
, hizmet çalışanınızda Google Analytics alanına gönderilen isteklere yanıt veren yeni bir fetch
etkinlik işleyicisi oluşturur. (Kitaplık, Google Analytics dışındaki istekleri yoksayar. Böylece, hizmet çalışanınızın diğer fetch
etkinlik işleyicileri bu kaynaklar için uygun stratejiler uygulama şansı bulur.) İlk olarak isteği ağa karşı yerine getirmeyi dener. Kullanıcı online ise işlem normal şekilde devam eder.
Ağ isteği başarısız olursa kitaplık, istekle ilgili bilgileri ve isteğin ilk ne zaman gönderildiğini belirten bir zaman damgasını IndexedDB
adresinde otomatik olarak depolar. Servis çalışanınız her başlattığında kitaplık, sıradaki istekleri kontrol eder ve bazı ek Google Analytics parametreleriyle birlikte yeniden göndermeye çalışır:
- Orijinal zamanın doğru şekilde ilişkilendirilmesini sağlamak için, istek ilk kez denendikten sonra geçen süreye ayarlanan bir
qt
parametresi. - Yapılandırma nesnesinin
parameterOverrides
mülkünde sağlanan tüm ek parametreler ve değerlergoog.offlineGoogleAnalytics.initialize()
'e iletilir. Örneğin, hizmet çalışanından yeniden gönderilen istekleri hemen gönderilen isteklerden ayırt etmek için bir özel boyut ekleyebilirsiniz.
İsteği yeniden gönderme işlemi başarılı olursa harika. İstek IndexedDB'den kaldırılır. Yeniden deneme başarısız olursa ve ilk istek 24 saatten kısa bir süre önce gönderildiyse hizmet çalışanı bir sonraki başlatıldığında yeniden denemek için IndexedDB
içinde tutulur. Dört saatten eski Google Analytics isabetlerinin işlenmesinin garanti edilmediğini unutmayın. Ancak "her ihtimale karşı" biraz daha eski isabetleri yeniden göndermenizde bir sakınca yoktur.
sw-offline-google-analytics
, Google Analytics'i başlatmak için gereken gerçek analytics.js
JavaScript kodu için "önce ağ, yedek olarak önbelleğe alma" stratejisini de implements.
Daha fazlası gelecek.
sw-offline-google-analytics
, mevcut hizmet çalışanı uygulamalarında hazır geliştirmeler sunmak için tasarlanmış bir kitaplık koleksiyonu olan daha büyük sw-helpers
projesinin bir parçasıdır.
Bu projenin bir parçası da, bir hizmet çalışanının içindeki mevcut bir AppCache manifest dosyasında tanımlanan önbelleğe alma stratejilerini uygulayan sw-appcache-behavior
kitaplığıdır. Bu araç, en azından başlangıçta tutarlı bir önbelleğe alma stratejisi uygulayarak AppCache'ten hizmet işçilerine geçiş yapmanıza yardımcı olmak için tasarlanmıştır.
Kitaplıkla ilgili başka fikirleriniz varsa lütfen bizimle paylaşın. Lütfen sorun izleyici üzerinden istekte bulunun.