我在gitlab中托管一个静态网站,我希望对订阅的浏览器启用网络推送通知。我想将订户令牌存储在Firebase实时数据库中。我有以下代码,
head.html
<script src="https://www.gstatic.com/firebasejs/3.7.4/firebase.js"></script>
<script src="notification.js"></script>
manifest.json
"gcm_sender_id": "103953800507"
notification.js
var config = {
apiKey: "YOUR FIREBASE PROJECT API KEY",
authDomain: "YOUR FIREBASE PROJECT AUTH DOMAIN",
databaseURL: "YOUR FIREBASE PROJECT DATABASE URL",
projectId: "YOUR FIREBASE PORJECT ID",
storageBucket: "YOUR FIREBASE STORAGE BUCKET URL",
messagingSenderId: "YOUR FIREBASE PROJECT SENDER ID"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
messaging.requestPermission()
.then(function() {
return messaging.getToken();
})
.then(function(token) {
// send rest call to add to database
$.ajax('https://example.firebaseio.com/pushtokens/'+token+'.json', {
method: 'PUT',
data: 'true',
error: function(err) {
}
});
})
.catch(function(err) {
console.log('Permission denied');
});
更新的数据库规则
{
"rules": {
".read": "auth != null",
".write": "auth != true"
}
}
sw.js
importScripts("https://www.gstatic.com/firebasejs/3.7.4/firebase-app.js");
importScripts("https://www.gstatic.com/firebasejs/3.7.4/firebase-messaging.js");
firebase.initializeApp({
'messagingSenderId': 'YOUR FIREBASE PROJECT SENDER ID'
});
const messaging = firebase.messaging();
我设置了这些,但是在类似的控制台中收到了一条错误消息,
权限被拒绝
指向
...
.then(function(token) {
// send rest call to add to database
$.ajax('https://news-pwa-76fc9.firebaseio.com/'+token+'.json', {
method: 'PUT',
data: 'true',
error: function(err) {
}
});
})
.catch(function(err) {
**console.log('Permission denied');**
});
我的网站是this。我想通过Firebase云消息传递向订阅的用户发送通知,但是在该部分中,我只能找到ios / android选项。我将通知发送到令牌存储在Firebase实时数据库中的订阅用户的位置?现在由于某些原因,它没有存储令牌,因为我收到权限被拒绝的错误。