CloudBees Feature Management is an advanced feature flagging solution that lets your development teams quickly build and deploy applications without compromising on safety.
Features
-
Mobile-first: CloudBees Feature Management is the first feature flagging system built from the ground up to run directly inside phones, tablets, and wearables.
-
Simple: CloudBees Feature Management allows developers to focus on their business logic and not working with the complex configurations on the dashboard.
-
Modern: Using static types, the compiler and IDE are responsible to prevent collisions to allow easy flags discovery by developers (by autocomplete).
-
Support Optimizations: CloudBees Feature Management unique proposition is that is supports the company needs a full capable experimentation system, for A/B/N testing, optimizations, customizations and more.
-
Remote configuration included: CloudBees Feature Management include a remote configuration module that allows developers to define a configuration that can be controlled from the server.
Classes
Classes | Description |
---|---|
ROXBaseContainer |
Contains configurations and flags. |
ROXCore |
Acts as a facade interface. |
ROXExperiment |
Contains session data about an Experiment. |
ROXFlag |
Contains the API for flags that are controlled by ROX Server. Flags are assigned to an experiment and their value is based on experiment container. |
ROXMetadata |
Contains the state of the current session. |
ROXOptions |
Contains the configuration that is used when running |
ROXRemoteVariable |
Contains remote variables. |
ROXReportingValue |
Contains data about values of an Experiment. |
ROXTargetGroup |
Contains session data about a Target Group. |
ROXBaseContainer
@interface ROXBaseContainer : NSObject
A container class for configurations and flags.
Any class that inherits from this base class can be used as an entry point for flags and configurations that are controlled by CloudBees Feature Management. To use an instance of this class, you need to register the instance using the +[ROXCore register:]
method and retrieve the instance using +[ROXCore get:]
method.
Methods | Description | Declaration |
---|---|---|
-namespace |
Override this property to override the default namespace of a class. |
|
ROXCore
ROXCore class is a static objc class that acts as a facade interface.
You use this flag for the following:
-
Initialize CloudBees Feature Management SDK using
+setupWithKey:
-
Register container instances using
+register:
-
Retrieve container instances using
+getContainer:
-
Load custom properties with setCustomPropertyKey:value: methods
-
Present the flags view controller with
+flagsViewController
Methods | Description | Declaration | Parameter |
---|---|---|---|
setupWithKey: |
Loads the SDK, usually called as part of -[AppDelegate application:didFinishLaunchingWithOptions:] |
|
roxKey The app key (taken from ROX dashboard) |
setupWithKey:options: |
Loads the SDK, usually called as part of -[AppDelegate application:didFinishLaunchingWithOptions:] |
|
roxKey The app key (taken from CloudBees Feature Management dashboard) options setup options |
register: |
Register a container instance to CloudBees Feature Management system, the same instance can be retrieved by using @params container The instance to register, this instance values are set at +sync, +setupWithKey:, or a if the app goes into foreground NOTE: This method should be called only once for a given class. |
|
|
getContainer: |
Retrieve an instance from type clazz that was registered with ROX.register(_:) |
|
clazz The type of instance you want to retrieve Return Value The instance that was registered |
sync |
Recalculate the rules of experiments allocation base on new data [NOTE] Usually called after the user has logged in to refresh ROX custom properties |
|
|
unfreeze |
Unfreeze the state of all flags in code When a flag is used in code, his value gets frozen in the app until the next app foreground event. Calling this function will unfreeze all flags, and using a flag will return it’s most updated value |
|
|
flagsViewController |
A view to control feature flags values locally on a mobile device or simulator. CloudBees Feature Management ViewController allows developers, QA, or internal employees (depending on policy) to view, disable, enable and reset the state of their flags locally on the device. The functions return a view controller that can be loaded to the view hierarchy for test devices upon shake, or by triggering an existing debug view in the app. |
|
|
setCustomStringProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property value The value of the custom property |
setCustomComputedStringProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property block. This block will get invoked when trying to evaluate the value of the property. |
setCustomBooleanProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property value The value of the custom property |
setCustomComputedBooleanProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property block this block will get invoked when trying to evaluate the value of the property |
setCustomIntProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property value The value of the custom property |
setCustomComputedIntProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property block this block will get invoked when trying to evaluate the value of the property |
setCustomDoubleProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property value The value of the custom property |
setCustomComputedDoubleProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property block this block will get invoked when trying to evaluate the value of the property |
setCustomSemverProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property value The value of the custom property |
setCustomComputedSemverProperty:forKey: |
Sets a custom property value that can be used when creating target groups. |
|
key The name of the custom property block. This block will get invoked when trying to evaluate the value of the property |
roxDisabled |
Checks if device is a test device. Test device are managed by App Settings in the dashboard |
|
ROXExperiment
@interface ROXExperiment : NSObject
Methods | Description | Declaration |
---|---|---|
name |
Experiment name |
|
identifier |
Experiment unique identifier |
|
flags |
Flags for this experiment |
|
ROXFlag
@interface ROXFlag : ROXVariant
This class is the API for flags that are controlled by CloudBees Feature Management server. Flags are assigned to an experiment and their value is based on an experiment container.
Methods | Description | Declaration | Parameters |
---|---|---|---|
isEnabled |
a property to indicate if the flag is enabled or disabled |
|
|
-enabled: |
Runs block is flag is enabled |
|
|
-disabled: |
Runs block is flag is disabled |
|
|
-enabled:disabled: |
Runs one of the given block based on flag status |
|
|
-forceValue: |
Force a value on the flag. This will override any other value (Experiment, Flags View Controller, etc..), and can only be overridden with another call to forceValue: |
|
value to force the SDK with |
-initWithDefault: |
Initialize a flag with a default boolean value |
|
defaultValue a default value for this flag |
ROXMetadata
@interface ROXMetadata : NSObject
This class contains the state of the current session.
Methods | Description | Declaration | Parameters |
---|---|---|---|
experiments |
An array of the available experiments in this session |
|
|
targetGroups |
An array of the available targetGroups in this session |
|
|
remoteVariables |
An array of the available remoteVariables in this session |
|
ROXOptions
@interface ROXOptions : NSObject
This is the configuration class that is used when running +[ROXCore setupWithKey:options:].
Methods | Description | Declaration | Parameters |
---|---|---|---|
syncCompletionHandler |
The completion handler that is called when the SDK has synced and applied the configuration. |
|
|
verbose |
Set SDK verbosity level for debugging |
|
|
disableCrashReporting |
Setting this option to YES will prevent the SDK from handling and reporting crashed sessions. |
|
ROXRemoteVariable
@interface ROXRemoteVariable : NSObject
Base class for remote variables.
Methods | Description | Declaration | Parameter |
---|---|---|---|
name |
The full name of the remote variable (including namespace). |
|
ROXReportingValue
@interface ROXReportingValue : NSObject
This class contains data about values of an experiment.
Methods | Description | Declaration | Parameter |
---|---|---|---|
name |
Name of the reporting |
|
|
value |
Value of the reporting |
|
ROXTargetGroup
@interface ROXTargetGroup : NSObject
This class contains session data about a Target Group.
Methods | Description | Declaration |
---|---|---|
Name |
The target group name. |
|
isEnabled |
Is device part of this target group |
|