firebase-cloud-messaging - Polymer 2.0 - Firebase 消息传递错误 - 未捕获(承诺)DOMException:注册失败 - 推送服务错误
问题描述
我有一个使用 Polymer 2.0 和 firebase 的 PWA 应用程序。Firebase 消息传递错误。
Firebase v3.18.4
"polymer": "Polymer/polymer#^2.0.0",
"webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0",
"polymerfire": "firebase/polymerfire#^2.2.0",
Uncaught (in promise) DOMException: Registration failed - push service error
Promise.then (async)
refreshToken @ firebase-messaging.html:87
activateMessaging @ firebase-messaging.html:125
activate @ firebase-messaging.html:243
_bootstrapApp @ firebase-messaging.html:259
runMethodEffect @ property-effects.html:813
runEffectsForProperty @ property-effects.html:159
runEffects @ property-effects.html:125
_propertiesChanged @ property-effects.html:1703
_flushProperties @ properties-changed.html:338
_flushProperties @ property-effects.html:1551
_invalidateProperties @ property-effects.html:1523
_setProperty @ property-effects.html:1508
Object.defineProperty.set @ properties-changed.html:150
__appNameChanged @ firebase-common-behavior.html:47
runObserverEffect @ property-effects.html:214
runEffectsForProperty @ property-effects.html:159
runEffects @ property-effects.html:125
_propertiesChanged @ property-effects.html:1703
_flushProperties @ properties-changed.html:338
_flushProperties @ property-effects.html:1551
ready @ property-effects.html:1656
ready @ element-mixin.html:546
ready @ dir-mixin.html:140
ready @ legacy-element-mixin.html:198
ready @ class.html:232
ready @ class.html:232
ready @ class.html:232
_enableProperties @ properties-changed.html:321
connectedCallback @ properties-mixin.html:208
connectedCallback @ element-mixin.html:532
connectedCallback @ dir-mixin.html:150
connectedCallback @ legacy-element-mixin.html:105
_attachDom @ element-mixin.html:588
_readyClients @ element-mixin.html:561
_flushClients @ property-effects.html:1565
_propertiesChanged @ property-effects.html:1699
_flushProperties @ properties-changed.html:338
_flushProperties @ property-effects.html:1551
ready @ property-effects.html:1656
ready @ element-mixin.html:546
ready @ my-app.html:540
_enableProperties @ properties-changed.html:321
connectedCallback @ properties-mixin.html:208
connectedCallback @ element-mixin.html:532
(anonymous) @ my-app.html:849
消息在 Chrome 桌面中不起作用 - [Google Chrome 是最新版本 66.0.3359.139(官方构建)(64 位)] 以及 Chrome Android - [应用程序版本 Chrome 66.0.3359.126
使用的代码
my-app.html (PolymerElement)
<script src="bower_components/firebase/firebase-app.js"></script>
<script src="bower_components/firebase/firebase-auth.js"></script>
<script src="bower_components/firebase/firebase-database.js">
</script>
<script src="bower_components/firebase/firebase-firestore.js">
</script>
<script src="bower_components/firebase/firebase-messaging.js">
</script>
<script src="bower_components/firebase/firebase-storage.js">
</script>
<firebase-app
auth-domain="[[configFirebase.authDomain]]"
database-url="[[configFirebase.databaseURL]]"
api-key="[[configFirebase.apiKey]]"
storage-bucket="[[configFirebase.storageBucket]]"
messaging-sender-id="[[configFirebase.messagingSenderId]]">
</firebase-app>
<firebase-auth
id="auth"
user="{{user}}"
signed-in="{{signedIn}}"
status-known="{{statusKnown}}"
on-error="_handleError">
</firebase-auth>
<firebase-messaging
id="messaging"
token="{{token}}"
on-message="handleMessage"
active="{{fcmActive}}"
status-known="{{fcmStatusKnown}}">
</firebase-messaging>
<firebase-document path="/users/[[user.uid]]/token" data=".
{{tokenDocVal}}">
</firebase-document>
class MyApp extends Polymer.Element {
static get is() { return 'my-app'; }
ready() {
this.addEventListener('request-fcm-permission',
this._requestFcmPermission);
super.ready();
}
_requestFcmPermission() {
var fcm = this.$.messaging;
var self = this;
if (this.user && !fcm.active) {
fcm.requestPermission()
.then(function(){
console.log('FCM permission granted');
console.log('[[token]] ->' + self.token);
self.tokenDocVal = self.token;
})
.catch(function(e){
console.warn('FCM permission blocked', e);
})
}
}
... other html code ....
和 firebase-messaging-sw.js
importScripts('/bower_components/firebase/firebase-app.js');
importScripts('/bower_components/firebase/firebase-
messaging.js');
firebase.initializeApp({
'messagingSenderId': '<project-ms-id>'
});
var messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function(payload) {
console.log('[firebase-messaging-sw.js] Received background
message
', payload);
var notificationTitle = payload.notification.title;
var notificationOptions = {
body: payload.notification.body,
icon: '../images/fresh/android/android-launchericon-24-24.png'
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
Manifest.json includes "gcm_sender_id": "103953800507",
请求帮助以解决问题。我一直在这个问题上,不知道它为什么会发生以及如何解决它。
我还在 GITHUB 上添加了对该问题的评论 -
https://github.com/firebase/firebase-js-sdk/issues/152
要复制的源代码:复制问题的 Git 源代码 https://github.com/vinvantest/git_issue_firebase_login
解决方案
推荐阅读
- python-3.x - 给定一个间距,找到数组中最大的数字总和
- android - Android:我真的需要在 App Center 中注册才能从 HockeySDK 迁移吗?
- android - 使用 Android Firebase 一次加载多个 SingleValueEvent
- python - Groupby 和 agg 与 diff 一起使用时产生 NaN
- html - DataTables - 如何获取html表中列的百分比
- html - 子下拉菜单上的 CSS 继承
- javascript - 为什么我的 for 循环多次生成每个响应?
- mysql - mysql varchar 字段未正确导入
- python - 在给定数字列表的情况下获取计算 X 的所有组合
- python - 无法以字符串形式返回 ModelForm ChoiceField - 无法分配“'5'”:“Reclamacoes.uf”必须是“Estados”实例