3

웹 응용 프로그램에서 로그인 한 후 웹 응용 프로그램에서 FCM 토큰을 생성하고 API 서버에 보내면 제대로 작동합니다. 코드에서 onTokenRefresh 메서드를 작성했지만 테스트 할 수 없습니다. 암호. 이 코드를 테스트 할 방법이 있습니까?자바 스크립트에서 Firebase 알림 OnTokenRefresh 메소드 호출을 테스트하는 방법은 무엇입니까?

firebase.initializeApp(config); 
messaging = firebase.messaging(); 


// Get Instance ID token. Initially, this makes a network call, once retrieved 
     // subsequent calls to getToken will return from cache. 
     messaging.requestPermission().then(function() { 
     return messaging.getToken(); 
    }).then(function(currentToken) { 
     if (currentToken) { 
      sendTokenToServer(currentToken); 
      updateUIForPushEnabled(currentToken); 
     } else { 
      // Show permission request. 
      console.log('No Instance ID token available. Request permission to generate one.'); 
      // Show permission UI. 
      updateUIForPushPermissionRequired(); 
      setTokenSentToServer(false); 
     } 
     }) 
     .catch(function(err) { 
     console.log('An error occurred while retrieving token. ', err); 
     showToken('Error retrieving Instance ID token. ', err); 
     setTokenSentToServer(false); 
     }); 
    } 

    // 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

내 API 서버에서 1 시간 후에 메시지를 보내면 다음 오류가 발생합니다. MulticastResult (multicast_id = 76342 ...... 7621, total = 7, success = 4, failure = 3, canonical_ids = 2, results : [messageId = 0 : 148 ........... 9fd7ecd canonicalRegistrationId = APA91b ............ Xa5c2v9], [errorCode = NotRegistered], [errorCode = NotRegistered], [messageId = 0 : 14 ...... CD], [messageId = 0 : 14 .... cd], [messageId = 0 : 14 .... cd canonicalRegistrationId = APA9 .......... .punB2QGu], [errorCode = NotRegistered]] 내 dev 콘솔에서 호출 할 때 새로운 firebase 알림 토큰을 얻습니다. –

답변

3

onTokenRefresh는 쓰지 않습니다.

향후 라이브러리가 변경되어 토큰이 만료되고 FCM에 의해 새로 고쳐지며이 콜백이 변경을 알리는 데 사용됩니다. 내가 줄 수있는

최선의 충고는 (이것은이 (가) PushSubscription을 구독 취소하여 토큰이 유효하지 않은 것)의 중포 기지 메시징 서비스 노동자의 등록을 취소하면 getToken을 (전화 테스트를 작성하여 "가짜 이벤트")하는 것입니다

navigator.serviceWorker.getRegistrations().then((regs) => { 
    return Promise.all(regs.map(reg => reg.unregister())); 
}); 

그런 다음 onTokenRefresh 코드에서 수동으로 실행하는 코드를 수동으로 호출하십시오.