有条件的第一次启动RemoteConfig时出现问题

时间:2019-05-08 10:18:54

标签: android firebase firebase-remote-config

我遇到的RemoteConfig参数有条件的问题。在大多数情况下,我会在打开第一个应用程序时获得默认值。之后,我得到其他条件值。我的条件是来自User in random percentile的{​​{1}}。我认为,永远不要将它用作默认值(因为条件覆盖了用户百分位数的100%)。我确实打电话给0 -> 10, 10 -> 20, 20 -> 30,...., 90 -> 100,并在fetchAndActive()之后打电话给mFirebaseRemoteConfig.getString()。有想法吗?

2 个答案:

答案 0 :(得分:1)

一个多星期前,我遇到了同样的问题,经过一番谷歌搜索后,我发现的唯一类似问题就是这个问题。今天,我终于找到了原因并实现了简单的解决方法。 长话短说,在Firebase SDK初始化中有一个竞争条件连接到“ FirebaseInstanceId”生成:在初始启动期间,Firebase在生成AppInstanceId之前会进行远程配置请求。由于这个后端无法应用某些与远程参数有关的条件,例如“随机百分比的用户”。 为了解决这个问题,我们需要在初始化SDK之前生成应用实例ID。因此,代码可能如下所示:

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

希望这会有所帮助。

答案 1 :(得分:0)

经过数天的搜索,但没有任何线索,我不得不采取一种肮脏,棘手的方法来解决我的问题:{s {1}}上1秒后获取并加载远程配置:

###Load data
train_labeled = pd.read_hdf("train_labeled.h5", "train")
train_unlabeled = pd.read_hdf("train_unlabeled.h5", "train")
test = pd.read_hdf("test.h5", "test")

X_labeled = np.array(train_labeled.iloc[:,1:])
X_unlabeled = np.array(train_unlabeled)
y_labeled = np.array(train_labeled.iloc[:,0])

###Impute missing values
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=5)
neigh.fit(X_labeled, y_labeled) 
y_unlabeled = neigh.predict(X_unlabeled)

###Combine data
X = np.concatenate((X_labeled, X_unlabeled), axis=0)
y = np.concatenate((y_labeled, y_unlabeled), axis=0)

###Split train and test data
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.8)

###Create model
model = tf.keras.Sequential([
layers.BatchNormalization(),
layers.Dense(80, activation='relu', input_shape=(X_train.shape[1],)),
layers.Dense(80, activation=tf.nn.relu),  
layers.Dense(10, activation=tf.nn.softmax)])

model.compile(optimizer=tf.train.AdamOptimizer(0.001),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

###Train model
model.fit(X_train, y_train, epochs=10, batch_size=20,
          validation_data=(X_test, y_test))

P / s:可以,但是我不知道为什么。