mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
83e6eaf693
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/53026 This change prevents users from opting out of the New Architecure. The change is non breaking with respect to building an app: all the functions are still there, even if they are unreachable, in case users will still call them explicitly. We hardcoded all the values to enable the New Architecture, so there is no way to disable it. This is a behavioral breaking change, though. ## Changelog: [iOS][Removed] - Removed the opt-out from the New Architecture. Reviewed By: cortinico Differential Revision: D79090048 fbshipit-source-id: 9779bfedf50748d7adbef5f7ef038f469e30efc2
165 lines
5.5 KiB
Plaintext
165 lines
5.5 KiB
Plaintext
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#import "AppDelegate.h"
|
|
|
|
#import <UserNotifications/UserNotifications.h>
|
|
|
|
#import <React/RCTBundleURLProvider.h>
|
|
#import <React/RCTDefines.h>
|
|
#import <React/RCTLinkingManager.h>
|
|
#import <ReactCommon/RCTSampleTurboModule.h>
|
|
#import <ReactCommon/RCTTurboModuleManager.h>
|
|
|
|
#import <React/RCTPushNotificationManager.h>
|
|
|
|
#import <NativeCxxModuleExample/NativeCxxModuleExample.h>
|
|
#ifndef RN_DISABLE_OSS_PLUGIN_HEADER
|
|
#import <RNTMyNativeViewComponentView.h>
|
|
#endif
|
|
|
|
#if __has_include(<ReactAppDependencyProvider/RCTAppDependencyProvider.h>)
|
|
#define USE_OSS_CODEGEN 1
|
|
#import <ReactAppDependencyProvider/RCTAppDependencyProvider.h>
|
|
#else
|
|
#define USE_OSS_CODEGEN 0
|
|
#endif
|
|
|
|
static NSString *kBundlePath = @"js/RNTesterApp.ios";
|
|
|
|
@interface AppDelegate () <UNUserNotificationCenterDelegate>
|
|
@end
|
|
|
|
@implementation AppDelegate
|
|
|
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
|
{
|
|
self.reactNativeFactory = [[RCTReactNativeFactory alloc] initWithDelegate:self];
|
|
#if USE_OSS_CODEGEN
|
|
self.dependencyProvider = [RCTAppDependencyProvider new];
|
|
#endif
|
|
|
|
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
|
|
|
[self.reactNativeFactory startReactNativeWithModuleName:@"RNTesterApp"
|
|
inWindow:self.window
|
|
initialProperties:[self prepareInitialProps]
|
|
launchOptions:launchOptions];
|
|
|
|
[[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
|
|
|
|
return YES;
|
|
}
|
|
|
|
- (NSDictionary *)prepareInitialProps
|
|
{
|
|
NSMutableDictionary *initProps = [NSMutableDictionary new];
|
|
|
|
NSString *_routeUri = [[NSUserDefaults standardUserDefaults] stringForKey:@"route"];
|
|
if (_routeUri) {
|
|
initProps[@"exampleFromAppetizeParams"] = [NSString stringWithFormat:@"rntester://example/%@Example", _routeUri];
|
|
}
|
|
|
|
return initProps;
|
|
}
|
|
|
|
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
|
{
|
|
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:kBundlePath];
|
|
}
|
|
|
|
- (BOOL)application:(UIApplication *)app
|
|
openURL:(NSURL *)url
|
|
options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
|
|
{
|
|
return [RCTLinkingManager application:app openURL:url options:options];
|
|
}
|
|
|
|
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
|
|
jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker
|
|
{
|
|
if (name == facebook::react::NativeCxxModuleExample::kModuleName) {
|
|
return std::make_shared<facebook::react::NativeCxxModuleExample>(jsInvoker);
|
|
}
|
|
|
|
return [super getTurboModule:name jsInvoker:jsInvoker];
|
|
}
|
|
|
|
// Required for the remoteNotificationsRegistered event.
|
|
- (void)application:(__unused UIApplication *)application
|
|
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
|
|
{
|
|
[RCTPushNotificationManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
|
|
}
|
|
|
|
// Required for the remoteNotificationRegistrationError event.
|
|
- (void)application:(__unused UIApplication *)application
|
|
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
|
|
{
|
|
[RCTPushNotificationManager didFailToRegisterForRemoteNotificationsWithError:error];
|
|
}
|
|
|
|
#pragma mark - UNUserNotificationCenterDelegate
|
|
|
|
// Required for the remoteNotificationReceived and localNotificationReceived events
|
|
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
|
|
willPresentNotification:(UNNotification *)notification
|
|
withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
|
|
{
|
|
[RCTPushNotificationManager didReceiveNotification:notification];
|
|
completionHandler(UNNotificationPresentationOptionNone);
|
|
}
|
|
|
|
// Required for the remoteNotificationReceived and localNotificationReceived events
|
|
// Called when a notification is tapped from background. (Foreground notification will not be shown per
|
|
// the presentation option selected above).
|
|
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
|
|
didReceiveNotificationResponse:(UNNotificationResponse *)response
|
|
withCompletionHandler:(void (^)(void))completionHandler
|
|
{
|
|
UNNotification *notification = response.notification;
|
|
|
|
// This condition will be true if tapping the notification launched the app.
|
|
if ([response.actionIdentifier isEqualToString:UNNotificationDefaultActionIdentifier]) {
|
|
// This can be retrieved with getInitialNotification.
|
|
[RCTPushNotificationManager setInitialNotification:notification];
|
|
}
|
|
|
|
[RCTPushNotificationManager didReceiveNotification:notification];
|
|
completionHandler();
|
|
}
|
|
|
|
#pragma mark - New Arch Enabled settings
|
|
|
|
- (BOOL)bridgelessEnabled
|
|
{
|
|
return YES;
|
|
}
|
|
|
|
#pragma mark - RCTComponentViewFactoryComponentProvider
|
|
|
|
#ifndef RN_DISABLE_OSS_PLUGIN_HEADER
|
|
- (nonnull NSDictionary<NSString *, Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents
|
|
{
|
|
NSMutableDictionary *dict = [super thirdPartyFabricComponents].mutableCopy;
|
|
if (!dict[@"RNTMyNativeView"]) {
|
|
dict[@"RNTMyNativeView"] = NSClassFromString(@"RNTMyNativeViewComponentView");
|
|
}
|
|
if (!dict[@"SampleNativeComponent"]) {
|
|
dict[@"SampleNativeComponent"] = NSClassFromString(@"RCTSampleNativeComponentComponentView");
|
|
}
|
|
return dict;
|
|
}
|
|
#endif
|
|
|
|
- (NSURL *)bundleURL
|
|
{
|
|
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:kBundlePath];
|
|
}
|
|
|
|
@end
|