Android Firebase は、再ログインするまで同期を停止しているようです。
- Firebase Admin SDK を使用して Firebase にデータをプッシュします。
- 電話に FCM メッセージを送信して、電話をウェイクアップします。メッセージには、新しいデータのプッシュ ID が含まれています。Android アプリは、新しいプッシュ ID が表示されるまで Firebase を読み取り、データを処理します。
通常、これは機能します。新しいプッシュ ID が表示されない状態になることがあります。ログアウト/ログインすると、再び機能し始めます。
FCM メッセージでプッシュ ID を電話に送信するため、これは競合状態ではありません。これにより、Android アプリは、プッシュ ID が表示されるまで (または、私の場合はタイムアウトになることがあります)、読み取りを行うことができます。データが Firebase にプッシュされ、Android アプリが正しい ID を読み取ろうとしていることを確認しました。
電話がこの状態になると、再ログインするまで失敗し続けます。エラーや例外はありません (uid は null ではなく、リスナーをアタッチできます)。新しいプッシュ ID が表示されないだけです。ログアウトして(アプリを再起動せずに)再度ログインすると、再び機能し始めます。これは非常に断続的な問題です。
回避策は、認証情報を保存し、電話が既知の適切なプッシュ ID の読み取りに失敗したときに新しい認証トークンで再ログインすることです (ところで、アプリは Firebase Admin SDK によって生成されたカスタム トークンを使用します)。
質問: 認証に関して何か不足していますか? 再ログインするまで Android アプリが同期を停止するのはなぜですか?