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

tyc*_*czj 5 android firebase firebase-cloud-messaging

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

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

Fra*_*len 3

您应该在应用程序运行时检查当前令牌,并进行监视onTokenRefresh()以检测令牌何时发生更改。

通过调用以下命令检查应用程序/主活动启动时的当前令牌FirebaseInstanceID.getToken()

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);
        }
    }
    ...
Run Code Online (Sandbox Code Playgroud)

此代码片段中调用的方法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);
}
Run Code Online (Sandbox Code Playgroud)

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