【问题标题】:I want to call FCM manually to get token while it is null in android application我想手动调用 FCM 以获取令牌,而它在 android 应用程序中为空
【发布时间】:2016-12-31 14:41:09
【问题描述】:

我想知道是否有解决方案可以在 FCM 令牌为空时获取它?换句话说,我想在Android应用程序中手动调用FCM来获取令牌?

【问题讨论】:

    标签: android firebase push-notification token firebase-cloud-messaging


    【解决方案1】:

    如果您想更快地获得令牌,您必须使用:

    token = FirebaseInstanceId.getInstance().getToken("projectNumber","FCM");
    

    代替:

    token = FirebaseInstanceId.getInstance().getToken();
    

    【讨论】:

      【解决方案2】:

      使用getInstanceId() 代替getToken(),已弃用。

      new Thread(new Runnable() {
      
                          @Override
                          public void run() {
      
                              FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
                                  @Override
                                  public void onSuccess(InstanceIdResult instanceIdResult) {
                                      String deviceToken = instanceIdResult.getToken();
      
                                  }
                              });
                          }
                      }).start();
      

      【讨论】:

        【解决方案3】:

        如果调用FirebaseInstanceID.getToken()时得到null,则表示该令牌尚未生成。 现在没有 API 可以强制生成令牌,因此您必须改为监控令牌生成。

        要监控令牌生成,请创建一个派生自 com.google.firebase.iid.FirebaseInstanceId 的类并覆盖其 onTokenRefresh() 方法:

        @Override
        public void onTokenRefresh() {
            // Get updated InstanceID token.
            String refreshedToken = FirebaseInstanceId.getInstance().getToken();
            Log.d(TAG, "Refreshed token: " + refreshedToken);
        
            // If you want to send messages to this application instance or
            // manage this apps subscriptions on the server side, send the
            // Instance ID token to your app server.
            sendRegistrationToServer(refreshedToken);
        }
        

        请注意,获取和监控令牌都包含在 accessing the registration token 上的 Firebase 文档中,这是我从中获得上述代码示例的地方。

        【讨论】:

        • 谢谢,我会检查的
        猜你喜欢
        • 2014-09-21
        • 2017-07-07
        • 1970-01-01
        • 2012-03-29
        • 2019-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多