9

Firebase Remote Config を使用してモバイル アプリの秘密鍵を保存しています (セキュリティ上の問題により、クライアント アプリには含めたくありません)。

問題は、短期間にサーバーから構成を何度もフェッチすると、スロットリング例外がスローされる可能性があることです。本番アプリでは、1 時間あたり 5 リクエストの制限がありますが、この制限がユーザーごとにカウントされるのか、グローバルにカウントされるのかはわかりません。

これは私が持っているコードです:

//first search cached result, if present
    String key = FirebaseRemoteConfig.getInstance().getString("key");
    if(key != null && !key.isEmpty()){
        setKeyAndGoHome(key);
    }else {
        //no key present, let's fetch it from config
        FirebaseRemoteConfig.getInstance().fetch().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if(task.isSuccessful()){
                    FirebaseRemoteConfig.getInstance().activateFetched();
                    //key is cached 12 hours
                    String key = FirebaseRemoteConfig.getInstance().getString("key");
                    setKeyAndGoHome(key); 
                } else {
                    //this can happen due to a throttling exception
                }

            }
        });
    }

このキーがないとアプリが機能しないため、これは非常に重要です。スロットル例外条件に到達できるかどうかを知る必要があります。

制限はどのようにカウントされるか知っていますか?

ありがとう。

4

2 に答える 2

18

カウントはアプリ インスタンスごとに維持されます。つまり、アプリを実行するデバイスごとに。取得ステータスが LAST_FETCH_STATUS_THROTTLED になるまで、1 つのデバイスで同じようなコードを繰り返し実行することで、これを確認しました。次に、同じアプリを別のデバイスで実行したところ、正常にフェッチされました。

FirebaseRemoteConfig の目的のアプリケーションについて考えてみると、アプリのすべてのインスタンスによるフェッチが 5 などの少数に制限されていると、機能しません。

あなたの投稿では、「ユーザー」という用語を使用しました。FirebaseRemoteConfig はサインインしているユーザーを必要とせず、アプリのバージョン、デバイスの言語、国などの他のものとは異なり、特定のユーザー ID に基づいて構成パラメーターを配信する機能を提供しないことに注意してください。

Remote Config を使用して「秘密鍵を保存する」ことを検討しているため、ドキュメントの次の警告に注意する必要があります。

Remote Config パラメーター キーまたはパラメーター値に機密データを保存しないでください。プロジェクトの Remote Config 設定に保存されているパラメーター キーまたは値をデコードすることができます。

于 2016-06-20T13:59:04.217 に答える