[英]Firebase push notification in angular 7 failed to register serviceworker
尝试实现Firebase推送通知时收到此错误。
“ messaging.service.ts:54无法获得通知的权限。FirebaseError:消息传递:我们无法注册默认服务工作者。无法注册ServiceWorker:提取脚本时收到错误的HTTP响应代码(404)。 (消息/服务工作者注册失败)。”
这是我的messaging.service.ts
import { Injectable } from '@angular/core';
import { AngularFireDatabase } from '@angular/fire/database';
import { AngularFireAuth } from '@angular/fire/auth';
import { AngularFireMessaging } from '@angular/fire/messaging';
import { mergeMapTo } from 'rxjs/operators';
import { take } from 'rxjs/operators';
import { BehaviorSubject } from 'rxjs'
@Injectable()
export class MessagingService {
currentMessage = new BehaviorSubject(null);
constructor(
private angularFireDB: AngularFireDatabase,
private angularFireAuth: AngularFireAuth,
private angularFireMessaging: AngularFireMessaging) {
console.log("firebase.....");
this.angularFireMessaging.messaging.subscribe(
(_messaging) => {
console.log(_messaging,"messegiung");
_messaging.onMessage = _messaging.onMessage.bind(_messaging);
console.log(_messaging,"messegiung");
_messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
console.log(_messaging,"messegiung");
}
)
}
/**
* update token in firebase database
*
* @param userId userId as a key
* @param token token as a value
*/
updateToken(userId, token) {
// we can change this function to request our backend service
this.angularFireAuth.authState.pipe(take(1)).subscribe(
() => {
const data = {};
data[userId] = token
this.angularFireDB.object('fcmTokens/').update(data)
})
}
/**
* request permission for notification from firebase cloud messaging
*
* @param userId userId
*/
requestPermission(userId) {
console.log(userId,"userId");
this.angularFireMessaging.requestToken.subscribe(
(token) => {
console.log(userId,"userId");
console.log(token);
this.updateToken(userId, token);
},
(err) => {
console.error('Unable to get permission to notify.', err);
}
);
}
/**
* hook method when new notification received in foreground
*/
receiveMessage() {
this.angularFireMessaging.messages.subscribe(
(payload) => {
console.log("new message received. ", payload);
this.currentMessage.next(payload);
})
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.