diff --git a/DemoObjCApp/AppDelegate.h b/DemoObjCApp/AppDelegate.h deleted file mode 100644 index aea65635e..000000000 --- a/DemoObjCApp/AppDelegate.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright 2019, 2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; - -@end - diff --git a/DemoObjCApp/AppDelegate.m b/DemoObjCApp/AppDelegate.m deleted file mode 100644 index 67e4d0cdb..000000000 --- a/DemoObjCApp/AppDelegate.m +++ /dev/null @@ -1,227 +0,0 @@ -// -// Copyright 2019-2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "AppDelegate.h" -#import "VariationViewController.h" -#import "CustomLogger.h" -#import "SamplesForAPI.h" - -@import Optimizely; - - -static NSString * const kOptimizelySdkKey = @"FCnSegiEkRry9rhVMroit4"; -static NSString * const kOptimizelyDatafileName = @"demoTestDatafile"; -static NSString * const kOptimizelyFeatureKey = @"decide_demo"; -static NSString * const kOptimizelyExperimentKey = @"background_experiment_decide"; -static NSString * const kOptimizelyEventKey = @"sample_conversion"; - -@interface AppDelegate () -@property(nonnull, strong, nonatomic) NSString *userId; -@property(nonnull, strong, nonatomic) NSDictionary *attributes; -@property(nullable, strong, nonatomic) OptimizelyClient *optimizely; -@property(nullable, strong, nonatomic) OptimizelyUserContext *user; -@end - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - - self.userId = [NSString stringWithFormat:@"%d", arc4random_uniform(300000)]; - self.attributes = @{ @"location": @"CA", @"semanticVersioning": @"1.2"}; - - // initialize SDK in one of these two ways: - // (1) asynchronous SDK initialization (RECOMMENDED) - // - fetch a JSON datafile from the server - // - network delay, but the local configuration is in sync with the server experiment settings - // (2) synchronous SDK initialization - // - initialize immediately with the given JSON datafile or its cached copy - // - no network delay, but the local copy is not guaranteed to be in sync with the server experiment settings - - [self initializeOptimizelySDKWithCustomization]; - return YES; -} - -// MARK: - Initialization Examples - --(void)initializeOptimizelySDKAsynchronous { - self.optimizely = [[OptimizelyClient alloc] initWithSdkKey:kOptimizelySdkKey - logger:nil - eventDispatcher:nil - userProfileService:nil - periodicDownloadInterval:@(5) - defaultLogLevel:OptimizelyLogLevelDebug]; - - [self.optimizely startWithCompletion:^(NSData *data, NSError *error) { - if (error == nil) { - NSLog(@"Optimizely SDK initialized successfully!"); - } else { - NSLog(@"Optimizely SDK initiliazation failed: %@", error.localizedDescription); - } - - [self startWithRootViewController]; - }]; -} - --(void)initializeOptimizelySDKSynchronous { - NSString *localDatafilePath = [[NSBundle mainBundle] pathForResource:kOptimizelyDatafileName ofType:@"json"]; - if (localDatafilePath == nil) { - NSAssert(false, @"Local datafile cannot be found"); - return; - } - - self.optimizely = [[OptimizelyClient alloc] initWithSdkKey:kOptimizelySdkKey]; - - NSString *datafileJSON = [NSString stringWithContentsOfFile:localDatafilePath encoding:NSUTF8StringEncoding error:nil]; - - if (datafileJSON == nil) { - NSLog(@"Invalid JSON format"); - } else { - NSError *error; - BOOL status = [self.optimizely startWithDatafile:datafileJSON error:&error]; - if (status) { - NSLog(@"Optimizely SDK initialized successfully!"); - } else { - NSLog(@"Optimizely SDK initiliazation failed: %@", error.localizedDescription); - } - } - - [self startWithRootViewController]; -} - --(void)initializeOptimizelySDKWithCustomization { - // customization example (optional) - - // You can enable background datafile polling by setting periodicDownloadInterval (polling is disabled by default) - // 60 sec interval may be too frequent. This is for demo purpose. (You can set this to nil to use the recommended value of 600 secs). - NSNumber *downloadIntervalInSecs = @(60); - - // You can turn off event batching with 0 timerInterval (this means that events are sent out immediately to the server instead of saving in the local queue for batching) - DefaultEventDispatcher *eventDispatcher = [[DefaultEventDispatcher alloc] initWithBatchSize:10 - timerInterval:0 - maxQueueSize:1000]; - - // customize logger - CustomLogger *customLogger = [[CustomLogger alloc] init]; - - self.optimizely = [[OptimizelyClient alloc] initWithSdkKey:kOptimizelySdkKey - logger:customLogger - eventDispatcher:eventDispatcher - userProfileService:nil - periodicDownloadInterval:downloadIntervalInSecs - defaultLogLevel:OptimizelyLogLevelDebug]; - - [self addNotificationListeners]; - - [self.optimizely startWithCompletion:^(NSData *data, NSError *error) { - if (error == nil) { - NSLog(@"Optimizely SDK initialized successfully!"); - } else { - NSLog(@"Optimizely SDK initiliazation failed: %@", error.localizedDescription); - } - - [self startWithRootViewController]; - - // For sample codes for APIs, see "Samples/SamplesForAPI.swift" - //[SamplesForAPI checkOptimizelyConfig:self.optimizely]; - //[SamplesForAPI checkOptimizelyUserContext:self.optimizely]; - }]; -} - --(void)addNotificationListeners { - NSNumber *notifId; - notifId = [self.optimizely.notificationCenter addDecisionNotificationListenerWithDecisionListener:^(NSString *type, - NSString *userId, - NSDictionary *attributes, - NSDictionary *decisionInfo) { - NSLog(@"Received decision notification: %@ %@ %@ %@", type, userId, attributes, decisionInfo); - }]; - - notifId = [self.optimizely.notificationCenter addTrackNotificationListenerWithTrackListener:^(NSString *eventKey, - NSString *userId, - NSDictionary *attributes, NSDictionary *eventTags, NSDictionary *event) { - NSLog(@"Received track notification: %@ %@ %@ %@ %@", eventKey, userId, attributes, eventTags, event); - - }]; - - notifId = [self.optimizely.notificationCenter addLogEventNotificationListenerWithLogEventListener:^(NSString *url, - NSDictionary *event) { - NSLog(@"Received logEvent notification: %@ %@", url, event); - }]; -} - - -// MARK: - ViewControl - --(void)startWithRootViewController { - dispatch_async(dispatch_get_main_queue(), ^{ - // For sample codes for other APIs, see "Samples/SamplesForAPI.m" - - self.user = [self.optimizely createUserContextWithUserId:self.userId - attributes:self.attributes]; - - OptimizelyDecision *decision = [self.user decideWithKey:kOptimizelyFeatureKey - options:@[@(OptimizelyDecideOptionIncludeReasons)]]; - - if (decision.variationKey != nil) { - [self openVariationViewWithVariationKey:decision.variationKey]; - } else { - NSLog(@"Optimizely SDK activation failed: %@", decision.reasons); - [self openFailureView]; - } - }); -} - --(void)openVariationViewWithVariationKey:(nullable NSString*)variationKey { - VariationViewController *variationViewController = [self.storyboard instantiateViewControllerWithIdentifier: @"VariationViewController"]; - - variationViewController.optimizely = self.optimizely; - variationViewController.userId = self.userId; - variationViewController.variationKey = variationKey; - variationViewController.eventKey = kOptimizelyEventKey; - - self.window.rootViewController = variationViewController; -} - --(void)openFailureView { - self.window.rootViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"FailureViewController"]; -} - --(UIStoryboard*)storyboard { -#if TARGET_OS_IOS - return [UIStoryboard storyboardWithName:@"iOSMain" bundle:nil]; -#else - return [UIStoryboard storyboardWithName:@"tvOSMain" bundle:nil]; -#endif -} - -// MARK: - AppDelegate - -- (void)applicationWillResignActive:(UIApplication *)application { -} - -- (void)applicationDidEnterBackground:(UIApplication *)application { -} - -- (void)applicationWillEnterForeground:(UIApplication *)application { -} - -- (void)applicationDidBecomeActive:(UIApplication *)application { -} - -- (void)applicationWillTerminate:(UIApplication *)application { -} - -@end diff --git a/DemoObjCApp/Customization/CustomLogger.h b/DemoObjCApp/Customization/CustomLogger.h deleted file mode 100644 index 33ee15c97..000000000 --- a/DemoObjCApp/Customization/CustomLogger.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// Copyright 2019, 2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import -@import Optimizely; - -NS_ASSUME_NONNULL_BEGIN - -@protocol OPTLogger; - -@interface CustomLogger : NSObject -+ (enum OptimizelyLogLevel)logLevel; -+ (void)setLogLevel:(enum OptimizelyLogLevel)value; -- (nonnull instancetype)init; -- (void)logWithLevel:(enum OptimizelyLogLevel)level message:(NSString *)message; -@end - -NS_ASSUME_NONNULL_END diff --git a/DemoObjCApp/Customization/CustomLogger.m b/DemoObjCApp/Customization/CustomLogger.m deleted file mode 100644 index 8f99b4de0..000000000 --- a/DemoObjCApp/Customization/CustomLogger.m +++ /dev/null @@ -1,45 +0,0 @@ -// -// Copyright 2019, 2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "CustomLogger.h" -@import Optimizely; - -@implementation CustomLogger - --(instancetype)init { - self = [super init]; - if (self != nil) { - // - } - - return self; -} - -- (void)logWithLevel:(enum OptimizelyLogLevel)level message:(NSString * _Nonnull)message { - if (level <= CustomLogger.logLevel) { - NSLog(@"🐱 - [\(level.name)] Kitty - %@", message); - } -} - -static enum OptimizelyLogLevel logLevel = OptimizelyLogLevelInfo; -+(enum OptimizelyLogLevel)logLevel { - return logLevel; -} -+(void)setLogLevel:(enum OptimizelyLogLevel)value { - logLevel = value; -} - -@end diff --git a/DemoObjCApp/DemoObjcApp.xcodeproj/project.pbxproj b/DemoObjCApp/DemoObjcApp.xcodeproj/project.pbxproj deleted file mode 100644 index c062c9ae6..000000000 --- a/DemoObjCApp/DemoObjcApp.xcodeproj/project.pbxproj +++ /dev/null @@ -1,957 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 2EDC4E2400B5EEBA576A62F5 /* Pods_DemoObjciOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E74A6F66A7FA658F00BDB921 /* Pods_DemoObjciOS.framework */; }; - 6E4D300E22C5459E00062EB3 /* Optimizely.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4D2FF722C5457F00062EB3 /* Optimizely.framework */; }; - 6E4D300F22C5459E00062EB3 /* Optimizely.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4D2FF722C5457F00062EB3 /* Optimizely.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 6E4D301222C545A400062EB3 /* Optimizely.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4D2FF922C5457F00062EB3 /* Optimizely.framework */; }; - 6E4D301322C545A400062EB3 /* Optimizely.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4D2FF922C5457F00062EB3 /* Optimizely.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 6E4DD7F721E51E5500B0C2C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EF7499F21E404BC008B22A0 /* main.m */; }; - 6E4DD7F821E51E5600B0C2C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EF7499F21E404BC008B22A0 /* main.m */; }; - 6E96817C21EEA321009B7FEC /* tvOSMain.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E96817421EEA321009B7FEC /* tvOSMain.storyboard */; }; - 6E96817F21EEA321009B7FEC /* iOSMain.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E96817821EEA321009B7FEC /* iOSMain.storyboard */; }; - 6E9681AB21EEA3D8009B7FEC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E9681A321EEA3D8009B7FEC /* Assets.xcassets */; }; - 6E9681AC21EEA3D8009B7FEC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E9681A521EEA3D8009B7FEC /* Assets.xcassets */; }; - 6E9681AE21EEA3D8009B7FEC /* Roboto-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6E9681A721EEA3D8009B7FEC /* Roboto-Medium.ttf */; }; - 6E9681AF21EEA3D8009B7FEC /* Roboto-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6E9681A721EEA3D8009B7FEC /* Roboto-Medium.ttf */; }; - 6E9681B021EEA3D8009B7FEC /* demoTestDatafile.json in Resources */ = {isa = PBXBuildFile; fileRef = 6E9681A821EEA3D8009B7FEC /* demoTestDatafile.json */; }; - 6E9681B121EEA3D8009B7FEC /* demoTestDatafile.json in Resources */ = {isa = PBXBuildFile; fileRef = 6E9681A821EEA3D8009B7FEC /* demoTestDatafile.json */; }; - 6E9681B221EEA3D8009B7FEC /* ProximaNova-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 6E9681A921EEA3D8009B7FEC /* ProximaNova-Regular.otf */; }; - 6E9681B321EEA3D8009B7FEC /* ProximaNova-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 6E9681A921EEA3D8009B7FEC /* ProximaNova-Regular.otf */; }; - 6E9681BA21EEB361009B7FEC /* VariationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EB8456521EE5DE3005346CC /* VariationViewController.m */; }; - 6E9681BD21EEB364009B7FEC /* VariationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EB8456521EE5DE3005346CC /* VariationViewController.m */; }; - 6E9681D821EFA5B2009B7FEC /* CustomLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E9681D721EFA5B2009B7FEC /* CustomLogger.m */; }; - 6E9681D921EFA5B2009B7FEC /* CustomLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E9681D721EFA5B2009B7FEC /* CustomLogger.m */; }; - 6EB8456B21EE5DE3005346CC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EB8456421EE5DE3005346CC /* AppDelegate.m */; }; - 6EB8456C21EE5DE3005346CC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EB8456421EE5DE3005346CC /* AppDelegate.m */; }; - 6EFA3206227CD55E006FA572 /* SamplesForAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EFA3205227CD55E006FA572 /* SamplesForAPI.m */; }; - 6EFA3207227CD55E006FA572 /* SamplesForAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EFA3205227CD55E006FA572 /* SamplesForAPI.m */; }; - A0C60F82A88EDB74234D7D3F /* Pods_DemoObjctvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48C9592909E0CF5074F9A84D /* Pods_DemoObjctvOS.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 6E4D2FF622C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6EBAEB6C21E3FEF800D13AA9; - remoteInfo = "OptimizelySwiftSDK-iOS"; - }; - 6E4D2FF822C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6E614DCD21E3F389005982A1; - remoteInfo = "OptimizelySwiftSDK-tvOS"; - }; - 6E4D2FFA22C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6EBAEB7421E3FEF900D13AA9; - remoteInfo = "OptimizelyTests-iOS"; - }; - 6E4D2FFC22C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6EA4256A2218E60A00B074B5; - remoteInfo = "OptimizelyTests-Common-iOS"; - }; - 6E4D2FFE22C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6E636B8C2236C91F00AF3CEF; - remoteInfo = "OptimizelyTests-APIs-iOS"; - }; - 6E4D300022C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6EA425792218E61E00B074B5; - remoteInfo = "OptimizelyTests-DataModel-iOS"; - }; - 6E4D300222C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6EA4265B2219242100B074B5; - remoteInfo = "OptimizelyTests-Others-iOS"; - }; - 6E4D300422C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6E636B9B2236C96700AF3CEF; - remoteInfo = "OptimizelyTests-Legacy-iOS"; - }; - 6E4D300622C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6E614DD521E3F38A005982A1; - remoteInfo = "OptimizelyTests-tvOS"; - }; - 6E4D300822C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6EA425082218E41500B074B5; - remoteInfo = "OptimizelyTests-Common-tvOS"; - }; - 6E4D300A22C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6EA4255B2218E58400B074B5; - remoteInfo = "OptimizelyTests-DataModel-tvOS"; - }; - 6E4D300C22C5457F00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6EA4266A2219243D00B074B5; - remoteInfo = "OptimizelyTests-Others-tvOS"; - }; - 6E4D301022C5459E00062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 6EBAEB6B21E3FEF800D13AA9; - remoteInfo = "OptimizelySwiftSDK-iOS"; - }; - 6E4D301422C545A400062EB3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 6E614DCC21E3F389005982A1; - remoteInfo = "OptimizelySwiftSDK-tvOS"; - }; - 6E8A3D2A26373B3F00DAEA13 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6E424C3C263249620081004A; - remoteInfo = "OptimizelyTests-MultiClients-iOS"; - }; - 6EAAB6D42602892A00294B8A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 75C719BB25E4519B0084187E; - remoteInfo = "OptimizelySwiftSDK-watchOS"; - }; - 6EF41A992523D23E00EAADF1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = BD6485812491474500F30986; - remoteInfo = "OptimizelySwiftSDK-macOS"; - }; - 6EF41A9B2523D23E00EAADF1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6E14CD632423F80B00010234; - remoteInfo = "OptimizelyTests-Batch-iOS"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 6ECDA22D22C53A7800DD2CB0 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 6E4D300F22C5459E00062EB3 /* Optimizely.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - 6ECDA23122C53A8500DD2CB0 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 6E4D301322C545A400062EB3 /* Optimizely.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 3EFD1578D8AB431E6FD4B8FE /* Pods-DemoObjctvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DemoObjctvOS.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-DemoObjctvOS/Pods-DemoObjctvOS.debug.xcconfig"; sourceTree = ""; }; - 48C9592909E0CF5074F9A84D /* Pods_DemoObjctvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DemoObjctvOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = OptimizelySwiftSDK.xcodeproj; path = ../OptimizelySwiftSDK.xcodeproj; sourceTree = ""; }; - 6E96817521EEA321009B7FEC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/tvOSMain.storyboard; sourceTree = ""; }; - 6E96817621EEA321009B7FEC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6E96817921EEA321009B7FEC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/iOSMain.storyboard; sourceTree = ""; }; - 6E96817A21EEA321009B7FEC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6E9681A321EEA3D8009B7FEC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 6E9681A521EEA3D8009B7FEC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 6E9681A721EEA3D8009B7FEC /* Roboto-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Medium.ttf"; sourceTree = ""; }; - 6E9681A821EEA3D8009B7FEC /* demoTestDatafile.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = demoTestDatafile.json; sourceTree = ""; }; - 6E9681A921EEA3D8009B7FEC /* ProximaNova-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ProximaNova-Regular.otf"; sourceTree = ""; }; - 6E9681D421EFA5B2009B7FEC /* CustomLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomLogger.h; sourceTree = ""; }; - 6E9681D721EFA5B2009B7FEC /* CustomLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomLogger.m; sourceTree = ""; }; - 6EB8456421EE5DE3005346CC /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 6EB8456521EE5DE3005346CC /* VariationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VariationViewController.m; sourceTree = ""; }; - 6EB8456621EE5DE3005346CC /* VariationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VariationViewController.h; sourceTree = ""; }; - 6EB8456A21EE5DE3005346CC /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 6EF7498E21E404BB008B22A0 /* DemoObjciOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DemoObjciOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 6EF7499F21E404BC008B22A0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 6EF749A821E404D6008B22A0 /* DemoObjctvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DemoObjctvOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 6EFA3204227CD55E006FA572 /* SamplesForAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SamplesForAPI.h; sourceTree = ""; }; - 6EFA3205227CD55E006FA572 /* SamplesForAPI.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SamplesForAPI.m; sourceTree = ""; }; - 762D1F9E4AA702083D17C4C9 /* Pods-DemoObjciOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DemoObjciOS.release.xcconfig"; path = "../Pods/Target Support Files/Pods-DemoObjciOS/Pods-DemoObjciOS.release.xcconfig"; sourceTree = ""; }; - D47F5FC88600AFD4E656D50A /* Pods-DemoObjciOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DemoObjciOS.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-DemoObjciOS/Pods-DemoObjciOS.debug.xcconfig"; sourceTree = ""; }; - D58542E1B5771327083E56E2 /* Pods-DemoObjctvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DemoObjctvOS.release.xcconfig"; path = "../Pods/Target Support Files/Pods-DemoObjctvOS/Pods-DemoObjctvOS.release.xcconfig"; sourceTree = ""; }; - E74A6F66A7FA658F00BDB921 /* Pods_DemoObjciOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DemoObjciOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 6EF7498B21E404BB008B22A0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6E4D300E22C5459E00062EB3 /* Optimizely.framework in Frameworks */, - 2EDC4E2400B5EEBA576A62F5 /* Pods_DemoObjciOS.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF749A521E404D6008B22A0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6E4D301222C545A400062EB3 /* Optimizely.framework in Frameworks */, - A0C60F82A88EDB74234D7D3F /* Pods_DemoObjctvOS.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 6E4D2FE822C5457F00062EB3 /* Products */ = { - isa = PBXGroup; - children = ( - 6E4D2FF722C5457F00062EB3 /* Optimizely.framework */, - 6E4D2FF922C5457F00062EB3 /* Optimizely.framework */, - 6EF41A9A2523D23E00EAADF1 /* Optimizely.framework */, - 6EAAB6D52602892A00294B8A /* Optimizely.framework */, - 6E4D2FFB22C5457F00062EB3 /* OptimizelyTests-iOS.xctest */, - 6E4D2FFD22C5457F00062EB3 /* OptimizelyTests-Common-iOS.xctest */, - 6E8A3D2B26373B3F00DAEA13 /* OptimizelyTests-MultiClients-iOS.xctest */, - 6EF41A9C2523D23E00EAADF1 /* OptimizelyTests-Batch-iOS.xctest */, - 6E4D2FFF22C5457F00062EB3 /* OptimizelyTests-APIs-iOS.xctest */, - 6E4D300122C5457F00062EB3 /* OptimizelyTests-DataModel-iOS.xctest */, - 6E4D300322C5457F00062EB3 /* OptimizelyTests-Others-iOS.xctest */, - 6E4D300522C5457F00062EB3 /* OptimizelyTests-Legacy-iOS.xctest */, - 6E4D300722C5457F00062EB3 /* OptimizelyTests-tvOS.xctest */, - 6E4D300922C5457F00062EB3 /* OptimizelyTests-Common-tvOS.xctest */, - 6E4D300B22C5457F00062EB3 /* OptimizelyTests-DataModel-tvOS.xctest */, - 6E4D300D22C5457F00062EB3 /* OptimizelyTests-Others-tvOS.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 6E96812021EE957B009B7FEC /* Customization */ = { - isa = PBXGroup; - children = ( - 6E9681D421EFA5B2009B7FEC /* CustomLogger.h */, - 6E9681D721EFA5B2009B7FEC /* CustomLogger.m */, - ); - path = Customization; - sourceTree = ""; - }; - 6E96817321EEA321009B7FEC /* DemoObjctvOS */ = { - isa = PBXGroup; - children = ( - 6E96817421EEA321009B7FEC /* tvOSMain.storyboard */, - 6E96817621EEA321009B7FEC /* Info.plist */, - ); - path = DemoObjctvOS; - sourceTree = ""; - }; - 6E96817721EEA321009B7FEC /* DemoObjciOS */ = { - isa = PBXGroup; - children = ( - 6E96817821EEA321009B7FEC /* iOSMain.storyboard */, - 6E96817A21EEA321009B7FEC /* Info.plist */, - ); - path = DemoObjciOS; - sourceTree = ""; - }; - 6E9681A121EEA3D8009B7FEC /* SharedResources */ = { - isa = PBXGroup; - children = ( - 6E9681A421EEA3D8009B7FEC /* DemoSwiftiOS */, - 6E9681A221EEA3D8009B7FEC /* DemoSwifttvOS */, - 6E9681A621EEA3D8009B7FEC /* Resources */, - ); - name = SharedResources; - path = ../DemoSwiftApp/SharedResources; - sourceTree = ""; - }; - 6E9681A221EEA3D8009B7FEC /* DemoSwifttvOS */ = { - isa = PBXGroup; - children = ( - 6E9681A321EEA3D8009B7FEC /* Assets.xcassets */, - ); - path = DemoSwifttvOS; - sourceTree = ""; - }; - 6E9681A421EEA3D8009B7FEC /* DemoSwiftiOS */ = { - isa = PBXGroup; - children = ( - 6E9681A521EEA3D8009B7FEC /* Assets.xcassets */, - ); - path = DemoSwiftiOS; - sourceTree = ""; - }; - 6E9681A621EEA3D8009B7FEC /* Resources */ = { - isa = PBXGroup; - children = ( - 6E9681A821EEA3D8009B7FEC /* demoTestDatafile.json */, - 6E9681A721EEA3D8009B7FEC /* Roboto-Medium.ttf */, - 6E9681A921EEA3D8009B7FEC /* ProximaNova-Regular.otf */, - ); - path = Resources; - sourceTree = ""; - }; - 6EF7496621E40467008B22A0 = { - isa = PBXGroup; - children = ( - 6EB8456A21EE5DE3005346CC /* AppDelegate.h */, - 6EB8456421EE5DE3005346CC /* AppDelegate.m */, - 6EB8456621EE5DE3005346CC /* VariationViewController.h */, - 6EB8456521EE5DE3005346CC /* VariationViewController.m */, - 6E96812021EE957B009B7FEC /* Customization */, - 6EFA322A227CDDF0006FA572 /* Samples */, - 6E96817721EEA321009B7FEC /* DemoObjciOS */, - 6E96817321EEA321009B7FEC /* DemoObjctvOS */, - 6E9681A121EEA3D8009B7FEC /* SharedResources */, - 6EF7499F21E404BC008B22A0 /* main.m */, - 6EF7497021E40467008B22A0 /* Products */, - EC8D1C27EBC6923BEA837213 /* Pods */, - E4F9C3F25D5A22985B6E41CD /* Frameworks */, - ); - sourceTree = ""; - }; - 6EF7497021E40467008B22A0 /* Products */ = { - isa = PBXGroup; - children = ( - 6EF7498E21E404BB008B22A0 /* DemoObjciOS.app */, - 6EF749A821E404D6008B22A0 /* DemoObjctvOS.app */, - ); - name = Products; - sourceTree = ""; - }; - 6EFA322A227CDDF0006FA572 /* Samples */ = { - isa = PBXGroup; - children = ( - 6EFA3204227CD55E006FA572 /* SamplesForAPI.h */, - 6EFA3205227CD55E006FA572 /* SamplesForAPI.m */, - ); - path = Samples; - sourceTree = ""; - }; - E4F9C3F25D5A22985B6E41CD /* Frameworks */ = { - isa = PBXGroup; - children = ( - 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */, - E74A6F66A7FA658F00BDB921 /* Pods_DemoObjciOS.framework */, - 48C9592909E0CF5074F9A84D /* Pods_DemoObjctvOS.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - EC8D1C27EBC6923BEA837213 /* Pods */ = { - isa = PBXGroup; - children = ( - 3EFD1578D8AB431E6FD4B8FE /* Pods-DemoObjctvOS.debug.xcconfig */, - D58542E1B5771327083E56E2 /* Pods-DemoObjctvOS.release.xcconfig */, - D47F5FC88600AFD4E656D50A /* Pods-DemoObjciOS.debug.xcconfig */, - 762D1F9E4AA702083D17C4C9 /* Pods-DemoObjciOS.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 6EF7498D21E404BB008B22A0 /* DemoObjciOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6EF749A321E404BC008B22A0 /* Build configuration list for PBXNativeTarget "DemoObjciOS" */; - buildPhases = ( - 2F1B7311527875610A091577 /* [CP] Check Pods Manifest.lock */, - 6EF7498A21E404BB008B22A0 /* Sources */, - 6EF7498B21E404BB008B22A0 /* Frameworks */, - 6EF7498C21E404BB008B22A0 /* Resources */, - 6ECDA22D22C53A7800DD2CB0 /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 6E4D301122C5459E00062EB3 /* PBXTargetDependency */, - ); - name = DemoObjciOS; - productName = DemoObjcAppiOS; - productReference = 6EF7498E21E404BB008B22A0 /* DemoObjciOS.app */; - productType = "com.apple.product-type.application"; - }; - 6EF749A721E404D6008B22A0 /* DemoObjctvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6EF749B821E404D7008B22A0 /* Build configuration list for PBXNativeTarget "DemoObjctvOS" */; - buildPhases = ( - 50156C3313666B2B516DE355 /* [CP] Check Pods Manifest.lock */, - 6EF749A421E404D6008B22A0 /* Sources */, - 6EF749A521E404D6008B22A0 /* Frameworks */, - 6EF749A621E404D6008B22A0 /* Resources */, - 6ECDA23122C53A8500DD2CB0 /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 6E4D301522C545A400062EB3 /* PBXTargetDependency */, - ); - name = DemoObjctvOS; - productName = DemoObjcApptvOS; - productReference = 6EF749A821E404D6008B22A0 /* DemoObjctvOS.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 6EF7496721E40467008B22A0 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1340; - ORGANIZATIONNAME = Optimizely; - TargetAttributes = { - 6EF7498D21E404BB008B22A0 = { - CreatedOnToolsVersion = 10.1; - SystemCapabilities = { - com.apple.BackgroundModes = { - enabled = 0; - }; - }; - }; - 6EF749A721E404D6008B22A0 = { - CreatedOnToolsVersion = 10.1; - }; - }; - }; - buildConfigurationList = 6EF7496A21E40467008B22A0 /* Build configuration list for PBXProject "DemoObjcApp" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 6EF7496621E40467008B22A0; - productRefGroup = 6EF7497021E40467008B22A0 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 6E4D2FE822C5457F00062EB3 /* Products */; - ProjectRef = 6E4D2FE722C5457F00062EB3 /* OptimizelySwiftSDK.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 6EF7498D21E404BB008B22A0 /* DemoObjciOS */, - 6EF749A721E404D6008B22A0 /* DemoObjctvOS */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 6E4D2FF722C5457F00062EB3 /* Optimizely.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Optimizely.framework; - remoteRef = 6E4D2FF622C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D2FF922C5457F00062EB3 /* Optimizely.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Optimizely.framework; - remoteRef = 6E4D2FF822C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D2FFB22C5457F00062EB3 /* OptimizelyTests-iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-iOS.xctest"; - remoteRef = 6E4D2FFA22C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D2FFD22C5457F00062EB3 /* OptimizelyTests-Common-iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-Common-iOS.xctest"; - remoteRef = 6E4D2FFC22C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D2FFF22C5457F00062EB3 /* OptimizelyTests-APIs-iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-APIs-iOS.xctest"; - remoteRef = 6E4D2FFE22C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D300122C5457F00062EB3 /* OptimizelyTests-DataModel-iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-DataModel-iOS.xctest"; - remoteRef = 6E4D300022C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D300322C5457F00062EB3 /* OptimizelyTests-Others-iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-Others-iOS.xctest"; - remoteRef = 6E4D300222C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D300522C5457F00062EB3 /* OptimizelyTests-Legacy-iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-Legacy-iOS.xctest"; - remoteRef = 6E4D300422C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D300722C5457F00062EB3 /* OptimizelyTests-tvOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-tvOS.xctest"; - remoteRef = 6E4D300622C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D300922C5457F00062EB3 /* OptimizelyTests-Common-tvOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-Common-tvOS.xctest"; - remoteRef = 6E4D300822C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D300B22C5457F00062EB3 /* OptimizelyTests-DataModel-tvOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-DataModel-tvOS.xctest"; - remoteRef = 6E4D300A22C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E4D300D22C5457F00062EB3 /* OptimizelyTests-Others-tvOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-Others-tvOS.xctest"; - remoteRef = 6E4D300C22C5457F00062EB3 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E8A3D2B26373B3F00DAEA13 /* OptimizelyTests-MultiClients-iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-MultiClients-iOS.xctest"; - remoteRef = 6E8A3D2A26373B3F00DAEA13 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6EAAB6D52602892A00294B8A /* Optimizely.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Optimizely.framework; - remoteRef = 6EAAB6D42602892A00294B8A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6EF41A9A2523D23E00EAADF1 /* Optimizely.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Optimizely.framework; - remoteRef = 6EF41A992523D23E00EAADF1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6EF41A9C2523D23E00EAADF1 /* OptimizelyTests-Batch-iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "OptimizelyTests-Batch-iOS.xctest"; - remoteRef = 6EF41A9B2523D23E00EAADF1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 6EF7498C21E404BB008B22A0 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6E96817F21EEA321009B7FEC /* iOSMain.storyboard in Resources */, - 6E9681B221EEA3D8009B7FEC /* ProximaNova-Regular.otf in Resources */, - 6E9681AE21EEA3D8009B7FEC /* Roboto-Medium.ttf in Resources */, - 6E9681B021EEA3D8009B7FEC /* demoTestDatafile.json in Resources */, - 6E9681AC21EEA3D8009B7FEC /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF749A621E404D6008B22A0 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6E9681B321EEA3D8009B7FEC /* ProximaNova-Regular.otf in Resources */, - 6E9681AF21EEA3D8009B7FEC /* Roboto-Medium.ttf in Resources */, - 6E9681B121EEA3D8009B7FEC /* demoTestDatafile.json in Resources */, - 6E96817C21EEA321009B7FEC /* tvOSMain.storyboard in Resources */, - 6E9681AB21EEA3D8009B7FEC /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 2F1B7311527875610A091577 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-DemoObjciOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 50156C3313666B2B516DE355 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-DemoObjctvOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 6EF7498A21E404BB008B22A0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6E9681BA21EEB361009B7FEC /* VariationViewController.m in Sources */, - 6EB8456B21EE5DE3005346CC /* AppDelegate.m in Sources */, - 6E9681D821EFA5B2009B7FEC /* CustomLogger.m in Sources */, - 6EFA3206227CD55E006FA572 /* SamplesForAPI.m in Sources */, - 6E4DD7F721E51E5500B0C2C7 /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF749A421E404D6008B22A0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6E9681BD21EEB364009B7FEC /* VariationViewController.m in Sources */, - 6EB8456C21EE5DE3005346CC /* AppDelegate.m in Sources */, - 6E9681D921EFA5B2009B7FEC /* CustomLogger.m in Sources */, - 6EFA3207227CD55E006FA572 /* SamplesForAPI.m in Sources */, - 6E4DD7F821E51E5600B0C2C7 /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 6E4D301122C5459E00062EB3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "OptimizelySwiftSDK-iOS"; - targetProxy = 6E4D301022C5459E00062EB3 /* PBXContainerItemProxy */; - }; - 6E4D301522C545A400062EB3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "OptimizelySwiftSDK-tvOS"; - targetProxy = 6E4D301422C545A400062EB3 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 6E96817421EEA321009B7FEC /* tvOSMain.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 6E96817521EEA321009B7FEC /* Base */, - ); - name = tvOSMain.storyboard; - sourceTree = ""; - }; - 6E96817821EEA321009B7FEC /* iOSMain.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 6E96817921EEA321009B7FEC /* Base */, - ); - name = iOSMain.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 6EF7498321E40468008B22A0 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 10.0; - }; - name = Debug; - }; - 6EF7498421E40468008B22A0 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 10.0; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 6EF749A121E404BC008B22A0 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D47F5FC88600AFD4E656D50A /* Pods-DemoObjciOS.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = ""; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = ../DemoSwiftApp/DemoSwiftiOS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.optimizely.DemoObjciOS; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 6EF749A221E404BC008B22A0 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 762D1F9E4AA702083D17C4C9 /* Pods-DemoObjciOS.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = ""; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = ../DemoSwiftApp/DemoSwiftiOS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.optimizely.DemoObjciOS; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 6EF749B921E404D7008B22A0 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3EFD1578D8AB431E6FD4B8FE /* Pods-DemoObjctvOS.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = ""; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = ../DemoSwiftApp/DemoSwifttvOS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.optimizely.DemoObjctvOS; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - 6EF749BA21E404D7008B22A0 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D58542E1B5771327083E56E2 /* Pods-DemoObjctvOS.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = ""; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = ../DemoSwiftApp/DemoSwifttvOS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.optimizely.DemoObjctvOS; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 6EF7496A21E40467008B22A0 /* Build configuration list for PBXProject "DemoObjcApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6EF7498321E40468008B22A0 /* Debug */, - 6EF7498421E40468008B22A0 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 6EF749A321E404BC008B22A0 /* Build configuration list for PBXNativeTarget "DemoObjciOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6EF749A121E404BC008B22A0 /* Debug */, - 6EF749A221E404BC008B22A0 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 6EF749B821E404D7008B22A0 /* Build configuration list for PBXNativeTarget "DemoObjctvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6EF749B921E404D7008B22A0 /* Debug */, - 6EF749BA21E404D7008B22A0 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 6EF7496721E40467008B22A0 /* Project object */; -} diff --git a/DemoObjCApp/DemoObjcApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/DemoObjCApp/DemoObjcApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index b07efd25f..000000000 --- a/DemoObjCApp/DemoObjcApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/DemoObjCApp/DemoObjcApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/DemoObjCApp/DemoObjcApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/DemoObjCApp/DemoObjcApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/DemoObjCApp/DemoObjcApp.xcodeproj/xcshareddata/xcschemes/DemoObjciOS.xcscheme b/DemoObjCApp/DemoObjcApp.xcodeproj/xcshareddata/xcschemes/DemoObjciOS.xcscheme deleted file mode 100644 index 073514af5..000000000 --- a/DemoObjCApp/DemoObjcApp.xcodeproj/xcshareddata/xcschemes/DemoObjciOS.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DemoObjCApp/DemoObjcApp.xcodeproj/xcshareddata/xcschemes/DemoObjctvOS.xcscheme b/DemoObjCApp/DemoObjcApp.xcodeproj/xcshareddata/xcschemes/DemoObjctvOS.xcscheme deleted file mode 100644 index 96b6339e1..000000000 --- a/DemoObjCApp/DemoObjcApp.xcodeproj/xcshareddata/xcschemes/DemoObjctvOS.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DemoObjCApp/DemoObjciOS/Base.lproj/iOSMain.storyboard b/DemoObjCApp/DemoObjciOS/Base.lproj/iOSMain.storyboard deleted file mode 100644 index c5e5be578..000000000 --- a/DemoObjCApp/DemoObjciOS/Base.lproj/iOSMain.storyboard +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - - ProximaNova-Regular - - - Roboto-Medium - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DemoObjCApp/DemoObjciOS/Info.plist b/DemoObjCApp/DemoObjciOS/Info.plist deleted file mode 100644 index 356b99a60..000000000 --- a/DemoObjCApp/DemoObjciOS/Info.plist +++ /dev/null @@ -1,54 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 3 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - UIBackgroundModes - - fetch - - UILaunchStoryboardName - iOSMain - UIMainStoryboardFile - iOSMain - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/DemoObjCApp/DemoObjctvOS/Base.lproj/tvOSMain.storyboard b/DemoObjCApp/DemoObjctvOS/Base.lproj/tvOSMain.storyboard deleted file mode 100644 index 4a96eaed5..000000000 --- a/DemoObjCApp/DemoObjctvOS/Base.lproj/tvOSMain.storyboard +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - ProximaNova-Regular - - - Roboto-Medium - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DemoObjCApp/DemoObjctvOS/Info.plist b/DemoObjCApp/DemoObjctvOS/Info.plist deleted file mode 100644 index 817fa87f7..000000000 --- a/DemoObjCApp/DemoObjctvOS/Info.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UIBackgroundModes - - fetch - - UIMainStoryboardFile - tvOSMain - UIRequiredDeviceCapabilities - - arm64 - - UIUserInterfaceStyle - Automatic - - diff --git a/DemoObjCApp/Samples/SamplesForAPI.h b/DemoObjCApp/Samples/SamplesForAPI.h deleted file mode 100644 index 47b83f8f4..000000000 --- a/DemoObjCApp/Samples/SamplesForAPI.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// Copyright 2019, 2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class OptimizelyClient; - -@interface SamplesForAPI: NSObject -+(void)checkAPIs:(OptimizelyClient*)optimizely; -+(void)checkOptimizelyConfig:(OptimizelyClient*)optimizely; -+(void)checkOptimizelyUserContext:(OptimizelyClient*)optimizely; -@end - -NS_ASSUME_NONNULL_END diff --git a/DemoObjCApp/Samples/SamplesForAPI.m b/DemoObjCApp/Samples/SamplesForAPI.m deleted file mode 100644 index 7b918772e..000000000 --- a/DemoObjCApp/Samples/SamplesForAPI.m +++ /dev/null @@ -1,256 +0,0 @@ -// -// Copyright 2019, 2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "SamplesForAPI.h" -@import Optimizely; - -@implementation SamplesForAPI - -+(void)checkAPIs:(OptimizelyClient*)optimizely { - NSDictionary *attributes = @{ - @"device": @"iPhone", - @"lifetime": @24738388, - @"is_logged_in": @true - }; - - NSDictionary *tags = @{ - @"category" : @"shoes", - @"count": @5 - }; - - // MARK: - activate - - { - NSError *error = nil; - NSString *variationKey = [optimizely activateWithExperimentKey:@"my_experiment_key" - userId:@"user_123" - attributes:attributes - error:&error]; - if (variationKey == nil) { - NSLog(@"Error: %@", error); - } else { - NSLog(@"[activate] %@", variationKey); - } - } - - // MARK: - getVariationKey - - { - NSError *error = nil; - NSString *variationKey = [optimizely getVariationKeyWithExperimentKey:@"my_experiment_key" - userId:@"user_123" - attributes:attributes - error:&error]; - if (variationKey == nil) { - NSLog(@"Error: %@", error); - } else { - NSLog(@"[getVariationKey] %@", variationKey); - } - } - - // MARK: - getForcedVariation - - { - NSString *variationKey = [optimizely getForcedVariationWithExperimentKey:@"my_experiment_key" - userId:@"user_123"]; - NSLog(@"[getForcedVariation] %@", variationKey); - } - - // MARK: - setForcedVariation - - { - BOOL result = [optimizely setForcedVariationWithExperimentKey:@"my_experiment_key" - userId:@"user_123" - variationKey:@"some_variation_key"]; - NSLog(@"[setForcedVariation] %d", result); - } - - // MARK: - isFeatureEnabled - - { - BOOL enabled = [optimizely isFeatureEnabledWithFeatureKey:@"my_feature_key" - userId:@"user_123" - attributes:attributes]; - - NSLog(@"[isFeatureEnabled] %@", enabled ? @"YES": @"NO"); - } - - // MARK: - getFeatureVariable - - { - NSError *error = nil; - NSNumber *featureVariableValue = [optimizely getFeatureVariableDoubleWithFeatureKey:@"my_feature_key" - variableKey:@"double_variable_key" - userId:@"user_123" - attributes:attributes - error:&error]; - if (featureVariableValue == nil) { - NSLog(@"Error: %@", error); - } else { - NSLog(@"[getFeatureVariableDouble] %@", featureVariableValue); - } - } - - // MARK: - getEnabledFeatures - - { - NSArray *enabledFeatures = [optimizely getEnabledFeaturesWithUserId:@"user_123" - attributes:attributes]; - NSLog(@"[getEnabledFeatures] %@", enabledFeatures); - } - - // MARK: - track - - { - NSError *error = nil; - BOOL success = [optimizely trackWithEventKey:@"my_purchase_event_key" - userId:@"user_123" - attributes:attributes - eventTags:tags - error:&error]; - if (success == false) { - NSLog(@"Error: %@", error); - } else { - NSLog(@"[track]"); - } - } -} - -// MARK: - OptimizelyUserContext - -+(void)checkOptimizelyUserContext:(OptimizelyClient*)optimizely { - NSDictionary *attributes = @{ - @"location": @"NY", - @"device": @"iPhone", - @"lifetime": @24738388, - @"is_logged_in": @true - }; - - NSDictionary *tags = @{ - @"category" : @"shoes", - @"count": @5 - }; - - OptimizelyUserContext *user = [optimizely createUserContextWithUserId:@"user_123" attributes:attributes]; - - OptimizelyDecision *decision = [user decideWithKey:@"show_coupon" options:@[@(OptimizelyDecideOptionIncludeReasons)]]; - - if (decision.variationKey != nil) { - NSLog(@"[decide] flag decision to variation: %@", decision.variationKey); - NSLog(@"[decide] flag enabled: %d with variables: %@)", decision.enabled, [decision.variables toMap]); - NSLog(@"[decide] reasons: %@", decision.reasons); - } else { - NSLog(@"[decide] error: %@", decision.reasons); - } - - NSError *error = nil; - BOOL success = [user trackEventWithEventKey:@"my_purchase_event_key" - eventTags:tags - error:&error]; - if (success) { - NSLog(@"Error: %@", error); - NSLog(@"[track] success"); - } else { - NSLog(@"[decide] error: %@", error.localizedDescription); - } -} - -// MARK: - OptimizelyConfig - -+(void)checkOptimizelyConfig:(OptimizelyClient*)optimizely { - NSError *error = nil; - id optConfig = [optimizely getOptimizelyConfigWithError:&error]; - if (optConfig == nil) { - NSLog(@"Error: %@", error); - return; - } - - // enumerate all experiments (variations, and associated variables) - - NSDictionary> *experimentsMap = optConfig.experimentsMap; - //NSArray* experiments = experimentsMap.allValues; - NSArray* experimentKeys = experimentsMap.allKeys; - NSLog(@"[OptimizelyConfig] all experiment keys = %@)", experimentKeys); - - for(NSString *expKey in experimentKeys) { - NSLog(@"[OptimizelyConfig] experimentKey = %@", expKey); - - NSDictionary> *variationsMap = experimentsMap[expKey].variationsMap; - NSArray *variationKeys = variationsMap.allKeys; - - for(NSString *varKey in variationKeys) { - NSLog(@"[OptimizelyConfig] - variationKey = %@", varKey); - - NSDictionary> *variablesMap = variationsMap[varKey].variablesMap; - NSArray *variableKeys = variablesMap.allKeys; - - for(NSString *variableKey in variableKeys) { - id variable = variablesMap[variableKey]; - - NSLog(@"[OptimizelyConfig] -- variable: \%@, %@", variableKey, variable); - } - } - } - - // enumerate all features (experiments, variations, and assocated variables) - - NSDictionary> *featuresMap = optConfig.featuresMap; - //NSArray* features = featuresMap.allValues; - NSArray* featureKeys = featuresMap.allKeys; - NSLog(@"[OptimizelyConfig] all experiment keys = %@)", featureKeys); - - for(NSString *featKey in featureKeys) { - NSLog(@"[OptimizelyConfig] featureKey = %@", featKey); - - // enumerate feature experiments - - NSArray *experiments = featuresMap[featKey].experimentRules; - - for(id exp in experiments) { - NSLog(@"[OptimizelyConfig] - experimentKey = %@", exp.key); - - NSDictionary> *variationsMap = exp.variationsMap; - NSArray *variationKeys = variationsMap.allKeys; - - for(NSString *varKey in variationKeys) { - NSLog(@"[OptimizelyConfig] -- variationKey = %@", varKey); - - NSDictionary> *variablesMap = variationsMap[varKey].variablesMap; - NSArray *variableKeys = variablesMap.allKeys; - - for(NSString *variableKey in variableKeys) { - id variable = variablesMap[variableKey]; - - NSLog(@"[OptimizelyConfig] --- variable: %@, %@", variableKey, variable); - } - } - } - - // enumerate all feature-variables - - NSDictionary> *variablesMap = featuresMap[featKey].variablesMap; - NSArray *variableKeys = variablesMap.allKeys; - - for(NSString *variableKey in variableKeys) { - id variable = variablesMap[variableKey]; - - NSLog(@"[OptimizelyConfig] -- variable: \%@, %@", variableKey, variable); - } - } - -} - -@end diff --git a/DemoObjCApp/VariationViewController.h b/DemoObjCApp/VariationViewController.h deleted file mode 100644 index 2494fa8e6..000000000 --- a/DemoObjCApp/VariationViewController.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// Copyright 2019, 2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -@class OptimizelyClient; - -@interface VariationViewController : UIViewController -@property(nullable, nonatomic, strong) OptimizelyClient *optimizely; -@property(nonnull, nonatomic, strong) NSString *eventKey; -@property(nonnull, nonatomic, strong) NSString *variationKey; -@property(nonnull, nonatomic, strong) NSString *userId; - -@end diff --git a/DemoObjCApp/VariationViewController.m b/DemoObjCApp/VariationViewController.m deleted file mode 100644 index 2afe5669f..000000000 --- a/DemoObjCApp/VariationViewController.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// Copyright 2019, 2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "VariationViewController.h" -@import Optimizely; - -@interface VariationViewController () -@property (weak, nonatomic) IBOutlet UILabel *variationLetterLabel; -@property (weak, nonatomic) IBOutlet UILabel *variationSubheaderLabel; -@property (weak, nonatomic) IBOutlet UIImageView *variationBackgroundImage; -@end - -@implementation VariationViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - - if ([self.variationKey isEqualToString:@"variation_a"]) { - self.variationLetterLabel.text = @"A"; - self.variationLetterLabel.textColor = [UIColor blackColor]; - self.variationSubheaderLabel.textColor = [UIColor blackColor]; - self.variationBackgroundImage.image = [UIImage imageNamed:@"background_variA"]; - } else { - self.variationLetterLabel.text = @"B"; - self.variationLetterLabel.textColor = [UIColor whiteColor]; - self.variationSubheaderLabel.textColor = [UIColor whiteColor]; - self.variationBackgroundImage.image = [UIImage imageNamed:@"background_variB-marina"]; - } -} - -- (IBAction)unwindToVariationAction:(UIStoryboardSegue *)segue { - -} - -- (IBAction)attemptTrackAndShowSuccessOrFailure:(id)sender { - NSError *error; - - BOOL status = [self.optimizely trackWithEventKey:self.eventKey userId:self.userId attributes:nil eventTags:nil error:&error]; - - if (status) { - [self performSegueWithIdentifier:@"ConversionSuccessSegue" sender:self]; - } else { - [self performSegueWithIdentifier:@"ConversionFailureSegue" sender:self]; - } -} - - -@end diff --git a/DemoObjCApp/main.m b/DemoObjCApp/main.m deleted file mode 100644 index c3492605d..000000000 --- a/DemoObjCApp/main.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright 2019, 2021, Optimizely, Inc. and contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/OptimizelySwiftSDK.xcodeproj/project.pbxproj b/OptimizelySwiftSDK.xcodeproj/project.pbxproj index cdb9485e1..7aba56bd3 100644 --- a/OptimizelySwiftSDK.xcodeproj/project.pbxproj +++ b/OptimizelySwiftSDK.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ 0B97DDA4249D4A27003DE606 /* SemanticVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B97DD93249D327F003DE606 /* SemanticVersion.swift */; }; 0B97DDA5249D4A28003DE606 /* SemanticVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B97DD93249D327F003DE606 /* SemanticVersion.swift */; }; 0BAB9B0122567E34000DC388 /* (null) in Sources */ = {isa = PBXBuildFile; }; - 3D8E460B7007B5B46630E046 /* libPods-OptimizelyTests-Common-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BBBAD25A1207AF13647873E /* libPods-OptimizelyTests-Common-tvOS.a */; }; 6E0207A8272A11CF008C3711 /* NetworkReachabilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0207A7272A11CF008C3711 /* NetworkReachabilityTests.swift */; }; 6E0207A9272A11CF008C3711 /* NetworkReachabilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0207A7272A11CF008C3711 /* NetworkReachabilityTests.swift */; }; 6E0A72D426C5B9AE00FF92B5 /* OptimizelyUserContextTests_ForcedDecisions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0A72D326C5B9AE00FF92B5 /* OptimizelyUserContextTests_ForcedDecisions.swift */; }; @@ -1752,7 +1751,6 @@ 75C71A4525E454460084187E /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E75167222C520D400B2B157 /* Utils.swift */; }; 75C71A4625E454460084187E /* SDKVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E75167322C520D400B2B157 /* SDKVersion.swift */; }; 75C71C3925E45A2B0084187E /* WatchBackgroundNotifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C71C3825E45A2B0084187E /* WatchBackgroundNotifier.swift */; }; - 7B4A4C11E9A503E68F2FCC69 /* libPods-OptimizelyTests-Common-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33BE1D8564FE425132F728C0 /* libPods-OptimizelyTests-Common-iOS.a */; }; 8428D3D02807337400D0FB0C /* LruCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8428D3CF2807337400D0FB0C /* LruCacheTests.swift */; }; 8428D3D12807337400D0FB0C /* LruCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8428D3CF2807337400D0FB0C /* LruCacheTests.swift */; }; 84518B1F287665020023F104 /* OptimizelyClientTests_ODP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84518B1E287665020023F104 /* OptimizelyClientTests_ODP.swift */; }; @@ -2363,12 +2361,6 @@ /* Begin PBXFileReference section */ 0B97DD93249D327F003DE606 /* SemanticVersion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SemanticVersion.swift; sourceTree = ""; }; 0B97DD96249D332C003DE606 /* SemanticVersionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SemanticVersionTests.swift; sourceTree = ""; }; - 1BBBAD25A1207AF13647873E /* libPods-OptimizelyTests-Common-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OptimizelyTests-Common-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 33BE1D8564FE425132F728C0 /* libPods-OptimizelyTests-Common-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OptimizelyTests-Common-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 38128F75B12FAAEAA393A591 /* Pods-OptimizelyTests-Common-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OptimizelyTests-Common-iOS.debug.xcconfig"; path = "Target Support Files/Pods-OptimizelyTests-Common-iOS/Pods-OptimizelyTests-Common-iOS.debug.xcconfig"; sourceTree = ""; }; - 456ABB3BBED880347915C4E4 /* Pods-OptimizelyTests-Common-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OptimizelyTests-Common-tvOS.release.xcconfig"; path = "Target Support Files/Pods-OptimizelyTests-Common-tvOS/Pods-OptimizelyTests-Common-tvOS.release.xcconfig"; sourceTree = ""; }; - 5151BD9C826F9B112DC548AB /* Pods-OptimizelyTests-Common-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OptimizelyTests-Common-iOS.release.xcconfig"; path = "Target Support Files/Pods-OptimizelyTests-Common-iOS/Pods-OptimizelyTests-Common-iOS.release.xcconfig"; sourceTree = ""; }; - 5F38B9FBC88543893307E7F4 /* Pods-OptimizelyTests-Common-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OptimizelyTests-Common-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-OptimizelyTests-Common-tvOS/Pods-OptimizelyTests-Common-tvOS.debug.xcconfig"; sourceTree = ""; }; 6E0207A7272A11CF008C3711 /* NetworkReachabilityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkReachabilityTests.swift; sourceTree = ""; }; 6E0A72D326C5B9AE00FF92B5 /* OptimizelyUserContextTests_ForcedDecisions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OptimizelyUserContextTests_ForcedDecisions.swift; sourceTree = ""; }; 6E14CD632423F80B00010234 /* OptimizelyTests-Batch-iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "OptimizelyTests-Batch-iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2716,7 +2708,6 @@ buildActionMask = 2147483647; files = ( 6EA4250D2218E41600B074B5 /* Optimizely.framework in Frameworks */, - 3D8E460B7007B5B46630E046 /* libPods-OptimizelyTests-Common-tvOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2733,7 +2724,6 @@ buildActionMask = 2147483647; files = ( 6EA4256F2218E60A00B074B5 /* Optimizely.framework in Frameworks */, - 7B4A4C11E9A503E68F2FCC69 /* libPods-OptimizelyTests-Common-iOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2822,10 +2812,6 @@ 5793E12CFD024A5E8594F535 /* Pods */ = { isa = PBXGroup; children = ( - 38128F75B12FAAEAA393A591 /* Pods-OptimizelyTests-Common-iOS.debug.xcconfig */, - 5151BD9C826F9B112DC548AB /* Pods-OptimizelyTests-Common-iOS.release.xcconfig */, - 5F38B9FBC88543893307E7F4 /* Pods-OptimizelyTests-Common-tvOS.debug.xcconfig */, - 456ABB3BBED880347915C4E4 /* Pods-OptimizelyTests-Common-tvOS.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -3355,8 +3341,6 @@ 87DE4DE091B80D1F13BBD781 /* Frameworks */ = { isa = PBXGroup; children = ( - 33BE1D8564FE425132F728C0 /* libPods-OptimizelyTests-Common-iOS.a */, - 1BBBAD25A1207AF13647873E /* libPods-OptimizelyTests-Common-tvOS.a */, ); name = Frameworks; sourceTree = ""; @@ -3521,7 +3505,6 @@ isa = PBXNativeTarget; buildConfigurationList = 6EA425102218E41600B074B5 /* Build configuration list for PBXNativeTarget "OptimizelyTests-Common-tvOS" */; buildPhases = ( - 33D3D2C9558EA5257B6D8688 /* [CP] Check Pods Manifest.lock */, 6EA425042218E41500B074B5 /* Sources */, 6EA425052218E41500B074B5 /* Frameworks */, 6EA425062218E41500B074B5 /* Resources */, @@ -3558,7 +3541,6 @@ isa = PBXNativeTarget; buildConfigurationList = 6EA425722218E60A00B074B5 /* Build configuration list for PBXNativeTarget "OptimizelyTests-Common-iOS" */; buildPhases = ( - D2C9B1643DC58DD75D98A52F /* [CP] Check Pods Manifest.lock */, 6EA425662218E60A00B074B5 /* Sources */, 6EA425672218E60A00B074B5 /* Frameworks */, 6EA425682218E60A00B074B5 /* Resources */, @@ -4329,51 +4311,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 33D3D2C9558EA5257B6D8688 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-OptimizelyTests-Common-tvOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - D2C9B1643DC58DD75D98A52F /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-OptimizelyTests-Common-iOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -6767,7 +6704,6 @@ }; 6EA425112218E41600B074B5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5F38B9FBC88543893307E7F4 /* Pods-OptimizelyTests-Common-tvOS.debug.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = Tests/Info.plist; @@ -6788,7 +6724,6 @@ }; 6EA425122218E41600B074B5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 456ABB3BBED880347915C4E4 /* Pods-OptimizelyTests-Common-tvOS.release.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = Tests/Info.plist; @@ -6849,7 +6784,6 @@ }; 6EA425732218E60A00B074B5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 38128F75B12FAAEAA393A591 /* Pods-OptimizelyTests-Common-iOS.debug.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = Tests/Info.plist; @@ -6869,7 +6803,6 @@ }; 6EA425742218E60A00B074B5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5151BD9C826F9B112DC548AB /* Pods-OptimizelyTests-Common-iOS.release.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = Tests/Info.plist; diff --git a/OptimizelySwiftSDK.xcworkspace/contents.xcworkspacedata b/OptimizelySwiftSDK.xcworkspace/contents.xcworkspacedata index b79c4cf7a..9fd401440 100644 --- a/OptimizelySwiftSDK.xcworkspace/contents.xcworkspacedata +++ b/OptimizelySwiftSDK.xcworkspace/contents.xcworkspacedata @@ -4,10 +4,7 @@ - - - -#import @import Optimizely; +@interface SpyEventDispatcher : NSObject +@property(nonatomic) XCTestExpectation *dispatchExpectation; +@end + +@implementation SpyEventDispatcher +- (void)dispatchEventWithEvent:(EventForDispatch *)event completionHandler:(void (^)(enum OptimizelyResult))completionHandler { + [self.dispatchExpectation fulfill]; +} +- (void)flushEvents {} +- (void)close {} +@end + static NSString * const kUserId = @"tester"; static NSString * const kSdkKey = @"12345"; static NSString * datafile; @@ -194,31 +205,25 @@ - (void)testDecide_defaultOptions { // MARK: - legacy APIs with UserContext - (void)testTrackWithUserContext { - id mockEventDispatcher = [self injectMockEventDispatcher]; - OCMExpect([mockEventDispatcher dispatchEventWithEvent:[OCMArg isNotNil] - completionHandler:nil]); + XCTestExpectation *expectation = [self expectationWithDescription:@"event dispatched"]; + SpyEventDispatcher *spy = [[SpyEventDispatcher alloc] init]; + spy.dispatchExpectation = expectation; - OptimizelyUserContext *user = [self.optimizely createUserContextWithUserId:kUserId attributes:@{@"gender": @"f"}]; - - NSError *error = nil; - BOOL status = [user trackEventWithEventKey:@"event1" eventTags:nil error:&error]; - - XCTAssertTrue(status); - OCMVerifyAllWithDelay(mockEventDispatcher, 1.0); // event-dispatch non-blocking -} - -// MARK: - Utils - -- (id)injectMockEventDispatcher { - id mockEventDispatcher = OCMClassMock([DefaultEventDispatcher class]); self.optimizely = [[OptimizelyClient alloc] initWithSdkKey:[NSString stringWithFormat:@"%d", arc4random()] logger:nil - eventDispatcher:mockEventDispatcher + eventDispatcher:spy userProfileService:nil periodicDownloadInterval:0 defaultLogLevel:OptimizelyLogLevelDebug]; [self.optimizely startWithDatafile:datafile error:nil]; - return mockEventDispatcher; + + OptimizelyUserContext *user = [self.optimizely createUserContextWithUserId:kUserId attributes:@{@"gender": @"f"}]; + + NSError *error = nil; + BOOL status = [user trackEventWithEventKey:@"event1" eventTags:nil error:&error]; + + XCTAssertTrue(status); + [self waitForExpectationsWithTimeout:1.0 handler:nil]; } @end