React Native CarPlay应用在手机APP关闭时无法加载JavaScript的问题
React Native CarPlay 离线加载JavaScript问题
我正在使用react-native-carplay库开发带有CarPlay支持的React Native应用。手机APP处于打开状态时,CarPlay界面可正常工作,但关闭手机APP后,CarPlay无法加载JavaScript;目前即使手机APP打开时,CarPlay也无法加载JS,不过这个问题相对容易修复。
我已经尝试遵循相关README指引,但收效甚微。
相关代码片段
AppDelegate.mm(精简合并版)
@implementation AppDelegate - (BOOL)initAppFromScene:(UISceneConnectionOptions *)connectionOptions { if (self.rootView == nil) { self.rootViewFactory = [self createRCTRootViewFactory]; NSDictionary *initProps = [self prepareInitialProps]; self.rootView = [self.rootViewFactory viewWithModuleName:self.moduleName initialProperties:initProps launchOptions:[self connectionOptionsToLaunchOptions:connectionOptions]]; return YES; } return NO; } // 其他必要方法... @end
CarSceneDelegate.mm(精简合并版)
@implementation CarSceneDelegate - (void)templateApplicationScene:(CPTemplateApplicationScene *)templateApplicationScene didConnectInterfaceController:(CPInterfaceController *)interfaceController { AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [appDelegate initAppFromScene:nil]; UIView *carPlayRootView = [appDelegate.rootViewFactory viewWithModuleName:@"CarPlayApp" initialProperties:nil launchOptions:nil]; UIViewController *rootViewController = appDelegate.createRootViewController; [appDelegate setRootView:appDelegate.rootView toRootViewController:rootViewController]; CPWindow *carWindow = templateApplicationScene.carWindow; carWindow.rootViewController = rootViewController; [carPlayRootView setFrame:carWindow.bounds]; [carWindow addSubview:carPlayRootView]; [RNCarPlay connectWithInterfaceController:interfaceController window:carWindow]; } // 其他必要方法... @end
SceneDelegate.mm(精简合并版)
@implementation SceneDelegate - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { if ([scene isKindOfClass:[UIWindowScene class]]) { AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; BOOL hasCreatedBridge = [appDelegate initAppFromScene:connectionOptions]; UIViewController *rootViewController = appDelegate.createRootViewController; [appDelegate setRootView:appDelegate.rootView toRootViewController:rootViewController]; UIWindow *window = [[UIWindow alloc] initWithWindowScene:scene]; window.rootViewController = rootViewController; self.window = window; appDelegate.window = window; [self.window makeKeyAndVisible]; // 处理启动屏... } } // 其他必要方法... @end
JavaScript代码
import { AppRegistry } from "react-native"; import CarCode from "./carplay/CarCode"; AppRegistry.registerComponent("CarPlayApp", () => CarCode);
已尝试的解决方法
- 在CarPlay场景代理中初始化React Native桥接
- 为CarPlay创建单独的根视图
- 确保JavaScript包已加载并执行
核心疑问
尽管进行了这些尝试,当手机APP未运行时,CarPlay界面仍然空白。原生iOS代码似乎正常工作,但JavaScript未被加载或执行。我遗漏了什么才能确保React Native JavaScript代码即使在手机APP关闭时也能在CarPlay中运行?
补充信息
- React Native版本:75.0
- react-native-carplay版本:2.4.1-beta.0
- iOS版本:16.6
内容的提问来源于stack exchange,提问作者LogicalLegend007
相关产品推荐
相关产品推荐

