javascript - Angular Service worker với thông báo đẩy FCM
Trong ứng dụng web của tôi (sử dụng Angular4), tôi đang sử dụng "@angular/service-worker": "^1.0.0-beta.16" để tạo service worker và cũng sử dụng firebase-messaging-sw.js cho thông báo đẩy FCM, angular/service-worker chỉ tạo worker-basic.min.js trong bản build production. Bây giờ, làm thế nào để sử dụng hai service worker này cùng nhau??
Câu trả lời #1
Tôi có thể phản hồi về việc sử dụng đồng thời:
sw-precache Service Worker (với mục đích lưu trữ tạm thời các tài nguyên tĩnh) được triển khai dưới dạng
service-worker.js. Xem https://coryrylan.com/blog/fast-offline-angular-apps-with-service-workersFirebase Messaging Service Worker (nhằm mục đích xử lý thông báo đẩy web) được triển khai dưới dạng
firebase-messaging-sw.js.
1. Phát triển: trong thư mục src:
- Tôi tạo một tập tin trống có tên
service-worker.js. Tập tin thực sự sẽ được tạo ra sau quá trình build nhưng tập tin này phải tồn tại (dù trống) để tránh thông báo lỗi khi phục vụ vớing serve. - Tôi tạo một tệp có tên
firebase-messaging-sw.jsvới nội dung là: (thêmhttps://trước cả haiwww, stakoverflow giới hạn số lượng liên kết của tôi!)
importScripts('www.gstatic.com/firebasejs/3.9.0/firebase-app.js'); importScripts('www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'); firebase.initializeApp({ 'messagingSenderId': 'xxxxxxxxxxxx'/thay bằng của bạn! }); const messaging=firebase.messaging(); - Tôi tạo một tệp có tên
global-sw.js. Đây là Service Worker mà bạn phải đăng ký trongindex.html(hãy hỏi tôi cách làm nếu cần). Nội dung củaglobal-sw.jslà:
importScripts('service-worker.js'); importScripts('firebase-messaging-sw.js');
2. Cập nhật .angular-cli.json: Để bao gồm những tệp đó trong thư mục dist trong tương lai của tôi (được tạo ra bằng quy trình build sản xuất), tôi cập nhật .angular-cli.json theo cách này: .angular-cli.json - trích xuất
3. Phiên bản sản xuất: Tôi chạy ng build -prod sau đó tôi tạo service-worker.js. Đối với tôi, cái này chỉ có thể được tạo sau quá trình build.
Câu trả lời #2
Chỉ cần thêm vào angular.json tệp mà bạn muốn trình biên dịch biết đến.
"assets": [
"src/favicon.ico",
"src/assets",
"src/firebase-messaging-sw.js", // add this one
"src/manifest.json" // this one also
]
Cảm ơn https://medium.com/mighty-ghost-hack/angular-8-firebase-cloud-messaging-push-notifications-cc80d9b36f82
