mirror of
https://github.com/status-im/status-react.git
synced 2025-01-11 11:34:45 +00:00
ed3597fd7c
React Native uses 'asl' to do logging, not NSLog, so we have to hook into that to get logs sent to Testfairy. This means we get all the app device logs you normally get in development, not just whatever happens in JS land. - Modified default logging function when flag is set - Delete Prefix header file and NSLog Macro
121 lines
4.1 KiB
Objective-C
121 lines
4.1 KiB
Objective-C
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
#import "AppDelegate.h"
|
|
|
|
#import <asl.h>
|
|
#import "ReactNativeConfig.h"
|
|
#import "React/RCTLog.h"
|
|
#import "RCTBundleURLProvider.h"
|
|
#import "RCTRootView.h"
|
|
#import "SplashScreen.h"
|
|
#import "TestFairy.h"
|
|
#import "RNFIRMessaging.h"
|
|
|
|
@import Instabug;
|
|
|
|
@implementation AppDelegate
|
|
|
|
/* Modified version of RCTDefaultLogFunction that also directs all app logs to TestFairy. */
|
|
RCTLogFunction RCTTestFairyLogFunction = ^(
|
|
RCTLogLevel level,
|
|
__unused RCTLogSource source,
|
|
NSString *fileName,
|
|
NSNumber *lineNumber,
|
|
NSString *message
|
|
)
|
|
{
|
|
NSString *log = RCTFormatLog([NSDate date], level, fileName, lineNumber, message);
|
|
fprintf(stderr, "%s\n", log.UTF8String);
|
|
fflush(stderr);
|
|
|
|
/* Only custom part */
|
|
TFLog(log);
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
|
{
|
|
signal(SIGPIPE, SIG_IGN);
|
|
NSURL *jsCodeLocation;
|
|
|
|
/* Enable debug logs from React Native for release mode */
|
|
NSString *debugLogsEnabled = [ReactNativeConfig envFor:@"DEBUG_LOGS_ENABLED"];
|
|
if([debugLogsEnabled isEqualToString:@"1"]){
|
|
RCTSetLogThreshold(RCTLogLevelInfo - 1);
|
|
RCTSetLogFunction(RCTTestFairyLogFunction);
|
|
}
|
|
|
|
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
|
|
|
|
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
|
|
moduleName:@"StatusIm"
|
|
initialProperties:nil
|
|
launchOptions:launchOptions];
|
|
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
|
|
|
|
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
|
UIViewController *rootViewController = [UIViewController new];
|
|
rootViewController.view = rootView;
|
|
self.window.rootViewController = rootViewController;
|
|
[self.window makeKeyAndVisible];
|
|
[SplashScreen show];
|
|
NSString *testfairyEnabled = [ReactNativeConfig envFor:@"TESTFAIRY_ENABLED"];
|
|
if([testfairyEnabled isEqualToString:@"1"]){
|
|
[TestFairy begin:@"969f6c921cb435cea1d41d1ea3f5b247d6026d55"];
|
|
}
|
|
[Instabug startWithToken:@"5534212f4a44f477c9ab270ab5cd2062" invocationEvent:IBGInvocationEventShake];
|
|
|
|
[FIRApp configure];
|
|
[[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
|
|
|
|
return YES;
|
|
}
|
|
|
|
|
|
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
|
|
{
|
|
[RNFIRMessaging willPresentNotification:notification withCompletionHandler:completionHandler];
|
|
}
|
|
|
|
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
|
|
{
|
|
[RNFIRMessaging didReceiveNotificationResponse:response withCompletionHandler:completionHandler];
|
|
}
|
|
|
|
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
|
|
[RNFIRMessaging didReceiveLocalNotification:notification];
|
|
}
|
|
|
|
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{
|
|
[RNFIRMessaging didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
|
|
}
|
|
|
|
@end
|