获取注册令牌GCM与FCM

时间:2018-06-18 22:05:10

标签: android firebase google-cloud-messaging firebase-cloud-messaging

我正在阅读标题"检索当前注册令牌的this page上的文档。"我对它的说法感到困惑。

最初的段落非常简单。它说我们只需要打电话......

FirebaseInstanceId.getInstance().getToken

这听起来很容易,直到我读到下一段说我需要实现MyFirebaseInstanceIDService.java ......

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService
{

    @Override
    public void onTokenRefresh() {
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
}

所以第一段似乎说我可以在任何地方进行调用,但是第二段让我在onTokenRefresh()中包含调用。

所以这就引发了onTokenRefresh被调用的问题?使用GCM,我能够选择何时拨打电话询问令牌。使用FCM,似乎我们等待onTokenRefresh在某个时间被调用。

2 个答案:

答案 0 :(得分:0)

来自this post

  

每当有新令牌时,都会调用onTokenRefresh()方法   生成。安装应用后,它会立即生成(如   你发现是这样的)。它也会在令牌时被调用   已经改变了。

就像在编辑时调用onEdit()函数或在打开应用程序时调用onOpen()一样。

答案 1 :(得分:0)

来自同一链接文件:

  

注册令牌可能会在以下情况下发生变化:

     
      
  • 该应用删除实例ID
  •   
  • 该应用已在新设备上恢复
  •   
  • 用户卸载/重新安装应用
  •   
  • 用户清除应用数据。
  •   

强烈建议处理onTokenRefresh(),因为调用getToken()(来自相同的文档)会有(罕见)的可能性:

  

如果尚未生成令牌,则此方法返回null。

我认为我的answer here有更多解释。

尽管如此,调用getToken()会(大部分时间)会立即给你一个令牌,但如果它没有,onTokenRefresh()就在那里。

相关问题