В настоящее время я пытаюсь сделать веб-push (Push-уведомления) NOT APP только в браузере
Я создал сгенерированный токен токена приложения
Затем сохраните этот токен в db. Теперь возникают проблемы, когда я очищаю кеш от изменений токенов. Как я могу контролировать, заменяя новый токен на старый (заменить только тот конкретный токен)?
Вот текущий код app.js
var config = {
apiKey: "xxxxxxxx",
authDomain: "*********",
databaseURL: "*********",
projectId: "t********",
storageBucket: "******",
messagingSenderId: "******"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
messaging.requestPermission()
.then(function(){
console.log("have permission");
alert("have permission");
return messaging.getToken();
})
.then(function(token){
console.log(token);
var newToken = token;
alert("newToken");
})
.catch(function(err){
console.log("error Occurred");
alert("error occurred");
})
messaging.onMessage(function(payload){
console.log("onMessage",payload);
});
Как указано в документации по обновлению токенов:
onTokenRefresh
вызовonTokenRefresh
срабатывает всякий раз, когда генерируется новый токен, поэтому вызовgetToken
в его контексте гарантирует, что вы получаете доступ к текущему доступному токену регистрации.// Callback fired if Instance ID token is updated. messaging.onTokenRefresh(function() { messaging.getToken() .then(function(refreshedToken) { console.log('Token refreshed.'); // Indicate that the new Instance ID token has not yet been sent to the // app server. setTokenSentToServer(false); // Send Instance ID token to app server. sendTokenToServer(refreshedToken); // ... }) .catch(function(err) { console.log('Unable to retrieve refreshed token ', err); showToken('Unable to retrieve refreshed token ', err); }); });
Обходной путь - использовать локальное хранилище для сохранения первого токена.
Notification.requestPermission().then(function(permission) {
if (permission === 'granted') {
console.log('Notification permission granted.');
// TODO(developer): Retrieve an Instance ID token for use with FCM.
// Save token in the local storage
} else {
console.log('Unable to get permission to notify.');
}
});
В контексте обновления вы можете извлечь ранее сохраненный токен, чтобы заменить его новым.
then()
который у вас уже есть.