android – 在应用更新时更新Firebase实例ID

回到GCM时代,建议您每次向应用程序发布更新时,都应该检查是否有新的注册ID(因为在更新后不能保证相同)应用程序启动时.

FCM的情况仍然如此吗?我找不到任何关于此的文档

最佳答案
您应该在应用程序运行时检查当前令牌并监视onTokenRefresh()以检测令牌何时更改.

通过调用FirebaseInstanceID.getToken()检查app / main活动启动时的当前令牌:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ...
        String token = FirebaseInstanceId.getInstance().getToken();
        if (token != null) {
            sendRegistrationToServer(refreshedToken);
        }
    }
    ...

您在此代码段中调用的sendRegistrationToServer()方法是您将注册令牌发送到您自己的服务器(或Firebase数据库之类的无服务器解决方案)的方法.

通过继承FirebaseInstanceIdService并覆盖onTokenRefresh()来监视令牌的更改:

@Override
public void onTokenRefresh() {
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();

    // 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);
}

请参阅此处的文档:https://firebase.google.com/docs/cloud-messaging/android/client#sample-register

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...