From ff4a0d9f7661393678c1c66d7c7be9178dfdd99c Mon Sep 17 00:00:00 2001 From: Salma ElTarzi Date: Sat, 26 Aug 2017 20:00:01 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20feature=20to=20support=20JS?= =?UTF-8?q?=20console=20logs=20with=20bug=20reports?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/RNInstabug/InstabugReactBridge.m | 63 ++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/ios/RNInstabug/InstabugReactBridge.m b/ios/RNInstabug/InstabugReactBridge.m index ffa4fee..aadad28 100644 --- a/ios/RNInstabug/InstabugReactBridge.m +++ b/ios/RNInstabug/InstabugReactBridge.m @@ -6,6 +6,9 @@ #import "InstabugReactBridge.h" #import +#import +#import +#import @implementation InstabugReactBridge @@ -28,6 +31,8 @@ RCT_EXPORT_MODULE(Instabug) RCT_EXPORT_METHOD(startWithToken:(NSString *)token invocationEvent:(IBGInvocationEvent)invocationEvent) { [Instabug startWithToken:token invocationEvent:invocationEvent]; + RCTAddLogFunction(InstabugReactLogFunction); + RCTSetLogThreshold(RCTLogLevelInfo); [Instabug setCrashReportingEnabled:NO]; [Instabug setNetworkLoggingEnabled:NO]; } @@ -433,4 +438,62 @@ RCT_EXPORT_METHOD(isRunningLive:(RCTResponseSenderBlock)callback) { }; }; ++ (BOOL)iOSVersionIsLessThan:(NSString *)iOSVersion { + return [iOSVersion compare:[UIDevice currentDevice].systemVersion options:NSNumericSearch] == NSOrderedDescending; +}; + +RCTLogFunction InstabugReactLogFunction = ^( + RCTLogLevel level, + __unused RCTLogSource source, + NSString *fileName, + NSNumber *lineNumber, + NSString *message + ) +{ + NSString *log = RCTFormatLog([NSDate date], level, fileName, lineNumber, message); + + + NSLog(@"Instabug - REACT LOG: %s", log.UTF8String); + + if([InstabugReactBridge iOSVersionIsLessThan:@"10.0"]) { + int aslLevel; + switch(level) { + case RCTLogLevelTrace: + aslLevel = ASL_LEVEL_DEBUG; + break; + case RCTLogLevelInfo: + aslLevel = ASL_LEVEL_NOTICE; + break; + case RCTLogLevelWarning: + aslLevel = ASL_LEVEL_WARNING; + break; + case RCTLogLevelError: + aslLevel = ASL_LEVEL_ERR; + break; + case RCTLogLevelFatal: + aslLevel = ASL_LEVEL_CRIT; + break; + } + asl_log(NULL, NULL, aslLevel, "%s", message.UTF8String); + } else { + switch(level) { + case RCTLogLevelTrace: + os_log(OS_LOG_DEFAULT, "%s", [message UTF8String]); + break; + case RCTLogLevelInfo: + os_log_with_type(OS_LOG_DEFAULT, OS_LOG_TYPE_INFO, "%s", [message UTF8String]); + break; + case RCTLogLevelWarning: + os_log(OS_LOG_DEFAULT, "%s", [message UTF8String]); + break; + case RCTLogLevelError: + os_log_error(OS_LOG_DEFAULT, "%s", [message UTF8String]); + break; + case RCTLogLevelFatal: + os_log_fault(OS_LOG_DEFAULT, "%s", [message UTF8String]); + break; + } + } +}; + @end