Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 2.10.0 #125

Merged
merged 16 commits into from
Feb 2, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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