diff --git a/Branch-TestBed/Branch-TestBed/AppDelegate.m b/Branch-TestBed/Branch-TestBed/AppDelegate.m index aedf3557b..1639425e7 100644 --- a/Branch-TestBed/Branch-TestBed/AppDelegate.m +++ b/Branch-TestBed/Branch-TestBed/AppDelegate.m @@ -41,8 +41,7 @@ - (BOOL)application:(UIApplication *)application // test pre init support //[self testDispatchToIsolationQueue:branch] - - [Branch enableLoggingAtLevel:BranchLogLevelVerbose withCallback:^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error) { + [Branch enableLoggingAtLevel:BranchLogLevelVerbose withAdvancedCallback:^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error, NSMutableURLRequest * _Nullable request, BNCServerResponse * _Nullable response) { // Handle the log message and error here. For example, printing to the console: if (error) { NSLog(@"[BranchLog] Level: %lu, Message: %@, Error: %@", (unsigned long)logLevel, message, error.localizedDescription); @@ -50,6 +49,15 @@ - (BOOL)application:(UIApplication *)application NSLog(@"[BranchLog] Level: %lu, Message: %@", (unsigned long)logLevel, message); } + if (request) { + NSString *jsonString = [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]; + NSLog(@"[BranchLog] Got %@ Request: %@", request.URL , jsonString); + } + + if (response) { + NSLog(@"[BranchLog] Got Response for request (%@): %@", response.requestId, response.data); + } + NSString *logEntry = error ? [NSString stringWithFormat:@"Level: %lu, Message: %@, Error: %@", (unsigned long)logLevel, message, error.localizedDescription] : [NSString stringWithFormat:@"Level: %lu, Message: %@", (unsigned long)logLevel, message]; APPLogHookFunction([NSDate date], logLevel, logEntry); diff --git a/Sources/BranchSDK/BNCServerInterface.m b/Sources/BranchSDK/BNCServerInterface.m index 2fc2e29f8..37cfcfd1d 100644 --- a/Sources/BranchSDK/BNCServerInterface.m +++ b/Sources/BranchSDK/BNCServerInterface.m @@ -289,7 +289,7 @@ - (NSURLRequest *)preparePostRequest:(NSDictionary *)params url:(NSString *)url [request setHTTPBody:postData]; if ([[BranchLogger shared] shouldLog:BranchLogLevelDebug]) { - [[BranchLogger shared] logDebug:[NSString stringWithFormat:@"%@\nHeaders %@\nBody %@", request, [request allHTTPHeaderFields], [BNCEncodingUtils prettyPrintJSON:updatedParams]] error:nil]; + [[BranchLogger shared] logDebug:[NSString stringWithFormat:@"%@\nHeaders %@\nBody %@", request, [request allHTTPHeaderFields], [BNCEncodingUtils prettyPrintJSON:updatedParams]] error:nil request:request response:nil]; } return request; @@ -310,7 +310,7 @@ - (BNCServerResponse *)processServerResponse:(NSURLResponse *)response data:(NSD serverResponse.requestId = requestId; if ([[BranchLogger shared] shouldLog:BranchLogLevelDebug]) { - [[BranchLogger shared] logDebug:[NSString stringWithFormat:@"%@\nBody %@", response, [BNCEncodingUtils prettyPrintJSON:serverResponse.data]] error:nil]; + [[BranchLogger shared] logDebug:[NSString stringWithFormat:@"%@\nBody %@", response, [BNCEncodingUtils prettyPrintJSON:serverResponse.data]] error:nil request:nil response:serverResponse]; } } else { diff --git a/Sources/BranchSDK/Branch.m b/Sources/BranchSDK/Branch.m index f1178f45c..a0036f74c 100644 --- a/Sources/BranchSDK/Branch.m +++ b/Sources/BranchSDK/Branch.m @@ -455,6 +455,15 @@ + (void)enableLoggingAtLevel:(BranchLogLevel)logLevel withCallback:(nullable Bra } } ++ (void)enableLoggingAtLevel:(BranchLogLevel)logLevel withAdvancedCallback:(nullable BranchAdvancedLogCallback)callback { + BranchLogger *logger = [BranchLogger shared]; + logger.loggingEnabled = YES; + logger.logLevelThreshold = logLevel; + if (callback) { + logger.advancedLogCallback = callback; + } +} + - (void)useEUEndpoints { [BNCServerAPI sharedInstance].useEUServers = YES; } diff --git a/Sources/BranchSDK/BranchLogger.m b/Sources/BranchSDK/BranchLogger.m index d64a65568..1cbd86cb2 100644 --- a/Sources/BranchSDK/BranchLogger.m +++ b/Sources/BranchSDK/BranchLogger.m @@ -53,22 +53,29 @@ - (void)disableCallerDetails { } - (void)logError:(NSString *)message error:(NSError *_Nullable)error { - [self logMessage:message withLevel:BranchLogLevelError error:error]; + [self logMessage:message withLevel:BranchLogLevelError error:error request:nil response:nil]; } - (void)logWarning:(NSString *)message error:(NSError *_Nullable)error { - [self logMessage:message withLevel:BranchLogLevelWarning error:error]; + [self logMessage:message withLevel:BranchLogLevelWarning error:error request:nil response:nil]; } -- (void)logDebug:(NSString *)message error:(NSError *_Nullable)error { - [self logMessage:message withLevel:BranchLogLevelDebug error:error]; +- (void)logDebug:(NSString * _Nonnull)message error:(NSError * _Nullable)error { + [self logDebug:message error:error request:nil response:nil]; +} + +- (void)logDebug:(NSString * _Nonnull)message + error:(NSError * _Nullable)error + request:(NSMutableURLRequest * _Nullable)request + response:(BNCServerResponse * _Nullable)response { + [self logMessage:message withLevel:BranchLogLevelDebug error:error request:request response:response]; } - (void)logVerbose:(NSString *)message error:(NSError *_Nullable)error { - [self logMessage:message withLevel:BranchLogLevelVerbose error:error]; + [self logMessage:message withLevel:BranchLogLevelVerbose error:error request:nil response:nil]; } -- (void)logMessage:(NSString *)message withLevel:(BranchLogLevel)level error:(NSError *_Nullable)error { +- (void)logMessage:(NSString *)message withLevel:(BranchLogLevel)level error:(NSError *_Nullable)error request:(NSMutableURLRequest * _Nullable)request response:(BNCServerResponse * _Nullable)response { if (!self.loggingEnabled || level < self.logLevelThreshold || message.length == 0) { return; } @@ -77,8 +84,10 @@ - (void)logMessage:(NSString *)message withLevel:(BranchLogLevel)level error:(NS if (self.includeCallerDetails) { formattedMessage = [NSString stringWithFormat:@"%@ %@", [self callingClass], message]; } - - if (self.logCallback) { + + if (self.advancedLogCallback) { + self.advancedLogCallback(formattedMessage, level, error, request, response); + } else if (self.logCallback) { self.logCallback(formattedMessage, level, error); } } diff --git a/Sources/BranchSDK/Public/Branch.h b/Sources/BranchSDK/Public/Branch.h index 3f381efeb..f82e60dc5 100644 --- a/Sources/BranchSDK/Public/Branch.h +++ b/Sources/BranchSDK/Public/Branch.h @@ -568,6 +568,7 @@ extern NSString * __nonnull const BNCSpotlightFeature; */ + (void)enableLogging; + (void)enableLoggingAtLevel:(BranchLogLevel)logLevel withCallback:(nullable BranchLogCallback)callback; ++ (void)enableLoggingAtLevel:(BranchLogLevel)logLevel withAdvancedCallback:(nullable BranchAdvancedLogCallback)callback; // The new logging system is independent of the Branch singleton and can be called earlier. - (void)enableLogging __attribute__((deprecated(("This API is deprecated. Please use the static version.")))); diff --git a/Sources/BranchSDK/Public/BranchLogger.h b/Sources/BranchSDK/Public/BranchLogger.h index d0354b387..1d05cd88b 100644 --- a/Sources/BranchSDK/Public/BranchLogger.h +++ b/Sources/BranchSDK/Public/BranchLogger.h @@ -7,6 +7,7 @@ // #import +#import "BNCServerResponse.h" typedef NS_ENUM(NSUInteger, BranchLogLevel) { BranchLogLevelVerbose, // development @@ -16,6 +17,7 @@ typedef NS_ENUM(NSUInteger, BranchLogLevel) { }; typedef void(^BranchLogCallback)(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error); +typedef void(^BranchAdvancedLogCallback)(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error, NSMutableURLRequest * _Nullable request, BNCServerResponse * _Nullable response); NS_ASSUME_NONNULL_BEGIN @@ -24,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, assign) BOOL loggingEnabled; @property (nonatomic, assign) BOOL includeCallerDetails; @property (nonatomic, copy, nullable) BranchLogCallback logCallback; +@property (nonatomic, copy, nullable) BranchAdvancedLogCallback advancedLogCallback; @property (nonatomic, assign) BranchLogLevel logLevelThreshold; + (instancetype _Nonnull)shared; @@ -37,6 +40,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)logError:(NSString * _Nonnull)message error:(NSError * _Nullable)error; - (void)logWarning:(NSString * _Nonnull)message error:(NSError * _Nullable)error; - (void)logDebug:(NSString * _Nonnull)message error:(NSError * _Nullable)error; +- (void)logDebug:(NSString * _Nonnull)message error:(NSError * _Nullable)error request:(NSMutableURLRequest * _Nullable)request response:(BNCServerResponse * _Nullable)response; - (void)logVerbose:(NSString * _Nonnull)message error:(NSError * _Nullable)error; // default Branch log format