sigma-client-check-flag
SigmaClient.checkFlag
func checkFlag<T: SigmaPropertyType>(flagName: String, onSuccess: SigmaSuccessCallback<T?>?, onError: SigmaErrorCallback?)
func checkFlag<T: SigmaPropertyType>(flagName: String) async throws -> T?
Получает значение FeatureFlag сответствующего типа (Bool, Int, Double, String или [String: Any]).
Параметры
| Name | Type | Required | Default | Description |
| flagName | String | Да | Название Feature Flag | |
| onSuccess | SigmaSuccessCallback? | Да | Только для callback версии метода. Closure, содержащая в себе значение запрашиваемого Feature Flag | |
| onError | SigmaErrorCallback? | Да | Только для callback версии метода. Closure, содержащая в себе ошибку при запросе Feature Flag |
Возвращаемое значение
| Type | Description |
| Bool? / Int? / Double? / String? / [String: Any]? | Только для async-await версии метода. Значение запрашиваемого Feature Flag |
Ошибки
| Error | Description |
| SigmaError.requestConfigFailed | Ошибка запроса конфигурационного файла. Содержит в себе объект SigmaNetworkError с более детальной информацией об ошибке |
| SigmaError.requestLocationFailed | Ошибка запроса геолокации. Содержит в себе объект SigmaNetworkError с более детальной информацией об ошибке |
| SigmaError.featureFlagNotFound | Feature Flag с данным именем не найден в конфигурационном файле |
| SigmaError.featureFlagNoRules | Для данного Feature Flag отсутствуют правила, по которым определяется значение флага |
| SigmaError.featureFlagRulesNotSatisfied | Для данного Feature Flag не удовлетворено ни одно правило |
Использование
import SigmaSDK
guard let client = Sigma.getClient() else { return }
// Callback версия
client.checkFlag(
flagName: "my_first_flag",
onSuccess: { (value: Bool?) in
// Обработка значения Feature Flag
},
onError: { error in
// Обработка ошибки
}
)
// Async-await версия
do {
let firstFlag: Bool? = try await client.checkFlag(flagName: "my_first_flag")
// Обработка значения Feature Flag
} catch let error {
// Обработка ошибки
}
Дополнительная информация
Несмотря на то, что методы получения Feature Flag выбрасывают ошибки, даже при отсутствии ошибок значение флага может быть nil. Эта ситуация может возникнуть, например, при попытке получить флаг с типом Int, хотя ег о фактическое значение String.