uniapp混合oc
uniapp 与 Objective-C 混合开发指南
实现原理
uniapp 通过原生插件机制与 Objective-C 交互,需通过原生模块桥接。核心步骤包括编写原生模块、注册插件、在 uniapp 中调用。
创建 Objective-C 原生模块
在 Xcode 中创建继承 NSObject 的类,并实现 DCUniModule 协议。示例代码:
#import "DCUniModule.h"
@interface MyNativeModule : DCUniModule
- (void)showAlert:(NSDictionary *)params;
@end
@implementation MyNativeModule
- (void)showAlert:(NSDictionary *)params {
NSString *message = params[@"message"];
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]];
[self.uniInstance.viewController presentViewController:alert animated:YES completion:nil];
}
@end
注册原生插件
在 Info.plist 中添加插件配置:

<key>dcloud_uniplugins</key>
<array>
<dict>
<key>name</key>
<string>MyNativeModule</string>
<key>class</key>
<string>MyNativeModule</string>
</dict>
</array>
uniapp 调用原生方法
通过 uni.requireNativePlugin 获取模块实例并调用方法:
const nativeModule = uni.requireNativePlugin('MyNativeModule');
nativeModule.showAlert({ message: 'Hello from Objective-C!' });
参数传递与类型映射

- 基本类型:字符串、数字、布尔值可直接传递
- 复杂对象:通过字典(NSDictionary)或数组(NSArray)转换
- 回调函数:使用
UniModuleKeepAliveCallback实现异步通信
调试与注意事项
- 确保 Xcode 工程中已集成 uniapp 原生 SDK
- 真机调试时检查证书和权限配置
- 跨平台兼容性需在 Android 端实现对应逻辑
性能优化建议
- 高频调用方法建议使用事件通知机制
- 大数据传输采用文件或本地存储中转
- 避免在主线程执行耗时原生操作
通过以上方法可实现 uniapp 与 Objective-C 的无缝混合开发,扩展原生能力同时保持跨平台特性。






