|
This is legacy documentation
CloudBees Feature Management is now part of CloudBees Unify. For current feature management documentation, go to CloudBees Unify Feature management. This documentation covers the original CloudBees Feature Management product (formerly Rollout.io), which is end-of-life. It remains available only for existing customers who are migrating to CloudBees Unify. |
|
Support during the extension period
Because CloudBees Feature Management is an end-of-life product, support during the extension period is limited to critical items only:
This coverage is consistent with the CloudBees end-of-life policy in the support Terms & Conditions. |
This section describes how to set up and install the iOS SDK and how to deploy a feature flag.
Step 1 - Setting up the iOS SDK
To setup iOS SDK, follow these steps:
-
Create a CloudBees Feature Management account. See Signup Page to create an account.
-
Get your environment key. Copy your environment key from App settings > Environments > Key.
Step 2 - Installing the iOS SDK
For instructions on initializing the iOS package to your application., select your installation method:
CocoaPods
To install the iOS package, follow these steps:
-
In the podfile, add the following:
pod 'ROX' -
To install the Cocoapods dependencies, run the following command in the terminal:
pod install
Carthage (SDK5)
| SDK5 only. |
To install the iOS package, follow these steps:
-
In the cartfile, add the following:
github "rollout/rox-spm" -
To install the Carthage dependencies, run the following command in the terminal:
carthage update --use-xcframeworks -
Add the downloaded binaries to your project. The binaries can be found in
Carthage/Bindirectory.-
For Objective-C add
ROXCore.xcframework. -
For Swift add both
ROXCore.xcframeworkandROX.xcframework.
-
Carthage (SDK4)
| SDK4 only. |
To install the iOS package, follow these steps:
-
In the cartfile, add the following:
github "rollout/rox-ios" -
To install the Carthage dependencies, run the following command in the terminal:
carthage update --platform iOS
Swift Package Manager
| SDK5 only. |
To add ROX to an Objective-C project use this repository: https://github.com/rollout/rox-core-spm/.
To add ROX to Swift code, use this repo URL: https://github.com/rollout/rox-spm/.
Manual installation (XCFramework)
| SDK5 only. |
To install the iOS package, follow these steps:
-
Select and download the latest
ROX.xcframework.ziparchive version from the GitHub repository. -
Extract the archive into the directory under your application.
-
Add files to your project in Xcode by selecting the downloaded
ROXCore.xcframeworkandROX.xcframework.-
For Objective-C project add
ROXCore.xcframework. -
For Swift add both
ROXCore.xcframeworkandROX.xcframework.
-
Manual installation
| SDK4 only. |
To install the iOS package, follow these steps:
-
If you are already in the manual step screen on the dashboard, click download.
-
If for some reason you left the installation screen you can go back by clicking on Dashboard > Install Instructions.
-
Download the zip file and open it. Place the ROX directory under your application.
-
Add files to your project in Xcode by selecting
ROXCore.frameworkandRoxSdk.xcodeproj. -
Remove
ROXCore.frameworkfrom Linked Frameworks and Libraries. -
Click the plus sign (
+) under Embedded Binaries and select bothROXCore.frameworkandROX.framework.
Add the following lines of code to your application
import ROX import ROXCore public class flags : RoxContainer { // Define the feature flags let enableTutorial = RoxFlag() // Using a simple singleton pattern // a single instance should be used and injected to using classes and unit tests let titleColors = RoxString(withDefault: "White", variations: ["White", "Blue", "Green", "Yellow"]) static let INSTANCE = flags() } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //Register the flags instance ROX.register(container: flags.INSTANCE) // Setup the environment key ROX.setup(withKey: <ROLLOUT_ENV_KEY>) return true } flags.INSTANCE.enableTutorial.enabled { // TODO: Put your code here that needs to be gated } switch flags.titleColors!.value()! { case "White": print("Title color is White") case "Blue": print("Title color is Blue") case "Green": print("Title color is Green") case "Yellow": print("Title color is Yellow") default: print("Title color is default - White") }
#import <ROXCore/ROXCore.h> @interface flags : ROXBaseContainer @property (nonatomic) ROXFlag* enableTutorial; @property (nonatomic) ROXString* titleColors; @end #import "MyContainer.h" @implementation flags - (instancetype)init { self = [super init]; if (self) { self.enableTutorial = [[ROXFlag alloc] init]; self.titleColors = [[ROXString alloc] initWithDefault:@"White" variations:@[@"Blue", @"Green", @"Yellow"]]; } } return self; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Register the flag [ROX register:[[flags alloc] init]]; // Setup the environment key [ROX setupWithKey:@<ROLLOUT_ENV_KEY>]; return YES; } [flags.enableTutorial enabled:^{ // start the tutorial } disabled:^{ // skip the tutorial }]; if ([flags.titleColors.value isEqualToString:@"Blue"]) { NSLog(@"Title color is Blue"); } else if ([flags.titleColors.value isEqualToString:@"White"]) { NSLog(@"Title color is White"); } else if ([flags.titleColors.value isEqualToString:@"Green"]) { NSLog(@"Title color is Green"); } else if ([flags.titleColors.value isEqualToString:@"Yellow"]) { NSLog(@"Title color is Yellow"); } @end