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

v4.11.3 #13

Merged
merged 5 commits into from
May 15, 2017
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
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
### Version 4.11.3 (15th May 2017)
#### Added
- **[iOS][AND]** Added check if `sdk_click` package response contains attribution information.
- **[iOS][AND]** Added sending of attributable parameters with every `sdk_click` package.

#### Changed
- **[iOS][AND]** Replaced `assert` level logs with `warn` level.

#### Native SDKs
- **[iOS]** [[email protected]][ios_sdk_v4.11.4]
- **[AND]** [[email protected]][android_sdk_v4.11.4]

---

### Version 4.11.2 (24th April 2017)
#### Added
- **[iOS]** Added nullability annotations to public headers for Swift 3.0 compatibility.
Expand Down Expand Up @@ -80,8 +94,10 @@
[ios_sdk_v4.10.3]: https://github.com/adjust/ios_sdk/tree/v4.10.3
[ios_sdk_v4.11.0]: https://github.com/adjust/ios_sdk/tree/v4.11.0
[ios_sdk_v4.11.3]: https://github.com/adjust/ios_sdk/tree/v4.11.3
[ios_sdk_v4.11.4]: https://github.com/adjust/ios_sdk/tree/v4.11.4

[android_sdk_v4.10.4]: https://github.com/adjust/android_sdk/tree/v4.10.4
[android_sdk_v4.11.0]: https://github.com/adjust/android_sdk/tree/v4.11.0
[android_sdk_v4.11.1]: https://github.com/adjust/android_sdk/tree/v4.11.1
[android_sdk_v4.11.3]: https://github.com/adjust/android_sdk/tree/v4.11.3
[android_sdk_v4.11.4]: https://github.com/adjust/android_sdk/tree/v4.11.4
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.11.2
4.11.3
Binary file modified android/libs/adjust-android.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion ext/Android/sdk
Submodule sdk updated 39 files
+2 −2 Adjust/adjust/build.gradle
+49 −6 Adjust/adjust/src/main/java/com/adjust/sdk/ActivityHandler.java
+8 −24 Adjust/adjust/src/main/java/com/adjust/sdk/AdjustConfig.java
+3 −3 Adjust/adjust/src/main/java/com/adjust/sdk/AdjustFactory.java
+21 −0 Adjust/adjust/src/main/java/com/adjust/sdk/AttributionHandler.java
+1 −1 Adjust/adjust/src/main/java/com/adjust/sdk/Constants.java
+2 −0 Adjust/adjust/src/main/java/com/adjust/sdk/IActivityHandler.java
+3 −1 Adjust/adjust/src/main/java/com/adjust/sdk/IAttributionHandler.java
+3 −2 Adjust/adjust/src/main/java/com/adjust/sdk/ILogger.java
+1 −1 Adjust/adjust/src/main/java/com/adjust/sdk/ISdkClickHandler.java
+37 −4 Adjust/adjust/src/main/java/com/adjust/sdk/Logger.java
+21 −9 Adjust/adjust/src/main/java/com/adjust/sdk/PackageBuilder.java
+3 −0 Adjust/adjust/src/main/java/com/adjust/sdk/ResponseData.java
+18 −4 Adjust/adjust/src/main/java/com/adjust/sdk/SdkClickHandler.java
+8 −0 Adjust/adjust/src/main/java/com/adjust/sdk/SdkClickResponseData.java
+1 −1 Adjust/build.gradle
+2 −2 Adjust/example/build.gradle
+1 −1 Adjust/pom.xml
+1 −1 Adjust/pom_criteo.xml
+1 −1 Adjust/pom_sociomantic.xml
+1 −1 Adjust/pom_trademob.xml
+6 −0 Adjust/test/src/androidTest/java/com/adjust/sdk/MockActivityHandler.java
+10 −2 Adjust/test/src/androidTest/java/com/adjust/sdk/MockAttributionHandler.java
+12 −3 Adjust/test/src/androidTest/java/com/adjust/sdk/MockLogger.java
+3 −1 Adjust/test/src/androidTest/java/com/adjust/sdk/MockSdkClickHandler.java
+256 −134 Adjust/test/src/androidTest/java/com/adjust/sdk/TestActivityHandler.java
+28 −3 Adjust/test/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java
+58 −1 Adjust/test/src/androidTest/java/com/adjust/sdk/TestAttributionHandler.java
+12 −7 Adjust/test/src/androidTest/java/com/adjust/sdk/TestSdkClickHandler.java
+10 −0 CHANGELOG.md
+6 −2 README.md
+1 −1 VERSION
+1 −1 doc/english/criteo_plugin.md
+1 −1 doc/english/migrate.md
+1 −1 doc/english/sociomantic_plugin.md
+1 −1 doc/english/trademob_plugin.md
+41 −0 doc/japanese/referrer_ja.md
+463 −0 doc/japanese/sociomantic_plugin_ja.md
+96 −0 doc/japanese/trademob_plugin_ja.md
2 changes: 1 addition & 1 deletion ext/iOS/sdk
Submodule sdk updated 44 files
+2 −2 Adjust.podspec
+179 −0 Adjust.xcodeproj/project.pbxproj
+1 −0 Adjust/ADJActivityHandler.h
+79 −24 Adjust/ADJActivityHandler.m
+2 −1 Adjust/ADJAdjustFactory.h
+4 −3 Adjust/ADJAdjustFactory.m
+2 −0 Adjust/ADJAttributionHandler.h
+16 −0 Adjust/ADJAttributionHandler.m
+11 −22 Adjust/ADJConfig.m
+2 −1 Adjust/ADJLogger.h
+18 −2 Adjust/ADJLogger.m
+2 −1 Adjust/ADJPackageBuilder.h
+25 −12 Adjust/ADJPackageBuilder.m
+3 −0 Adjust/ADJResponseData.h
+8 −0 Adjust/ADJResponseData.m
+5 −2 Adjust/ADJSdkClickHandler.h
+18 −5 Adjust/ADJSdkClickHandler.m
+1 −1 Adjust/ADJUtil.m
+1 −1 Adjust/Adjust.h
+17 −0 AdjustExampleTests/AppDelegate.h
+51 −0 AdjustExampleTests/AppDelegate.m
+48 −0 AdjustExampleTests/Assets.xcassets/AppIcon.appiconset/Contents.json
+27 −0 AdjustExampleTests/Base.lproj/LaunchScreen.storyboard
+26 −0 AdjustExampleTests/Base.lproj/Main.storyboard
+38 −0 AdjustExampleTests/Info.plist
+15 −0 AdjustExampleTests/ViewController.h
+29 −0 AdjustExampleTests/ViewController.m
+16 −0 AdjustExampleTests/main.m
+20 −16 AdjustTests/ADJActivityHandlerTests.m
+4 −3 AdjustTests/ADJAttributionHandlerMock.m
+14 −8 AdjustTests/ADJAttributionHandlerTests.m
+8 −2 AdjustTests/ADJLoggerMock.m
+0 −1 AdjustTests/ADJPackageFields.h
+1 −1 AdjustTests/ADJPackageFields.m
+6 −2 AdjustTests/ADJPackageHandlerTests.m
+4 −2 AdjustTests/ADJSdkClickHandlerMock.m
+20 −10 AdjustTests/ADJSdkClickHandlerTests.m
+10 −0 CHANGELOG.md
+3 −3 README.md
+1 −1 VERSION
+1 −1 doc/english/migrate.md
+1 −1 doc/japanese/migrate_ja.md
+1 −1 doc/migrate.md
+3 −19 plugin/Sociomantic/ADJSociomantic.h
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ var AdjustConfig = function(appToken, environment) {
this.appToken = appToken;
this.environment = environment;

this.sdkPrefix = "react_native4.11.2";
this.sdkPrefix = "react_native4.11.3";
this.logLevel = null;

this.eventBufferingEnabled = null;
Expand Down
1 change: 1 addition & 0 deletions ios/Adjust/ADJActivityHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ sessionParametersActionsArray:(NSArray*)sessionParametersActionsArray
- (void)finishedTracking:(ADJResponseData *)responseData;
- (void)launchEventResponseTasks:(ADJEventResponseData *)eventResponseData;
- (void)launchSessionResponseTasks:(ADJSessionResponseData *)sessionResponseData;
- (void)launchSdkClickResponseTasks:(ADJSdkClickResponseData *)sdkClickResponseData;
- (void)launchAttributionResponseTasks:(ADJAttributionResponseData *)attributionResponseData;
- (void)setEnabled:(BOOL)enabled;
- (BOOL)isEnabled;
Expand Down
103 changes: 79 additions & 24 deletions ios/Adjust/ADJActivityHandler.m
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,12 @@ - (void)finishedTracking:(ADJResponseData *)responseData {
return;
}

// redirect sdk_click responses to attribution handler to check for attribution information
if ([responseData isKindOfClass:[ADJSdkClickResponseData class]]) {
[self.attributionHandler checkSdkClickResponse:(ADJSdkClickResponseData*)responseData];
return;
}

// check if it's an event response
if ([responseData isKindOfClass:[ADJEventResponseData class]]) {
[self launchEventResponseTasks:(ADJEventResponseData*)responseData];
Expand All @@ -261,6 +267,14 @@ - (void)launchSessionResponseTasks:(ADJSessionResponseData *)sessionResponseData
}];
}

- (void)launchSdkClickResponseTasks:(ADJSdkClickResponseData *)sdkClickResponseData {
[ADJUtil launchInQueue:self.internalQueue
selfInject:self
block:^(ADJActivityHandler * selfI) {
[selfI launchSdkClickResponseTasksI:selfI sdkClickResponseData:sdkClickResponseData];
}];
}

- (void)launchAttributionResponseTasks:(ADJAttributionResponseData *)attributionResponseData {
[ADJUtil launchInQueue:self.internalQueue
selfInject:self
Expand Down Expand Up @@ -399,27 +413,14 @@ - (void)setDeviceToken:(NSData *)deviceToken {
}];
}

- (void)setIadDate:(NSDate *)iAdImpressionDate withPurchaseDate:(NSDate *)appPurchaseDate {
if (iAdImpressionDate == nil) {
[self.logger debug:@"iAdImpressionDate not received"];
return;
}

[self.logger debug:@"iAdImpressionDate received: %@", iAdImpressionDate];


double now = [NSDate.date timeIntervalSince1970];
ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc]
initWithDeviceInfo:self.deviceInfo
activityState:self.activityState
config:self.adjustConfig
createdAt:now];

clickBuilder.purchaseTime = appPurchaseDate;
clickBuilder.clickTime = iAdImpressionDate;

ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"iad"];
[self.sdkClickHandler sendSdkClick:clickPackage];
- (void)setIadDate:(NSDate *)iAdImpressionDate
withPurchaseDate:(NSDate *)appPurchaseDate
{
[ADJUtil launchInQueue:self.internalQueue
selfInject:self
block:^(ADJActivityHandler * selfI) {
[selfI setIadDateI:selfI iAdImpressionDate:iAdImpressionDate withPurchaseDate:appPurchaseDate];
}];
}

- (void)setAttributionDetails:(NSDictionary *)attributionDetails
Expand Down Expand Up @@ -485,6 +486,10 @@ - (void)sendIad3ClickPackage:(ADJActivityHandler *)selfI
attributionDetails:(NSDictionary *)attributionDetails
{
double now = [NSDate.date timeIntervalSince1970];
if (selfI.activityState != nil) {
double lastInterval = now - selfI.activityState.lastActivity;
selfI.activityState.lastInterval = lastInterval;
}
ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc]
initWithDeviceInfo:selfI.deviceInfo
activityState:selfI.activityState
Expand All @@ -493,7 +498,7 @@ - (void)sendIad3ClickPackage:(ADJActivityHandler *)selfI

clickBuilder.attributionDetails = attributionDetails;

ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"iad3"];
ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"iad3" sessionParameters:selfI.sessionParameters];
[selfI.sdkClickHandler sendSdkClick:clickPackage];
}

Expand Down Expand Up @@ -716,7 +721,8 @@ - (void)initI:(ADJActivityHandler *)selfI
startsSending:[selfI toSendI:selfI
sdkClickHandlerOnly:NO]];

selfI.sdkClickHandler = [ADJAdjustFactory sdkClickHandlerWithStartsPaused:[selfI toSendI:selfI
selfI.sdkClickHandler = [ADJAdjustFactory sdkClickHandlerWithStartsPaused:selfI
startsSending:[selfI toSendI:selfI
sdkClickHandlerOnly:YES]];

[[UIDevice currentDevice] adjSetIad:selfI triesV3Left:kTryIadV3];
Expand Down Expand Up @@ -930,6 +936,21 @@ - (void)launchSessionResponseTasksI:(ADJActivityHandler *)selfI
self.internalState.sessionResponseProcessed = YES;
}

- (void)launchSdkClickResponseTasksI:(ADJActivityHandler *)selfI
sdkClickResponseData:(ADJSdkClickResponseData *)sdkClickResponseData {
[selfI updateAdidI:selfI adid:sdkClickResponseData.adid];

BOOL toLaunchAttributionDelegate = [selfI updateAttributionI:selfI attribution:sdkClickResponseData.attribution];

// try to update and launch the attribution changed delegate
if (toLaunchAttributionDelegate) {
[selfI.logger debug:@"Launching attribution changed delegate"];
[ADJUtil launchInMainThread:selfI.adjustDelegate
selector:@selector(adjustAttributionChanged:)
withObject:sdkClickResponseData.attribution];
}
}

- (void)launchAttributionResponseTasksI:(ADJActivityHandler *)selfI
attributionResponseData:(ADJAttributionResponseData *)attributionResponseData {
[selfI updateAdidI:selfI adid:attributionResponseData.adid];
Expand Down Expand Up @@ -1034,6 +1055,9 @@ - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI
}

double now = [NSDate.date timeIntervalSince1970];
double lastInterval = now - selfI.activityState.lastActivity;
selfI.activityState.lastInterval = lastInterval;

ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc]
initWithDeviceInfo:selfI.deviceInfo
activityState:selfI.activityState
Expand All @@ -1044,7 +1068,7 @@ - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI
clickBuilder.clickTime = [NSDate date];
clickBuilder.deeplink = [url absoluteString];

ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"deeplink"];
ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"deeplink" sessionParameters:selfI.sessionParameters];
[selfI.sdkClickHandler sendSdkClick:clickPackage];
}

Expand Down Expand Up @@ -1133,6 +1157,37 @@ - (void)setDeviceTokenI:(ADJActivityHandler *)selfI
[selfI.packageHandler sendFirstPackage];
}

- (void)setIadDateI:(ADJActivityHandler *)selfI
iAdImpressionDate:(NSDate *)iAdImpressionDate
withPurchaseDate:(NSDate *)appPurchaseDate
{
if (iAdImpressionDate == nil) {
[self.logger debug:@"iAdImpressionDate not received"];
return;
}

[self.logger debug:@"iAdImpressionDate received: %@", iAdImpressionDate];

double now = [NSDate.date timeIntervalSince1970];
if (selfI.activityState != nil) {
double lastInterval = now - selfI.activityState.lastActivity;
selfI.activityState.lastInterval = lastInterval;
}

ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc]
initWithDeviceInfo:self.deviceInfo
activityState:self.activityState
config:self.adjustConfig
createdAt:now];

clickBuilder.purchaseTime = appPurchaseDate;
clickBuilder.clickTime = iAdImpressionDate;

ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"iad" sessionParameters:selfI.sessionParameters];
[self.sdkClickHandler sendSdkClick:clickPackage];
}


#pragma mark - private

- (BOOL)isEnabledI:(ADJActivityHandler *)selfI {
Expand Down
3 changes: 2 additions & 1 deletion ios/Adjust/ADJAdjustFactory.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
+ (id<ADJActivityHandler>)activityHandlerWithConfig:(ADJConfig *)adjustConfig
sessionParametersActionsArray:(NSArray*)sessionParametersActionsArray
deviceToken:(NSData*)deviceToken;
+ (id<ADJSdkClickHandler>)sdkClickHandlerWithStartsPaused:(BOOL)startsSending;
+ (id<ADJSdkClickHandler>)sdkClickHandlerWithStartsPaused:(id<ADJActivityHandler>)activityHandler
startsSending:(BOOL)startsSending;

+ (id<ADJLogger>)logger;
+ (double)sessionInterval;
Expand Down
7 changes: 4 additions & 3 deletions ios/Adjust/ADJAdjustFactory.m
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,14 @@ + (ADJBackoffStrategy *)sdkClickHandlerBackoffStrategy {
startsSending:startsSending];
}

+ (id<ADJSdkClickHandler>)sdkClickHandlerWithStartsPaused:(BOOL)startsSending
+ (id<ADJSdkClickHandler>)sdkClickHandlerWithStartsPaused:(id<ADJActivityHandler>)activityHandler
startsSending:(BOOL)startsSending
{
if (internalSdkClickHandler == nil) {
return [ADJSdkClickHandler handlerWithStartsSending:startsSending];
return [ADJSdkClickHandler handlerWithActivityHandler:activityHandler startsSending:startsSending];
}

return [internalSdkClickHandler initWithStartsSending:startsSending];
return [internalSdkClickHandler initWithActivityHandler:activityHandler startsSending:startsSending];
}

+ (BOOL)testing {
Expand Down
2 changes: 2 additions & 0 deletions ios/Adjust/ADJAttributionHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

- (void)checkSessionResponse:(ADJSessionResponseData *)sessionResponseData;

- (void)checkSdkClickResponse:(ADJSdkClickResponseData *)sdkClickResponseData;

- (void)checkAttributionResponse:(ADJAttributionResponseData *)attributionResponseData;

- (void)getAttribution;
Expand Down
16 changes: 16 additions & 0 deletions ios/Adjust/ADJAttributionHandler.m
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,15 @@ - (void)checkSessionResponse:(ADJSessionResponseData *)sessionResponseData {
}];
}

- (void)checkSdkClickResponse:(ADJSdkClickResponseData *)sdkClickResponseData {
[ADJUtil launchInQueue:self.internalQueue
selfInject:self
block:^(ADJAttributionHandler* selfI) {
[selfI checkSdkClickResponseI:selfI
sdkClickResponseData:sdkClickResponseData];
}];
}

- (void)checkAttributionResponse:(ADJAttributionResponseData *)attributionResponseData {
[ADJUtil launchInQueue:self.internalQueue
selfInject:self
Expand Down Expand Up @@ -110,6 +119,13 @@ - (void)checkSessionResponseI:(ADJAttributionHandler*)selfI
[selfI.activityHandler launchSessionResponseTasks:sessionResponseData];
}

- (void)checkSdkClickResponseI:(ADJAttributionHandler*)selfI
sdkClickResponseData:(ADJSdkClickResponseData *)sdkClickResponseData {
[selfI checkAttributionI:selfI responseData:sdkClickResponseData];

[selfI.activityHandler launchSdkClickResponseTasks:sdkClickResponseData];
}

- (void)checkAttributionResponseI:(ADJAttributionHandler*)selfI
attributionResponseData:(ADJAttributionResponseData *)attributionResponseData {
[selfI checkAttributionI:selfI responseData:attributionResponseData];
Expand Down
33 changes: 11 additions & 22 deletions ios/Adjust/ADJConfig.m
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
@interface ADJConfig()

@property (nonatomic, weak) id<ADJLogger> logger;
@property (nonatomic, assign) BOOL allowSuppressLogLevel;

@end

Expand Down Expand Up @@ -48,10 +47,13 @@ - (id)initWithAppToken:(NSString *)appToken
self = [super init];
if (self == nil) return nil;

self.allowSuppressLogLevel = allowSuppressLogLevel;
self.logger = ADJAdjustFactory.logger;
// default values
[self setLogLevel:ADJLogLevelInfo environment:environment];
if (allowSuppressLogLevel && [ADJEnvironmentProduction isEqualToString:environment]) {
[self setLogLevel:ADJLogLevelSuppress environment:environment];
} else {
[self setLogLevel:ADJLogLevelInfo environment:environment];
}

if (![self checkEnvironment:environment]) return self;
if (![self checkAppToken:appToken]) return self;
Expand All @@ -69,25 +71,12 @@ - (void)setLogLevel:(ADJLogLevel)logLevel {
}

- (void)setLogLevel:(ADJLogLevel)logLevel
environment:(NSString *)environment{
if ([environment isEqualToString:ADJEnvironmentProduction]) {
if (self.allowSuppressLogLevel) {
_logLevel = ADJLogLevelSuppress;
} else {
_logLevel = ADJLogLevelAssert;
}
} else {
if (!self.allowSuppressLogLevel &&
logLevel == ADJLogLevelSuppress) {
_logLevel = ADJLogLevelAssert;
} else {
_logLevel = logLevel;
}
}
[self.logger setLogLevel:self.logLevel];
environment:(NSString *)environment
{
[self.logger setLogLevel:logLevel
isProductionEnvironment:[ADJEnvironmentProduction isEqualToString:environment]];
}


- (void)setDelegate:(NSObject<AdjustDelegate> *)delegate {
BOOL hasResponseDelegate = NO;
BOOL implementsDeeplinkCallback = NO;
Expand Down Expand Up @@ -151,10 +140,10 @@ - (BOOL)checkEnvironment:(NSString *)environment
return NO;
}
if ([environment isEqualToString:ADJEnvironmentSandbox]) {
[self.logger assert:@"SANDBOX: Adjust is running in Sandbox mode. Use this setting for testing. Don't forget to set the environment to `production` before publishing"];
[self.logger warnInProduction:@"SANDBOX: Adjust is running in Sandbox mode. Use this setting for testing. Don't forget to set the environment to `production` before publishing"];
return YES;
} else if ([environment isEqualToString:ADJEnvironmentProduction]) {
[self.logger assert:@"PRODUCTION: Adjust is running in Production mode. Use this setting only for the build that you want to publish. Set the environment to `sandbox` if you want to test your app!"];
[self.logger warnInProduction:@"PRODUCTION: Adjust is running in Production mode. Use this setting only for the build that you want to publish. Set the environment to `sandbox` if you want to test your app!"];
return YES;
}
[self.logger error:@"Unknown environment '%@'", environment];
Expand Down
3 changes: 2 additions & 1 deletion ios/Adjust/ADJLogger.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ typedef enum {
*
* @param logLevel Level of the logs to be displayed.
*/
- (void)setLogLevel:(ADJLogLevel)logLevel;
- (void)setLogLevel:(ADJLogLevel)logLevel isProductionEnvironment:(BOOL)isProductionEnvironment;

/**
* @brief Prevent log level changes.
Expand All @@ -53,6 +53,7 @@ typedef enum {
* @brief Print warn logs.
*/
- (void)warn:(nonnull NSString *)message, ...;
- (void)warnInProduction:(nonnull NSString *)message, ...;

/**
* @brief Print error logs.
Expand Down
Loading