Firebase推送通知 - 如何跟踪用户FCM令牌?

时间:2018-06-11 12:01:56

标签: firebase react-native push-notification firebase-cloud-messaging

这是围绕FCM令牌的一般性问题。目前在我的react-native应用程序中,只要有新令牌,我就会进行API调用以将此令牌与用户ID相关联。当此令牌也被刷新时,我再次进行相同的API调用。

我们使用这些代币发送生日快乐'推送通知等。

我想知道如果用户不使用该应用,此令牌将过期,我们无法跟踪令牌。生日推送通知仍将发送到旧的过期令牌。我们如何减轻这种影响?有什么想法吗?

我实际上正在寻找一种方法/策略,即使他们暂时没有使用该应用,仍然会将推送通知传递给用户?您认为预定推送通知可能有效吗?

3 个答案:

答案 0 :(得分:1)

当您将数据发送到过期令牌时,您将收到指示此消息的响应。您可以捕获此响应,并使用它从数据库中删除令牌。

samples repo for Cloud Functions has a great example。从那里修改:

var response = admin.messaging().sendToDevice(tokens, payload);
// For each message check if there was an error.
const tokensToRemove = [];
response.results.forEach((result, index) => {
  const error = result.error;
  if (error) {
    // Cleanup the tokens who are not registered anymore.
    if (error.code === 'messaging/invalid-registration-token' ||
        error.code === 'messaging/registration-token-not-registered') {
      tokensSnapshot.ref.child(tokens[index]).remove();
    }
  }
});

答案 1 :(得分:0)

  

我想知道如果用户不使用该应用,   此令牌将过期,我们无法跟踪   令牌。生日推送通知仍将发送给旧的   过期的令牌。我们如何减轻这种影响?有什么想法吗?

就我而言,每次我的前端应用程序启动时,我都会注册firebase令牌。大多数情况下,它会发送已存储在我的数据库中的注册令牌。但是,当我的服务器端收到新的firebase注册令牌时,我存储新令牌,并在发送推送通知时,我将通知发送到我拥有的所有可用注册令牌。

在通过将firebase注册令牌发送到服务器端应用程序获得有关启动应用程序的通知之前,您无法确定用户是否已停止使用您的应用程序。希望有所帮助。

答案 2 :(得分:0)

我们将推动保留客户的活动。以上所有答案都是正确的。