1 // Copyright 2015-present 650 Industries. All rights reserved. 2 3 #import "EXKernelAppRecord.h" 4 5 @class RCTBridge; 6 @class EXReactAppManager; 7 @class EXFrameReactAppManager; 8 @class EXKernelAppRegistry; 9 @class EXKernelReactAppManager; 10 11 @protocol EXKernelAppRegistryDelegate <NSObject> 12 13 - (void)appRegistry:(EXKernelAppRegistry *)registry didRegisterAppRecord:(EXKernelAppRecord *)appRecord; 14 - (void)appRegistry:(EXKernelAppRegistry *)registry willUnregisterAppRecord:(EXKernelAppRecord *)appRecord; 15 16 @end 17 18 @interface EXKernelAppRegistry : NSObject 19 20 - (void)registerKernelAppManager: (EXKernelReactAppManager *)appManager; 21 - (void)unregisterKernelAppManager; 22 23 - (NSString *)registerAppWithManifestUrl:(NSURL *)manifestUrl; 24 - (void)addAppManager:(EXFrameReactAppManager *)appManager toRecordWithId:(NSString *)recordId; 25 - (void)addAppManager:(EXFrameReactAppManager *)appManager toRecordWithExperienceId:(NSString *)experienceId; 26 27 - (void)unregisterAppWithRecordId:(NSString *)recordId; 28 - (void)unregisterRecordWithExperienceId:(NSString *)experienceId; 29 30 - (void)setExperienceFinishedLoading:(BOOL)experienceFinishedLoading onRecordWithId:(NSString *)recordId; 31 - (void)setExperienceFinishedLoading:(BOOL)experienceFinishedLoading onRecordWithExperienceId:(NSString *)experienceId; 32 33 /** 34 * We pass some system events on to the visible experience, 35 * but not to any others which may be open, e.g. UIApplicationState changes. 36 */ 37 @property (nonatomic, weak) EXReactAppManager *lastKnownForegroundAppManager; 38 39 @property (nonatomic, weak) id<EXKernelAppRegistryDelegate> delegate; 40 41 - (EXKernelAppRecord *)recordForId:(NSString *)recordId; 42 - (EXKernelAppRecord * _Nullable)newestRecordWithExperienceId:(NSString *)experienceId; 43 - (EXKernelReactAppManager *)kernelAppManager; 44 - (NSEnumerator<id> *)appEnumerator; // does not include kernel 45 - (BOOL)isExperienceIdUnique:(NSString *)experienceId; 46 47 @end 48