проблема при первом запуске RemoteConfig с условиями - PullRequest
0 голосов
/ 08 мая 2019

У меня проблема с параметром RemoteConfig, в котором есть условия. В большинстве случаев я получаю значение по умолчанию при первом открытии приложения. После этого я получаю другие значения условия. Мои условия User in random percentile от 0 -> 10, 10 -> 20, 20 -> 30,...., 90 -> 100. На мой взгляд, это никогда не должно быть значением по умолчанию (поскольку условия покрывают 100% пользовательского процентиля). Я звонил fetchAndActive() и звонил mFirebaseRemoteConfig.getString() после task.isSuccessful(). Есть идеи?

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Я столкнулся с той же проблемой более недели назад, и после некоторого поиска в Google единственной похожей вещью, которую я нашел, был этот вопрос.Сегодня я наконец нашел причину и реализовал простой обходной путь.Короче говоря, в инициализации Firebase SDK есть условие гонки, связанное с генерацией FirebaseInstanceId: во время первоначального запуска Firebase выполняет запрос удаленной конфигурации перед генерацией AppInstanceId.Из-за этого серверная часть не может применять некоторые условия, относящиеся к удаленным параметрам, например, «пользователь в случайном процентиле».Чтобы это исправить, нам нужно сгенерировать идентификатор экземпляра приложения перед инициализацией SDK.Поэтому код может выглядеть следующим образом:

FirebaseInstanceId.getInstance().getInstanceId()
    .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
    @Override
    public void onComplete(@NonNull Task<InstanceIdResult> task) {
        //init firebase remote config here
    }
});

Надеюсь, это поможет.

0 голосов
/ 23 мая 2019

после многих дней поиска, но понятия не имею, мне пришлось сделать грязный, хитрый метод, чтобы решить мою проблему: получить и загрузить удаленный конфиг через 1с на onCreate:

Observable.timer(1, TimeUnit.SECONDS)
                    .observeOn(AndroidSchedulers.mainThread())
                    .doOnNext(time ->{
                        fetchAndActiveRemoteConfig();
                    })
                    .subscribe();

P / s: это работает, но я не знаю, почему это работает.

...