Created
November 18, 2022 10:21
-
-
Save CharlieBreval/56a4f2c01251af35c6af75210219d2f1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "AppDelegate.h" | |
#import "RNFBMessagingModule.h" | |
#import <React/RCTLinkingManager.h> | |
#import <React/RCTBridge.h> | |
#import <React/RCTBundleURLProvider.h> | |
#import <React/RCTRootView.h> | |
#import <React/RCTAppSetupUtils.h> | |
#if RCT_NEW_ARCH_ENABLED | |
#import <React/CoreModulesPlugins.h> | |
#import <React/RCTCxxBridgeDelegate.h> | |
#import <React/RCTFabricSurfaceHostingProxyRootView.h> | |
#import <React/RCTSurfacePresenter.h> | |
#import <React/RCTSurfacePresenterBridgeAdapter.h> | |
#import <ReactCommon/RCTTurboModuleManager.h> | |
#import <react/config/ReactNativeConfig.h> | |
@interface AppDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate> { | |
RCTTurboModuleManager *_turboModuleManager; | |
RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; | |
std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig; | |
facebook::react::ContextContainer::Shared _contextContainer; | |
} | |
@end | |
#endif | |
#import <Firebase.h> | |
#import "RNBootSplash.h" | |
#import <CodePush/CodePush.h> | |
#import "ReactNativeConfig.h" | |
#import "Orientation.h" | |
#ifdef FB_SONARKIT_ENABLED | |
#import <FlipperKit/FlipperClient.h> | |
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h> | |
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h> | |
#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h> | |
#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h> | |
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h> | |
static void InitializeFlipper(UIApplication *application) { | |
FlipperClient *client = [FlipperClient sharedClient]; | |
SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; | |
[client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; | |
[client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; | |
[client addPlugin:[FlipperKitReactPlugin new]]; | |
[client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; | |
[client start]; | |
} | |
#endif | |
@implementation AppDelegate | |
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | |
{ | |
NSDictionary *appProperties = [RNFBMessagingModule addCustomPropsToUserProps:nil withLaunchOptions:launchOptions]; | |
RCTAppSetupPrepareApp(application); | |
[FIRApp configure]; | |
#ifdef FB_SONARKIT_ENABLED | |
InitializeFlipper(application); | |
#endif | |
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; | |
#if RCT_NEW_ARCH_ENABLED | |
_contextContainer = std::make_shared<facebook::react::ContextContainer const>(); | |
_reactNativeConfig = std::make_shared<facebook::react::EmptyReactNativeConfig const>(); | |
_contextContainer->insert("ReactNativeConfig", _reactNativeConfig); | |
_bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; | |
bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; | |
#endif | |
UIView *rootView = RCTAppSetupDefaultRootView(bridge, [ReactNativeConfig envFor:@"APP_NAME"], appProperties); | |
if (@available(iOS 13.0, *)) { | |
rootView.backgroundColor = [UIColor systemBackgroundColor]; | |
} else { | |
rootView.backgroundColor = [UIColor whiteColor]; | |
} | |
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; | |
UIViewController *rootViewController = [UIViewController new]; | |
rootViewController.view = rootView; | |
self.window.rootViewController = rootViewController; | |
[self.window makeKeyAndVisible]; | |
[RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView]; | |
return YES; | |
} | |
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge | |
{ | |
#if DEBUG | |
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; | |
#else | |
return [CodePush bundleURL]; | |
#endif | |
} | |
#if RCT_NEW_ARCH_ENABLED | |
#pragma mark - RCTCxxBridgeDelegate | |
- (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:(RCTBridge *)bridge | |
{ | |
_turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge | |
delegate:self | |
jsInvoker:bridge.jsCallInvoker]; | |
return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); | |
} | |
#pragma mark RCTTurboModuleManagerDelegate | |
- (Class)getModuleClassFromName:(const char *)name | |
{ | |
return RCTCoreModulesClassProvider(name); | |
} | |
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name | |
jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker | |
{ | |
return nullptr; | |
} | |
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name | |
initParams: | |
(const facebook::react::ObjCTurboModule::InitParams &)params | |
{ | |
return nullptr; | |
} | |
- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass | |
{ | |
return RCTAppSetupDefaultModuleFromClass(moduleClass); | |
} | |
#endif | |
// Handle deep linking | |
- (BOOL)application:(UIApplication *)application | |
openURL:(NSURL *)url | |
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options | |
{ | |
return [RCTLinkingManager application:application openURL:url options:options]; | |
} | |
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity | |
restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler | |
{ | |
return [RCTLinkingManager application:application | |
continueUserActivity:userActivity | |
restorationHandler:restorationHandler]; | |
} | |
// Handle deep linking | |
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { | |
return [Orientation getOrientation]; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment