gpt4 book ai didi

android - Firebase FCM token - 何时发送到服务器?

转载 作者:IT老高 更新时间:2023-10-28 23:20:41 28 4
gpt4 key购买 nike

好的,所以我有一个应用程序,它在第一次启动时会带您浏览几张欢迎幻灯片,然后带您进入登录/注册页面,然后进入 MainActivity

我刚刚实现了 FCM,服务会在用户看到任何这些页面之前生成 token 。我怎样才能让服务运行我到达 MainActivity

问题是我试图将 token 刷新到 MySQL DB 后立即发送到适当的用户帐户,但由于用户尚未登录,即null 并且我向服务器发送的消息失败。设计这个的好方法是什么?我想过将 token 保存在 SharedPreferences 中,并在用户登录后将其发送到服务器,但是当稍后刷新 token 时会产生很多复杂情况?!

可能的解决方案:

我不确定我是否完全理解这 2 个服务的运行方式,但在 onTokenRefresh 中我只是将 token 保存到 SharedPreferences 中,在 MainActivity 中我从 SP 然后我将它发送到服务器。在这种情况下,当刷新 token 时,新值将立即再次进入 SharedPreferences。但我仍然需要检查它是否是 SP 中的新值,然后将其重新上传到服务器。这令人困惑!

最佳答案

请注意,您始终可以通过以下方式检索 token :

FirebaseInstanceID.getInstance().getToken();

如果 token 尚未生成,则返回 null,如果 token 已生成,则返回。在您的情况下, token 很可能会在用户登录时生成。因此,您应该能够在用户登录后立即将其发送到您的应用服务器。如果它不可用,那么您正如 Chintan Soni 提到的,会在 onTokenRefresh 回调中发送它。

编辑

使用新的 Firebase SDK (21.0.0),您将通过这种方式获取 token :

 FirebaseInstallations.getInstance().getToken(false).addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
@Override
public void onComplete(@NonNull Task<InstallationTokenResult> task) {
if(!task.isSuccessful()){
return;
}
// Get new Instance ID token
String token = task.getResult().getToken();

}
});

您最好添加一个监听器以对响应进行更多处理。

关于android - Firebase FCM token - 何时发送到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340526/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com