我正在使用Firebase推送通知。当我在后台收到通知时,便得到了数据。我想将此数据保存在本地存储中,但出现此错误
TypeError:无法读取未定义的属性“ setItem”
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js');
firebase.initializeApp({
messagingSenderId: '628214501041'
});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function (payload) {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
var notificationTitle = 'Background Message Title';
var notificationOptions = {
body: 'Background Message body.',
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
self.addEventListener('push', function (event) {
var pushData = event.data.json();
try {
if(self.window.localStorage){
self.localStorage.setItem('notificationData' , JSON.stringify(pushData) ) ;
// }
}
catch (err) {
console.log('Push error happened:', err);
}
});
答案 0 :(得分:0)
您在代码中使用的self
变量不是默认定义的。
但是从您的代码中,您可能正在寻找:
if(self.window.localStorage) {
self.window.localStorage.setItem('notificationData' , JSON.stringify(pushData) ) ;
}
因此更改使用的是self.window.localStorage
,而不是第二行的self.localStorage
。
答案 1 :(得分:0)