Монитор Обновить токен для веб-толчок FCM и заменить его на старый в БД

1

В настоящее время я пытаюсь сделать веб-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);
  });
Теги:
firebase
web
firebase-cloud-messaging

2 ответа

0
Лучший ответ

Как указано в документации по обновлению токенов:

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);
  });
});
  • 0
    Спасибо за ответ .. Я пробовал это, но он не срабатывает, когда я очищаю историю, обновляя токен, таким образом, новый ... он не срабатывает. Где мне нужно поднять этот код
  • 0
    Этот код сработает при обновлении токена. Это не на каждой странице загрузки. Когда вы добавляете код на существующую страницу, токен уже существует - поэтому код не сработает. Вот почему вам также нужен метод then() который у вас уже есть.
Показать ещё 3 комментария
0

Обходной путь - использовать локальное хранилище для сохранения первого токена.

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.');
 }
});

В контексте обновления вы можете извлечь ранее сохраненный токен, чтобы заменить его новым.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню