0

我正在开发一个 iOS 桥以将 .framework SDK 集成到 React Native 应用程序中。

此 SDK 的文档指出,我应该将 UIViewController 作为委托传递给 SDK 将通知其所有输出的框架初始化程序。

由于 React Native 应用程序是在单个 UIViewController 中构建的,因此我已将该根 UIViewController 传递给初始化程序,如下所示:

UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
if (![CustomSDK isStarted]) {
    [CustomSDK startWithDelegate:rootViewController];
}

在 React Native 文档中的 iOS 桥示例之后,我创建了一个单独的模块来处理这个我已经实现了协议方法的地方。

// CustomSDKModule.h

@interface CustomSDKModule : RCTEventEmitter <RCTBridgeModule, CustomSDKProtocol>
@end

使用此根控制器会引发一些关于 UIViewController 类型不兼容的警告,但应用程序会按预期构建和 SDK 启动。

当 SDK 尝试触发协议方法时会出现问题。我在我的 CustomSDKModule.m 文件中实现了协议方法,该文件具有初始化 SDK 的方法,但它们从不被 SDK 触发。相反,应用程序崩溃并显示以下消息:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController CustomSDKMethodName:withCaptureType:]: unrecognized selector sent to instance 0x15dd2e8b0'

我想知道这些方法是否应该在应用程序的根 UIViewController 的实现中声明?例如 AppDelegate.m

任何关于我做错或应该做的提示都值得赞赏

4

0 回答 0