@angular/fire/messaging
を使用して、フォアグラウンドでFirebaseプッシュ通知を受信しているとき。メソッドは次のとおりです。
this.angularFireMessaging.messages.subscribe(
(payload) => {
console.log("new message received. ", payload);
this.currentMessage.next(payload);
})
私の完全なコードを共有しましょう: PushNotificationsService Code 私は書きました。
My Angular-cliバージョン:
Angular CLI: 8.1.3
Node: 12.4.0
OS: linux x64
Angular: 8.1.3
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.801.3
@angular-devkit/build-angular 0.801.3
@angular-devkit/build-optimizer 0.801.3
@angular-devkit/build-webpack 0.801.3
@angular-devkit/core 8.1.3
@angular-devkit/schematics 8.1.3
@angular/fire 5.3.0
@ngtools/webpack 8.1.3
@schematics/angular 8.1.3
@schematics/update 0.801.3
rxjs 6.4.0
TypeScript 3.4.5
webpack 4.35.2
私のpackage.jsonファイルを共有しましょう: package.json
フォアグラウンドでメッセージを受信すると、次のエラーが発生します:
Unhandled Promise rejection: this._next is not a function ; Zone: <root> ; Task: ServiceWorkerContainer.addEventListener:message ; Value: TypeError: "this._next is not a function"
next RxJS
messageEventListener index.esm.js:1046
step tslib.es6.js:99
verb tslib.es6.js:80
__awaiter tslib.es6.js:73
ZoneAwarePromise Angular
__awaiter tslib.es6.js:69
messageEventListener index.esm.js:1035
WindowController index.esm.js:876
Angular 5
next@http://localhost:4200/vendor.js:111323:18
./node_modules/@firebase/messaging/dist/index.esm.js/WindowController.prototype.messageEventListener/</<@http://localhost:4200/firebase-messaging.js:2418:34
step@http://localhost:4200/vendor.js:127272:23
verb/<@http://localhost:4200/vendor.js:127253:53
__awaiter/<@http://localhost:4200/vendor.js:127246:71
ZoneAwarePromise@http://localhost:4200/polyfills.js:3882:29
__awaiter@http://localhost:4200/vendor.js:127242:12
./node_modules/@firebase/messaging/dist/index.esm.js/WindowController.prototype.messageEventListener@http://localhost:4200/firebase-messaging.js:2407:71
WindowController/<@http://localhost:4200/firebase-messaging.js:2248:26
invokeTask@http://localhost:4200/polyfills.js:3397:31
runTask@http://localhost:4200/polyfills.js:3174:47
invokeTask@http://localhost:4200/polyfills.js:3471:34
invokeTask@http://localhost:4200/polyfills.js:4609:14
globalZoneAwareCallback@http://localhost:4200/polyfills.js:4635:27
どんな助けも高く評価されます! コード:GITHUB REPO LINK
GitHubコードでfirebaseから秘密鍵を更新しました
はい、私は自分のpackage.json内の「firebase」と互換性のない「@ angular/fire」のバージョン「^ 5.3.0」「^ 7.6.2」を使用していたことに気付きました。
だから、私がしたこと-
Firebase-messaging-sw.jsまたはService Workerファイルでは?
importScripts('https://www.gstatic.com/firebasejs/5.0.0/firebase-app.js'); importScripts('https://www.gstatic.com/firebasejs/5.0.0/firebase-messaging.js');
package.jsonのFirebaseと同じバージョンである必要があります
"dependencies": { ... "firebase": "^5.0.0", "@angular/fire": "^5.0.0", ... }
そしてそれは魅力のように働いています。
このバージョンで試してください:
"dependencies": {
...
"firebase": "^7.6.0",
"@angular/fire": "^5.2.3",
...
}
それは完全に動作します...
このリポジトリを確認してください: Angular Push Notification