3

私はfirebase通知Webアプリケーションを1つ作成しました.Webアプリケーションからログインし、FCMトークンを生成してAPIサーバーに送信します。これは正常に動作しています。私のコードでonTokenRefreshメソッドを書きましたが、コード。 このコードをテストする方法はありますか?どのようにFirebase通知OnTokenRefreshメソッドの呼び出しをJavaScriptでテストできますか?

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時間後にメッセージを送信した後、次のエラーが発生します マルチキャスト応答(multicast_id = 76342 ...... 7621、合計= 7、成功= 4、失敗= 3、canonical_ids = 2、結果: [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]] 私の開発コンソールから電話するときに、新しいfirebase通知トークンを取得します。 –

答えて

3

書き込み時には、TokenRefreshは使用されません。

将来、トークンが期限切れになり、FCMによってリフレッシュされるようにライブラリが変更され、このコールバックが変更を通知するために使用されます。

私が与えることができる最高のアドバイスは、あなたが入手トークン(コールテストを書くことで「偽のこのイベント」にある)、firebaseメッセージングサービスワーカー(これはPushSubscriptionを退会することによってトークンが無効になります)の登録を解除:

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

次に、onTokenRefreshコードで実行するコードを手動で呼び出します。

関連する問題