Segment-Optimizely-X 1.0.4

Segment-Optimizely-X 1.0.4

LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Oct 2020

Maintained by Ladan Azita Nasserian, Segment, Brennan Gamwell, Prateek Srivastava, Brienne McNally.

Depends on:
Analytics~> 3.0
OptimizelySDKiOS~> 1.1.9

  • By
  • Segment


CircleCI Version License Platform

This SDK supports Optimizely iOS v1.1.9. Segment supports newer versions of Optimizely via Segment cloud mode. Read more about integrating with Optimizely via Segment cloud mode in our documentation here.


To run the example project, clone the repo, and run pod install from the Example directory first.



Segment-Optimizely-X is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "Segment-Optimizely-X"



    SEGAnalyticsConfiguration *configuration = [SEGAnalyticsConfiguration configurationWithWriteKey:@"<YOUR_WRITE_KEY>"];
    configuration.trackApplicationLifecycleEvents = YES;
    configuration.recordScreenViews = YES;

    // Setup optimizely logger.
    OPTLYLoggerDefault *optlyLogger = [[OPTLYLoggerDefault alloc] initWithLogLevel:OptimizelyLogLevelError];
    // Create an Optimizely manager.
    self.optlyManager = [OPTLYManager init:^(OPTLYManagerBuilder *_Nullable builder) {
        builder.projectId = @"<YOUR_PROJECT_ID>";
        builder.logger = optlyLogger;
    // Initialize an Optimizely client by asynchronously downloading the datafile.
    [self.optlyManager initializeWithCallback:^(NSError *_Nullable error, OPTLYClient *_Nullable client) {
       // Optimizely is now up and running.  You can now configure any experiments, etc.

    [configuration use:[SEGOptimizelyXIntegrationFactory instanceWithOptimizely:self.optlyManager]];
    [SEGAnalytics setupWithConfiguration:configuration];


    let configuration = SEGAnalyticsConfiguration(writeKey: "<YOUR_WRITE_KEY>")
    configuration.trackApplicationLifecycleEvents = true
    configuration.recordScreenViews = true

    let optlyLogger = OPTLYLoggerDefault(logLevel: .error)
    optlyManager = OPTLYManager.instance(builderBlock: { (builder) in
        builder?.projectId = "<YOUR_PROJECT_ID>"
        builder?.logger = optlyLogger

    optlyManager?.initialize(callback: { (error, optlyClient) in
        // Optimizely is now up and running.  You can now configure any experiments, etc.

    configuration.use(SEGOptimizelyXIntegrationFactory.instance(withOptimizely: optlyManager))

    SEGAnalytics.setup(with: configuration)


Segment-Optimizely-X is available under the MIT license. See the LICENSE file for more info.