我正在开发一个 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
任何关于我做错或应该做的提示都值得赞赏