Skip to content

Commit

Permalink
Version 2.10.0 (#125)
Browse files Browse the repository at this point in the history
* Support for specifying private user attributes in order to prevent user attributes from being sent in analytics events back to LaunchDarkly
  • Loading branch information
arun251 authored Feb 2, 2018
1 parent 19a0c7f commit 1a07be6
Show file tree
Hide file tree
Showing 35 changed files with 1,073 additions and 233 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

All notable changes to the LaunchDarkly iOS SDK will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org).

## [2.10.0] - 2018-02-01
### Added
- Support for specifying [private user attributes](https://docs.launchdarkly.com/docs/private-user-attributes) in order to prevent user attributes from being sent in analytics events back to LaunchDarkly. See the `allUserAttributesPrivate` and `privateUserAttributes` properties of `LDConfig` as well as the `privateAttributes` property of `LDUserBuilder`.

## [2.9.1] - 2017-12-05
### Fixed
- Carthage builds no longer crash due to a missing DarklyEventSource library.
Expand Down
36 changes: 36 additions & 0 deletions Darkly.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,19 @@
83889B1C1F8F28AB00A4EF69 /* NSURLResponse+Unauthorized.m in Sources */ = {isa = PBXBuildFile; fileRef = 83889B161F8F28AB00A4EF69 /* NSURLResponse+Unauthorized.m */; };
83889B1D1F8F28AB00A4EF69 /* NSURLResponse+Unauthorized.m in Sources */ = {isa = PBXBuildFile; fileRef = 83889B161F8F28AB00A4EF69 /* NSURLResponse+Unauthorized.m */; };
83889B1E1F8F28AB00A4EF69 /* NSURLResponse+Unauthorized.m in Sources */ = {isa = PBXBuildFile; fileRef = 83889B161F8F28AB00A4EF69 /* NSURLResponse+Unauthorized.m */; };
839956E820053081009707D1 /* LDUserModel+Testable.m in Sources */ = {isa = PBXBuildFile; fileRef = 839956E720053081009707D1 /* LDUserModel+Testable.m */; };
839D6D271FD1B57B000BE6BD /* DarklyEventSource.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 839D6D261FD1B57B000BE6BD /* DarklyEventSource.framework */; };
839D6D291FD1B58E000BE6BD /* DarklyEventSource.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 839D6D281FD1B58E000BE6BD /* DarklyEventSource.framework */; };
83B8C24C1FEB1CD20082B8A9 /* LDUserModel+Stub.m in Sources */ = {isa = PBXBuildFile; fileRef = 83B8C24B1FEB1CD20082B8A9 /* LDUserModel+Stub.m */; };
83B8C24F1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B8C24D1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h */; };
83B8C2501FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B8C24D1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h */; };
83B8C2511FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B8C24D1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h */; };
83B8C2521FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B8C24D1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h */; };
83B8C2531FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 83B8C24E1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m */; };
83B8C2541FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 83B8C24E1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m */; };
83B8C2551FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 83B8C24E1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m */; };
83B8C2561FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 83B8C24E1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m */; };
83B8C2581FEC4C3B0082B8A9 /* userStubFlags.json in Resources */ = {isa = PBXBuildFile; fileRef = 83B8C2571FEC4C3B0082B8A9 /* userStubFlags.json */; };
83B975D31FD1CA6000A4EF4E /* DarklyEventSource.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83B975D21FD1CA6000A4EF4E /* DarklyEventSource.framework */; };
83EF67811F979B4100403126 /* LDEvent+Unauthorized.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EF677F1F979B4100403126 /* LDEvent+Unauthorized.h */; };
83EF67821F979B4100403126 /* LDEvent+Unauthorized.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EF677F1F979B4100403126 /* LDEvent+Unauthorized.h */; };
Expand Down Expand Up @@ -338,8 +349,15 @@
83889B131F8E93A100A4EF69 /* LDEvent+Testable.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "LDEvent+Testable.m"; sourceTree = "<group>"; };
83889B151F8F28AB00A4EF69 /* NSURLResponse+Unauthorized.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSURLResponse+Unauthorized.h"; sourceTree = "<group>"; };
83889B161F8F28AB00A4EF69 /* NSURLResponse+Unauthorized.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSURLResponse+Unauthorized.m"; sourceTree = "<group>"; };
839956E620053081009707D1 /* LDUserModel+Testable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LDUserModel+Testable.h"; sourceTree = "<group>"; };
839956E720053081009707D1 /* LDUserModel+Testable.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "LDUserModel+Testable.m"; sourceTree = "<group>"; };
839D6D261FD1B57B000BE6BD /* DarklyEventSource.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DarklyEventSource.framework; path = Carthage/Build/watchOS/DarklyEventSource.framework; sourceTree = "<group>"; };
839D6D281FD1B58E000BE6BD /* DarklyEventSource.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DarklyEventSource.framework; path = Carthage/Build/tvOS/DarklyEventSource.framework; sourceTree = "<group>"; };
83B8C24A1FEB1CD20082B8A9 /* LDUserModel+Stub.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LDUserModel+Stub.h"; sourceTree = "<group>"; };
83B8C24B1FEB1CD20082B8A9 /* LDUserModel+Stub.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "LDUserModel+Stub.m"; sourceTree = "<group>"; };
83B8C24D1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSDateFormatter+LDUserModel.h"; sourceTree = "<group>"; };
83B8C24E1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSDateFormatter+LDUserModel.m"; sourceTree = "<group>"; };
83B8C2571FEC4C3B0082B8A9 /* userStubFlags.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = userStubFlags.json; sourceTree = "<group>"; };
83B975D21FD1CA6000A4EF4E /* DarklyEventSource.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DarklyEventSource.framework; path = Carthage/Build/Mac/DarklyEventSource.framework; sourceTree = "<group>"; };
83EF677F1F979B4100403126 /* LDEvent+Unauthorized.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LDEvent+Unauthorized.h"; sourceTree = "<group>"; };
83EF67801F979B4100403126 /* LDEvent+Unauthorized.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "LDEvent+Unauthorized.m"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -555,6 +573,7 @@
836947791F1FF80A0047697C /* dictionaryConfigIsADictionary-KeyC.json */,
836947811F20125F0047697C /* ldClientManagerTestConfigA.json */,
836947821F20125F0047697C /* ldClientManagerTestConfigB.json */,
83B8C2571FEC4C3B0082B8A9 /* userStubFlags.json */,
);
path = Fixtures;
sourceTree = "<group>";
Expand All @@ -568,6 +587,10 @@
8349F51D1F19352300B1F3DB /* NSDictionary+StringKey_Matchable.m */,
832C788B1F2977B800E334A2 /* NSString+RemoveWhitespace.h */,
832C788C1F2977B800E334A2 /* NSString+RemoveWhitespace.m */,
83B8C24A1FEB1CD20082B8A9 /* LDUserModel+Stub.h */,
83B8C24B1FEB1CD20082B8A9 /* LDUserModel+Stub.m */,
839956E620053081009707D1 /* LDUserModel+Testable.h */,
839956E720053081009707D1 /* LDUserModel+Testable.m */,
8349F51F1F195BCF00B1F3DB /* LDUserModel+Equatable.h */,
8349F5201F195BCF00B1F3DB /* LDUserModel+Equatable.m */,
832C788E1F2A8DF600E334A2 /* LDUserModel+JsonDecodeable.h */,
Expand Down Expand Up @@ -605,6 +628,8 @@
83F5B4771F95096A00174DF7 /* NSHTTPURLResponse+Unauthorized.m */,
83EF677F1F979B4100403126 /* LDEvent+Unauthorized.h */,
83EF67801F979B4100403126 /* LDEvent+Unauthorized.m */,
83B8C24D1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h */,
83B8C24E1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m */,
);
name = Categories;
sourceTree = "<group>";
Expand All @@ -631,6 +656,7 @@
690346F91E68990000E45133 /* LDClientManager.h in Headers */,
690346FF1E68990000E45133 /* LDFlagConfigModel.h in Headers */,
83EF67811F979B4100403126 /* LDEvent+Unauthorized.h in Headers */,
83B8C24F1FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h in Headers */,
690346F51E68990000E45133 /* DarklyConstants.h in Headers */,
690346FB1E68990000E45133 /* LDConfig.h in Headers */,
690347011E68990000E45133 /* LDPollingManager.h in Headers */,
Expand Down Expand Up @@ -658,6 +684,7 @@
69A87E9E1E74712800B88B23 /* LDClientManager.h in Headers */,
69A87EA41E74712800B88B23 /* LDFlagConfigModel.h in Headers */,
83EF67841F979B4100403126 /* LDEvent+Unauthorized.h in Headers */,
83B8C2521FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h in Headers */,
69A87E9A1E74712800B88B23 /* DarklyConstants.h in Headers */,
69A87EA01E74712800B88B23 /* LDConfig.h in Headers */,
69A87EA61E74712800B88B23 /* LDPollingManager.h in Headers */,
Expand Down Expand Up @@ -685,6 +712,7 @@
69BD7E1F1E6C79910056D70F /* LDClientManager.h in Headers */,
69BD7E251E6C79910056D70F /* LDFlagConfigModel.h in Headers */,
83EF67831F979B4100403126 /* LDEvent+Unauthorized.h in Headers */,
83B8C2511FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h in Headers */,
69BD7E1B1E6C79910056D70F /* DarklyConstants.h in Headers */,
69BD7E211E6C79910056D70F /* LDConfig.h in Headers */,
69BD7E271E6C79910056D70F /* LDPollingManager.h in Headers */,
Expand Down Expand Up @@ -712,6 +740,7 @@
69F3F6A11E6BF82C00079A09 /* LDPollingManager.h in Headers */,
69F3F6941E6BF80800079A09 /* LDDataManager.h in Headers */,
83EF67821F979B4100403126 /* LDEvent+Unauthorized.h in Headers */,
83B8C2501FEC19500082B8A9 /* NSDateFormatter+LDUserModel.h in Headers */,
69F3F6991E6BF82C00079A09 /* LDClientManager.h in Headers */,
69F3F6A51E6BF82C00079A09 /* LDUserBuilder.h in Headers */,
69F3F6A91E6BF82C00079A09 /* LDUtil.h in Headers */,
Expand Down Expand Up @@ -911,6 +940,7 @@
6903472F1E689B9F00E45133 /* feature_flags.json in Resources */,
836947631F1FEEB40047697C /* numberConfigIsANumber-2.json in Resources */,
8369475C1F1FED400047697C /* boolConfigIsABool-false.json in Resources */,
83B8C2581FEC4C3B0082B8A9 /* userStubFlags.json in Resources */,
836947831F20125F0047697C /* ldClientManagerTestConfigA.json in Resources */,
836947721F1FF45B0047697C /* arrayConfigIsAnArrayA-123.json in Resources */,
8369477C1F1FF80A0047697C /* dictionaryConfigIsADictionary-KeyA.json in Resources */,
Expand Down Expand Up @@ -1155,6 +1185,7 @@
83F5B47C1F95096A00174DF7 /* NSHTTPURLResponse+Unauthorized.m in Sources */,
690346F81E68990000E45133 /* LDClient.m in Sources */,
690346F61E68990000E45133 /* DarklyConstants.m in Sources */,
83B8C2531FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m in Sources */,
83EF67851F979B4100403126 /* LDEvent+Unauthorized.m in Sources */,
6903470E1E68990000E45133 /* NSDictionary+JSON.m in Sources */,
690347021E68990000E45133 /* LDPollingManager.m in Sources */,
Expand All @@ -1172,6 +1203,7 @@
files = (
83EF678D1F98FC9200403126 /* LDFlagConfigModel+Testable.m in Sources */,
8349F51E1F19352300B1F3DB /* NSDictionary+StringKey_Matchable.m in Sources */,
839956E820053081009707D1 /* LDUserModel+Testable.m in Sources */,
690347291E689B9F00E45133 /* LDEventModelTest.m in Sources */,
690347301E689B9F00E45133 /* LDConfigTest.m in Sources */,
690347261E689B9F00E45133 /* LDUserBuilderTest.m in Sources */,
Expand All @@ -1191,6 +1223,7 @@
83258A401F3244D0008C2133 /* LDUserBuilder+Testable.m in Sources */,
690347331E689B9F00E45133 /* NSArray+UnitTests.m in Sources */,
6903472C1E689B9F00E45133 /* LDClientTest.m in Sources */,
83B8C24C1FEB1CD20082B8A9 /* LDUserModel+Stub.m in Sources */,
832C78901F2A8DF600E334A2 /* LDUserModel+JsonDecodeable.m in Sources */,
8358F25A1F4202A300ECE1AF /* LDConfig+Testable.m in Sources */,
83F5B4751F91560300174DF7 /* LDDataManager+Testable.m in Sources */,
Expand All @@ -1211,6 +1244,7 @@
83F5B47F1F95096A00174DF7 /* NSHTTPURLResponse+Unauthorized.m in Sources */,
69A87EA51E74712800B88B23 /* LDFlagConfigModel.m in Sources */,
69A87EB11E74712800B88B23 /* NSDictionary+JSON.m in Sources */,
83B8C2561FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m in Sources */,
83EF67881F979B4100403126 /* LDEvent+Unauthorized.m in Sources */,
69A87EAF1E74712800B88B23 /* LDUtil.m in Sources */,
69A87EA71E74712800B88B23 /* LDPollingManager.m in Sources */,
Expand All @@ -1236,6 +1270,7 @@
83F5B47E1F95096A00174DF7 /* NSHTTPURLResponse+Unauthorized.m in Sources */,
69BD7E261E6C79910056D70F /* LDFlagConfigModel.m in Sources */,
69BD7E321E6C79910056D70F /* NSDictionary+JSON.m in Sources */,
83B8C2551FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m in Sources */,
83EF67871F979B4100403126 /* LDEvent+Unauthorized.m in Sources */,
69BD7E301E6C79910056D70F /* LDUtil.m in Sources */,
69BD7E281E6C79910056D70F /* LDPollingManager.m in Sources */,
Expand All @@ -1261,6 +1296,7 @@
83F5B47D1F95096A00174DF7 /* NSHTTPURLResponse+Unauthorized.m in Sources */,
69F3F6A01E6BF82C00079A09 /* LDFlagConfigModel.m in Sources */,
69F3F6AC1E6BF82C00079A09 /* NSDictionary+JSON.m in Sources */,
83B8C2541FEC19500082B8A9 /* NSDateFormatter+LDUserModel.m in Sources */,
83EF67861F979B4100403126 /* LDEvent+Unauthorized.m in Sources */,
69F3F6AA1E6BF82C00079A09 /* LDUtil.m in Sources */,
69F3F6A21E6BF82C00079A09 /* LDPollingManager.m in Sources */,
Expand Down
2 changes: 1 addition & 1 deletion Darkly/DarklyConstants.m
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

#import "DarklyConstants.h"

NSString * const kClientVersion = @"2.9.1";
NSString * const kClientVersion = @"2.10.0";
NSString * const kBaseUrl = @"https://app.launchdarkly.com";
NSString * const kEventsUrl = @"https://mobile.launchdarkly.com";
NSString * const kStreamUrl = @"https://clientstream.launchdarkly.com/mping";
Expand Down
15 changes: 7 additions & 8 deletions Darkly/LDClient.m
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ - (BOOL)boolVariation:(NSString *)featureKey fallback:(BOOL)fallback{
returnValue = [(NSNumber *)flagValue boolValue];
}

[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:[NSNumber numberWithBool:returnValue] defaultKeyValue:[NSNumber numberWithBool:fallback]];
[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:[NSNumber numberWithBool:returnValue] defaultKeyValue:[NSNumber numberWithBool:fallback] user:self.ldUser config:self.ldConfig];
return returnValue;
} else {
DEBUG_LOGX(@"LDClient not started yet!");
Expand All @@ -136,7 +136,7 @@ - (NSNumber*)numberVariation:(NSString *)featureKey fallback:(NSNumber*)fallback
returnValue = (NSNumber *)flagValue;
}

[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:returnValue defaultKeyValue:fallback];
[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:returnValue defaultKeyValue:fallback user:self.ldUser config:self.ldConfig];
return returnValue;
} else {
DEBUG_LOGX(@"LDClient not started yet!");
Expand All @@ -161,7 +161,7 @@ - (double)doubleVariation:(NSString *)featureKey fallback:(double)fallback {
returnValue = [((NSNumber *)flagValue) doubleValue];
}

[[LDDataManager sharedManager] createFeatureEvent:featureKey keyValue:[NSNumber numberWithDouble:returnValue] defaultKeyValue:[NSNumber numberWithDouble:fallback]];
[[LDDataManager sharedManager] createFeatureEvent:featureKey keyValue:[NSNumber numberWithDouble:returnValue] defaultKeyValue:[NSNumber numberWithDouble:fallback] user:self.ldUser config:self.ldConfig];
return returnValue;
}

Expand All @@ -179,7 +179,7 @@ - (NSString*)stringVariation:(NSString *)featureKey fallback:(NSString*)fallback
returnValue = (NSString *)flagValue;
}

[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:returnValue defaultKeyValue:fallback];
[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:returnValue defaultKeyValue:fallback user:self.ldUser config:self.ldConfig];
return returnValue;
} else {
DEBUG_LOGX(@"LDClient not started yet!");
Expand All @@ -204,7 +204,7 @@ - (NSArray*)arrayVariation:(NSString *)featureKey fallback:(NSArray*)fallback{
returnValue = (NSArray *)flagValue;
}

[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:returnValue defaultKeyValue:fallback];
[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:returnValue defaultKeyValue:fallback user:self.ldUser config:self.ldConfig];
return returnValue;
}

Expand All @@ -225,16 +225,15 @@ - (NSDictionary*)dictionaryVariation:(NSString *)featureKey fallback:(NSDictiona
returnValue = (NSDictionary *)flagValue;
}

[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:returnValue defaultKeyValue:fallback];
[[LDDataManager sharedManager] createFeatureEvent: featureKey keyValue:returnValue defaultKeyValue:fallback user:self.ldUser config:self.ldConfig];
return returnValue;
}

- (BOOL)track:(NSString *)eventName data:(NSDictionary *)dataDictionary
{
DEBUG_LOG(@"LDClient track method called for event=%@ and data=%@", eventName, dataDictionary);
if (self.clientStarted) {
[[LDDataManager sharedManager] createCustomEvent:eventName
withCustomValuesDictionary: dataDictionary];
[[LDDataManager sharedManager] createCustomEvent:eventName withCustomValuesDictionary: dataDictionary user:self.ldUser config:self.ldConfig];
return YES;
} else {
DEBUG_LOGX(@"LDClient not started yet!");
Expand Down
6 changes: 3 additions & 3 deletions Darkly/LDClientManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,9 @@ -(void)syncWithServerForEvents {

DEBUG_LOGX(@"ClientManager syncing events with server");

[[LDDataManager sharedManager] allEventsJsonArray:^(NSArray *array) {
if (array) {
[[LDRequestManager sharedInstance] performEventRequest:array];
[[LDDataManager sharedManager] allEventDictionaries:^(NSArray *eventDictionaries) {
if (eventDictionaries) {
[[LDRequestManager sharedInstance] performEventRequest:eventDictionaries];
} else {
DEBUG_LOGX(@"ClientManager has no events so won't sync events with server");
}
Expand Down
18 changes: 18 additions & 0 deletions Darkly/LDConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,24 @@
*/
@property (nonatomic) BOOL streaming;

/**
List of user attributes and top level custom dictionary keys to treat as private for event reporting.
Private attribute values will not be included in events reported to Launch Darkly, but the attribute name will still
be sent. All user attributes can be declared private except key, anonymous, device, & os. Access the user attribute names
that can be declared private through the identifiers included in LDUserModel.h. To declare all user attributes private,
either set privateUserAttributes to [LDUserModel allUserAttributes] or set LDConfig.allUserAttributesPrivate. In either case,
setting attributes to private in the config causes the LDClient to treat the attribute(s) as private for all users.
The default is nil.
*/
@property (nonatomic, strong, nullable) NSArray<NSString *>* privateUserAttributes;

/**
Flag that tells the LDClient to treat all user attributes as private for all users. When set, ignores any values in
either LDConfig.privateUserAttributes or LDUserModel.privateAttributes. The LDClient will not send any private attributes
in event reports as described for privateUserAttributes. The default is NO.
*/
@property (nonatomic, assign) BOOL allUserAttributesPrivate;

/**
Flag that enables REPORT HTTP method for feature flag requests. When useReport is false,
feature flag requests use the GET HTTP method. The default is NO.
Expand Down
Loading

0 comments on commit 1a07be6

Please sign in to comment.