react-native-navigation的迁移库

RNN.m 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #import "RNN.h"
  2. #import "RNNEventEmitter.h"
  3. #import "RCTBridge.h"
  4. #import "RNNSplashScreen.h"
  5. @interface RNN()
  6. @property (readwrite) RCTBridge* bridge;
  7. @property (readwrite) BOOL isReadyToReceiveCommands;
  8. @property (readwrite) RNNEventEmitter* eventEmitter;
  9. @end
  10. @implementation RNN
  11. +(instancetype)instance
  12. {
  13. static RNN *sharedInstance = nil;
  14. static dispatch_once_t onceToken = 0;
  15. dispatch_once(&onceToken,^{
  16. if (sharedInstance == nil)
  17. {
  18. sharedInstance = [[RNN alloc] init];
  19. }
  20. });
  21. return sharedInstance;
  22. }
  23. -(void)bootstrap:(NSURL *)jsCodeLocation launchOptions:(NSDictionary *)launchOptions
  24. {
  25. self.eventEmitter = [RNNEventEmitter new];
  26. UIApplication.sharedApplication.delegate.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  27. UIApplication.sharedApplication.delegate.window.backgroundColor = [UIColor whiteColor];
  28. [RNNSplashScreen show];
  29. [self registerForJsEvents];
  30. // this will load the JS bundle
  31. self.bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation moduleProvider:nil launchOptions:launchOptions];
  32. }
  33. -(void)registerForJsEvents
  34. {
  35. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onJavaScriptLoaded) name:RCTJavaScriptDidLoadNotification object:self.bridge];
  36. #pragma GCC diagnostic push
  37. #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  38. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onJavaScriptDevReload) name:RCTReloadNotification object:self.bridge];
  39. #pragma GCC diagnostic pop
  40. }
  41. -(void)onJavaScriptLoaded
  42. {
  43. self.isReadyToReceiveCommands = true;
  44. [self.eventEmitter sendOnAppLaunched];
  45. }
  46. -(void)onJavaScriptDevReload
  47. {
  48. UIApplication.sharedApplication.delegate.window.rootViewController = nil;
  49. }
  50. @end