1// Copyright 2018-present 650 Industries. All rights reserved. 2 3#import <ExpoModulesCore/EXLegacyAppDelegateWrapper.h> 4 5#import <ExpoModulesCore/EXAppDelegatesLoader.h> 6#import <ExpoModulesCore/EXNativeModulesProxy.h> 7#import <ExpoModulesCore/Swift.h> 8 9// Make the legacy wrapper conform to the protocol for subscribers. 10@interface EXLegacyAppDelegateWrapper () <EXAppDelegateSubscriberProtocol> 11@end 12 13@implementation EXAppDelegatesLoader 14 15// App delegate providers must be registered before any `AppDelegate` life-cycle event is called. 16// Unfortunately it's not possible in Swift to run code right after the binary is loaded 17// and before any code is executed, so we switch back to Objective-C just to do this one thing. 18+ (void)load 19{ 20 ModulesProvider *modulesProvider = [EXNativeModulesProxy getExpoModulesProvider]; 21 [EXExpoAppDelegate registerSubscriber:[[EXLegacyAppDelegateWrapper alloc] init]]; 22 [EXExpoAppDelegate registerSubscribersFromModulesProvider:modulesProvider]; 23 [EXExpoAppDelegate registerReactDelegateHandlersFromModulesProvider:modulesProvider]; 24} 25 26@end 27