当我尝试使用Loggin / SignUp时,如何将Firebase云消息令牌发送到我的服务器?

时间:2018-02-15 14:51:40

标签: android firebase firebase-cloud-messaging

我不是android开发人员(我是后端开发人员)我尝试在android项目中使用FCM(Firebase Cloud Messages)。

我有下一个问题:成功之后,我需要接收FCM令牌并将其添加到用户个人资料中。但令牌异步接收并在服务中。

我阅读了很多文章和文档,但我不明白它是如何工作的。在所有文章中,我都看到这样的例子:

enter image description here

official documentation我看到了这个:

enter image description here

没有人不写我怎么能实现这个方法:

sendRegistrationToServer(refreshedToken);

我faund this answer但作者写道:

if(userId != 0){
       // Implement code to update registration token to server
   }

如何实现代码更新注册令牌到服务器???

next answer在这个问题中,这是我发现的最详细的内容。但仍然不明白如何实现我的逻辑?

我的逻辑:

  1. 用户打开应用并输入StartActivity
  2. 在startActivity中,我检查用户authToken
  3. 如果authToken == null - >打开LoginFragment
  4. 如果authToken!= null - >打开MainActivity

  5. 无限期地,我可以onTokenRefresh方法接收FCM令牌。

  6. 如果我立即将此令牌发送到我的服务器 - 可能会发生我没有登录的情况,我不应该将此令牌发送到服务器。好。我可以查看我的authToken。如果authToken!= null - >我可以将FCM令牌发送到服务器,否则我将此令牌保存到sharedPreferences。(正如我引用的评论中所建议的那样)。但是,如果我的authToken == null(我没有登录),我需要做什么?我只能用flag - sended == false将它保存到sharedPreferences。但我什么时候发送呢?您下次尝试登录该应用程序时?然后我在应用程序周围散布了几个地方,并进行了一系列检查。当我尝试登录时,我需要检查发送的是真还是假,如果是假,我怎么能用登录名和密码或其他请求发送令牌?

2 个答案:

答案 0 :(得分:0)

您无法确定令牌何时刷新。您需要做的就是在uId节点下的某个地方写入令牌。

答案 1 :(得分:-1)

  • 在你的onTokenRefresh()中,在sharedpreferences上保存令牌,如下所示:

    SharedPreferences sharedPreferences = getApplicationContext()。getSharedPreferences(getString(R.string.your_app_nam),Context.MODE_PRIVATE);

    SharedPreferences.Editor editor = sharedPreferences.edit();         editor.putString(的getString(R.string.fcm_token),your_refreshed_token); editor.commit();

  • 然后在您的登录请求中,您可以获得如下标记:

    SharedPreferences sharedPreferences = getApplicationContext()。getSharedPreferences(getString(R.string.your_app_nam),Context.MODE_PRIVATE); String fcmToken = sharedPreferences.getString(getString(R.string.your_refreshed_token),"");

我希望它可以帮到你。