在一个iOS项目中,我们决定将一个功能作为一个演示场景仅对一些白名单用户进行实现,在用户登录到LoginController中的应用程序后,我们通过使用这个analytics.setUserProperty(id,forName:“id”)
将用户id发送到Firebase,并且我们设置了一个带有多个条件的远程配置标志,每个条件都检查一个特定的用户id。如果这个条件与登录到Firebase后发送的用户id相等,则返回true,否则返回false。在LoginController中发送用户id之后,我们尝试获取远程配置标志
RCUtility.fetchAVFlagValue { result in
UserDefaults.standard.set(result, forKey: DefaultKeys.remoteConfigFlag)
}
下面是rcutility
类
class RCUtility {
static func fetchAVFlagValue(completion: @escaping (_ flag: Bool) -> Void) {
#if DEBUG
let fetchDuration: TimeInterval = 0
activateDebugMode()
#else
let fetchDuration: TimeInterval = 3600
#endif
let remoteConfig = RemoteConfig.remoteConfig()
remoteConfig.fetch(withExpirationDuration: fetchDuration) { _, error in
if let error = error {
print("Error fetching remote values: \(error)")
return
}
remoteConfig.activateFetched()
completion(remoteConfig
.configValue(forKey: "auto_vision_flag")
.boolValue)
}
}
static func activateDebugMode() {
let debugSettings = RemoteConfigSettings(developerModeEnabled: true)
RemoteConfig.remoteConfig().configSettings = debugSettings
}
}
问题是,只要我在调试模式(时间间隔为0
)下测试它,它就能正常工作,例如,当我作为白名单用户登录时,我看到了特定的特性,当我注销并作为另一个非白名单用户登录时,我不会看到该特性,但当我们发布QAs应用程序时,这不会发生,如果他们首先作为一个好用户登录,他们看到了该特性,但如果他们注销并作为一个坏用户再次登录,他们仍然可以看到他们认为没有的特性!除非他们等待1小时(为标志获取新值的指定时间间隔),或者如果他们删除应用程序,重新安装并重新登录!如果不满足这两个条件,似乎FB不会返回更新的值。
我确信Firebase中的标志设置正确。
我试过不同的方法,比如在从FB提取后激活标志,或者在用户从应用程序注销后尝试重置UserDefaults的值,或者将值保存在一个常量中而不是使用UserDefaults,但这些方法都没有奏效,我不确定这是FB使用远程配置标志的方式,还是我遗漏了什么?
Android版本没有这个问题,同样的实现和相同的时间间隔,无论调试或生产模式或用户类型,他们都可以从Firebase获得正确的值,而不必删除和重新安装应用程序。
Remote Config的提取机制可能不知道用户的任何信息,这意味着它只需等待缓存过期,默认为12小时。请参阅关于缓存的Firebase文档。
我倾向于认为这是一个bug,尽管我不确定它是否按照预期工作。无论哪种方式,提交一份bug报告都是值得的。
作为一种解决办法,您可以通过调用FetchWithExpirationDuration:CompletionHandler:
以非常低的过期时间来指示fetch在检测到新的登录后请求新的值。只需确保在新用户登录后才调用此变体,因为过于频繁的调用可能会导致应用服务器端节流。
远程配置推送需要多长时间?我有下面的代码,在网络上推送一个新的更新后,它会在至少几分钟内继续打印false和旧值。
我最近将Firebase remote config添加到我的项目中,以便远程管理一些应用程序设置。 由于Firebase的性质,配置只能在客户端每12小时更新一次。当我慢慢地将变量添加到远程配置中时,我意外地创建了以下场景: 用户的应用程序版本A在远程配置上的变量很少。 应用程序从Firebase更新变量 用户将应用程序版本更新为A+1,该版本在远程配置中具有新变量 应用程序尝试从firebas
问题内容: 匹配条件后,如何在一段时间后更新表? 我需要在满足某些条件后进行更新,并在2天后根据收到的最新答案(即e)进行更新,因此应在上进行更新。 问题答案: 试试这个 如此看来,这两个表是由相连的,并且具有的最新回答日期。通过使用我们可以知道今天的日期和比赛的答案之间的差异。
接口说明 更新相机位置(名称和时间间隔) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/viewpoint/1.0.0/updateNameTime 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 id string form 是 视角ID name string form 是 视角名称 time
间隔有开始和结束时间。间隔可能重叠。可能有几个包含时间t的间隔。只返回其中一个就可以了。 这是一个面试问题。我能够解决这个问题,方法是根据结束对间隔进行排序,根据开始对另一个时间进行排序,并取具有匹配开始和结束的间隔的交点。显然有更多优化的解决方案。 这里有一个例子:[1,5][2,10][3,6][2,9],目标是8。在这种情况下,[2,10]和[2,9]中的任何一个都是正确答案。 我想问题的关
请注意:“我编辑了这个问题” 我正在观察一个非常奇怪的情况。我在Jenkins中配置了两个具有相同配置的作业,但其中一个是连续构建,另一个是夜间构建[poll scm configured@middign]使用Sonarqube配置生成报告。 注意:我使用的是maven 3.3.1版本和SonarQube 5.1