Я пытаюсь реализовать мост JSI в моем приложении для iOS нативного iOS, но я не могу получить объект выполнения из RCTCXXBRIDGE после RCTJavascriptDiddultailnotification CODE (It PRIESTS AS). />jsibridge.h
Код: Выделить всё
#import
#import
NS_ASSUME_NONNULL_BEGIN
@interface JSIBridge : NSObject
+ (void)setupBridge:(NSNotification *)notification bridge:(nullable RCTBridge *)bridge;
@end
NS_ASSUME_NONNULL_END
Код: Выделить всё
#import "JSIBridge.h"
#include
#import
using namespace facebook::jsi;
using namespace std;
@implementation JSIBridge
+ (void)setupBridge:(NSNotification *)notification bridge:(RCTBridge *)bridge {
RCTCxxBridge* cxxbridge = (RCTCxxBridge*)notification.userInfo[@"bridge"];
NSLog(@"[JSIBridge]: %@", cxxbridge.runtime);
}
@end
Код: Выделить всё
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
ReactNativeFactoryManager.shared.setupBridge(launchOptions: launchOptions)
NotificationCenter.default.addObserver(self,
selector: #selector(onJSLoad(notification:)),
name: NSNotification.Name("RCTJavaScriptDidLoadNotification"),
object: nil)
return true
}
@objc func onJSLoad(notification: Notification) {
JSIBridge.setupBridge(notification, bridge: ReactNativeFactoryManager.shared.getFactory().bridge)
}
// Other code...
}
Код: Выделить всё
import React
import React_RCTAppDelegate
@objc class ReactNativeFactoryManager: NSObject {
// Singleton instance
@objc static let shared = ReactNativeFactoryManager()
private let reactNativeFactory: RCTReactNativeFactory
private let delegate: ReactNativeDelegate
// Private initializer to ensure singleton usage
private override init() {
delegate = ReactNativeDelegate()
reactNativeFactory = RCTReactNativeFactory(delegate: delegate)
super.init()
}
@objc func getFactory() -> RCTReactNativeFactory {
return reactNativeFactory
}
func setupBridge(launchOptions: [UIApplication.LaunchOptionsKey: Any]?) {
reactNativeFactory.bridge = delegate.createBridge(with: delegate, launchOptions: launchOptions ?? [:])
}
}
< /code>
[b] Что я попробовал < /strong> < /p>
[list]
[*] Я подтвердил, что RCTJavaScriptDidLoadNotification
[*] Я могу получить
Код: Выделить всё
RCTCxxBridge
[*] Я пытался получить объект моста оба из
Код: Выделить всё
notification.userInfo[@"bridge"]
Код: Выделить всё
ReactNativeFactoryManager.shared.getFactory().bridge
среда [/b]
[*] React Нативная версия: 0,78
[*] Версия IOS: 18,2
[*] xcode version: 16.3
[*]
xcode: 16.3
[*]
< /ul>
Вопросы < /strong> < /p>
- Почему я не могу получить объект?
Код: Выделить всё
runtime
- Должен быть инициализированным к тому времени, когда
Код: Выделить всё
runtime
запускается?Код: Выделить всё
RCTJavaScriptDidLoadNotification
- Есть ли другой способ или время, чтобы правильно получить JSI ?
Код: Выделить всё
runtime
Спасибо за помощь или предложения! < /P>
Подробнее здесь: https://stackoverflow.com/questions/795 ... ios-bridge