Skip to content

Commit c276a50

Browse files
committed
add more sample codes for Swift and ObjC
1 parent a0e8a0d commit c276a50

File tree

4 files changed

+132
-46
lines changed

4 files changed

+132
-46
lines changed

DemoObjCApp/AppDelegate.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ -(void)initializeOptimizelySDKWithCustomization {
161161

162162
-(void)startWithRootViewController {
163163
dispatch_async(dispatch_get_main_queue(), ^{
164+
// For sample codes for other APIs, see "Samples/SamplesForAPI.m"
165+
164166
NSError *error;
165167
NSString *variationKey = [self.optimizely activateWithExperimentKey:kOptimizelyExperimentKey
166168
userId:self.userId

DemoObjCApp/Samples/SamplesForAPI.m

Lines changed: 71 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121

2222
@implementation SamplesForAPI
2323

24-
+(void)run:(OptimizelyClient*)optimizely {
25-
NSString *variationKey;
26-
24+
+(void)run:(OptimizelyClient*)optimizely {
2725
NSDictionary *attributes = @{
2826
@"device": @"iPhone",
2927
@"lifetime": @24738388,
@@ -35,59 +33,113 @@ +(void)run:(OptimizelyClient*)optimizely {
3533
@"count": @5
3634
};
3735

36+
// MARK: - activate
37+
3838
{
39+
NSError *error = nil;
3940
NSString *variationKey = [optimizely activateWithExperimentKey:@"my_experiment_key"
4041
userId:@"user_123"
4142
attributes:attributes
42-
error:nil];
43-
NSLog(@"[activate] %@", variationKey);
43+
error:&error];
44+
if (variationKey == nil) {
45+
NSLog(@"Error: %@", error);
46+
} else {
47+
NSLog(@"[activate] %@", variationKey);
48+
}
4449
}
50+
51+
// MARK: - getVariationKey
52+
4553
{
54+
NSError *error = nil;
4655
NSString *variationKey = [optimizely getVariationKeyWithExperimentKey:@"my_experiment_key"
4756
userId:@"user_123"
4857
attributes:attributes
49-
error:nil];
50-
NSLog(@"[getVariationKey] %@", variationKey);
58+
error:&error];
59+
if (variationKey == nil) {
60+
NSLog(@"Error: %@", error);
61+
} else {
62+
NSLog(@"[getVariationKey] %@", variationKey);
63+
}
5164
}
65+
66+
// MARK: - getForcedVariation
67+
5268
{
5369
NSString *variationKey = [optimizely getForcedVariationWithExperimentKey:@"my_experiment_key"
5470
userId:@"user_123"];
5571
NSLog(@"[getForcedVariation] %@", variationKey);
5672
}
73+
74+
// MARK: - setForcedVariation
75+
5776
{
5877
BOOL result = [optimizely setForcedVariationWithExperimentKey:@"my_experiment_key"
5978
userId:@"user_123"
6079
variationKey:@"some_variation_key"];
6180
NSLog(@"[setForcedVariation] %d", result);
6281
}
82+
83+
// MARK: - isFeatureEnabled
84+
6385
{
86+
NSError *error = nil;
6487
NSNumber *enabled = [optimizely isFeatureEnabledWithFeatureKey:@"my_feature_key"
6588
userId:@"user_123"
6689
attributes:attributes
67-
error:nil];
68-
NSLog(@"[isFeatureEnabled] %@", enabled);
90+
error:&error];
91+
92+
if (enabled == nil) {
93+
NSLog(@"Error: %@", error);
94+
} else {
95+
NSLog(@"[isFeatureEnabled] %d", enabled.boolValue);
96+
}
6997
}
98+
99+
// MARK: - getFeatureVariable
100+
70101
{
102+
NSError *error = nil;
71103
NSNumber *featureVariableValue = [optimizely getFeatureVariableDoubleWithFeatureKey:@"my_feature_key"
72104
variableKey:@"double_variable_key"
73105
userId:@"user_123"
74106
attributes:attributes
75-
error:nil];
76-
NSLog(@"[getFeatureVariableDouble] %@", featureVariableValue);
107+
error:&error];
108+
if (featureVariableValue == nil) {
109+
NSLog(@"Error: %@", error);
110+
} else {
111+
NSLog(@"[getFeatureVariableDouble] %@", featureVariableValue);
112+
}
77113
}
114+
115+
// MARK: - getEnabledFeatures
116+
78117
{
118+
NSError *error = nil;
79119
NSArray *enabledFeatures = [optimizely getEnabledFeaturesWithUserId:@"user_123"
80120
attributes:attributes
81-
error:nil];
82-
NSLog(@"[getEnabledFeatures] %@", enabledFeatures);
121+
error:&error];
122+
if (enabledFeatures == nil) {
123+
NSLog(@"Error: %@", error);
124+
} else {
125+
NSLog(@"[getEnabledFeatures] %@", enabledFeatures);
126+
}
83127
}
128+
129+
// MARK: - track
130+
84131
{
85-
[optimizely trackWithEventKey:@"my_purchase_event_key"
86-
userId:@"user_123"
87-
attributes:attributes
88-
eventTags:tags
89-
error:nil];
90-
NSLog(@"[track]");
132+
NSError *error = nil;
133+
BOOL success = [optimizely trackWithEventKey:@"my_purchase_event_key"
134+
userId:@"user_123"
135+
attributes:attributes
136+
eventTags:tags
137+
error:&error];
138+
if (success == false) {
139+
NSLog(@"Error: %@", error);
140+
} else {
141+
NSLog(@"[track]");
142+
}
91143
}
92144

93145
}

DemoSwiftApp/AppDelegate.swift

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
7272
print("Optimizely SDK initialized successfully!")
7373
}
7474

75-
DispatchQueue.main.async {
76-
self.startWithRootViewController()
77-
}
75+
self.startWithRootViewController()
7876
}
7977
}
8078

@@ -163,26 +161,28 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
163161
print("Optimizely SDK initialized successfully!")
164162
}
165163

166-
DispatchQueue.main.async {
167-
self.startWithRootViewController()
168-
}
164+
self.startWithRootViewController()
169165
}
170166
}
171167

172168
// MARK: - ViewControl
173169

174170
func startWithRootViewController() {
175-
do {
176-
let variationKey = try optimizely.activate(experimentKey: experimentKey,
177-
userId: userId,
178-
attributes: attributes)
179-
openVariationView(variationKey: variationKey)
180-
} catch OptimizelyError.variationUnknown(userId, experimentKey) {
181-
print("Optimizely SDK activation cannot map this user to experiemnt")
182-
openVariationView(variationKey: nil)
183-
} catch {
184-
print("Optimizely SDK activation failed: \(error)")
185-
openFailureView()
171+
DispatchQueue.main.async {
172+
do {
173+
// For sample codes for other APIs, see "Samples/SamplesForAPI.swift"
174+
175+
let variationKey = try self.optimizely.activate(experimentKey: self.experimentKey,
176+
userId: self.userId,
177+
attributes: self.attributes)
178+
self.openVariationView(variationKey: variationKey)
179+
} catch OptimizelyError.variationUnknown(self.userId, self.experimentKey) {
180+
print("Optimizely SDK activation cannot map this user to experiemnt")
181+
self.openVariationView(variationKey: nil)
182+
} catch {
183+
print("Optimizely SDK activation failed: \(error)")
184+
self.openFailureView()
185+
}
186186
}
187187
}
188188

DemoSwiftApp/Samples/SamplesForAPI.swift

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,50 +33,82 @@ class SamplesForAPI {
3333
"count": 2,
3434
]
3535

36-
if let variationKey = try? optimizely.activate(experimentKey: "my_experiment_key",
36+
// MARK: - activate
37+
38+
do {
39+
let variationKey = try optimizely.activate(experimentKey: "my_experiment_key",
3740
userId: "user_123",
38-
attributes: attributes) {
41+
attributes: attributes)
3942
print("[activate] \(variationKey)")
43+
} catch {
44+
print(error)
4045
}
4146

42-
if let variationKey = try? optimizely.getVariationKey(experimentKey: "my_experiment_key",
47+
// MARK: - getVariationKey
48+
49+
do {
50+
let variationKey = try optimizely.getVariationKey(experimentKey: "my_experiment_key",
4351
userId: "user_123",
44-
attributes: attributes) {
52+
attributes: attributes)
4553
print("[getVariationKey] \(variationKey)")
54+
} catch {
55+
print(error)
4656
}
4757

58+
// MARK: - getForcedVariation
59+
4860
if let variationKey = optimizely.getForcedVariation(experimentKey: "my_experiment_key", userId: "user_123") {
4961
print("[getForcedVariation] \(variationKey)")
5062
}
5163

64+
// MARK: - setForcedVariation
65+
5266
if optimizely.setForcedVariation(experimentKey: "my_experiment_key",
5367
userId: "user_123",
5468
variationKey: "some_variation_key") {
5569
print("[setForcedVariation]")
5670
}
5771

72+
// MARK: - isFeatureEnabled
73+
5874
do {
5975
let enabled = try optimizely.isFeatureEnabled(featureKey: "my_feature_key",
6076
userId: "user_123",
6177
attributes: attributes)
6278
print("[isFeatureEnabled] \(enabled)")
6379
} catch {
64-
// error
80+
print(error)
6581
}
6682

67-
if let featureVariableValue = try? optimizely.getFeatureVariableDouble(featureKey: "my_feature_key",
83+
// MARK: - getFeatureVariable
84+
85+
do {
86+
let featureVariableValue = try optimizely.getFeatureVariableDouble(featureKey: "my_feature_key",
6887
variableKey: "double_variable_key",
6988
userId: "user_123",
70-
attributes: attributes) {
89+
attributes: attributes)
7190
print("[getFeatureVariableDouble] \(featureVariableValue)")
91+
} catch {
92+
print(error)
7293
}
7394

74-
if let enabledFeatures = try? optimizely.getEnabledFeatures(userId: "user_123", attributes: attributes) {
95+
// MARK: - getEnabledFeatures
96+
97+
do {
98+
let enabledFeatures = try optimizely.getEnabledFeatures(userId: "user_123", attributes: attributes)
7599
print("[getEnabledFeatures] \(enabledFeatures)")
100+
} catch {
101+
print(error)
76102
}
77103

78-
try? optimizely.track(eventKey: "my_purchase_event_key", userId: "user_123", attributes: attributes, eventTags: tags)
79-
print("[track]")
104+
// MARK: - track
105+
106+
do {
107+
try optimizely.track(eventKey: "my_purchase_event_key", userId: "user_123", attributes: attributes, eventTags: tags)
108+
print("[track]")
109+
} catch {
110+
print(error)
111+
}
80112
}
81113

82114

0 commit comments

Comments
 (0)