iOS原生和UniApp通信

1) 原生(OC)向 UniApp发送消息:

iOS项目中代码:

复制代码
 [self.uniMPInstance sendUniMPEvent:@"NativeEvent" data:@{@"msg":@"native message"}];

UniApp项目中代码:

复制代码
 uni.onNativeEventReceive((event,data)=>{
				console.log('接收到宿主App消息:' + event + data);
				this.nativeMsg = '接收到宿主App消息 event:' + event + " data: " + data;
			})
2) UniApp 向原生发送消息(打开原始页面):

UniApp代码:

复制代码
uni.sendNativeEvent('unimp-event', {
					msg: 'unimp message!!!'
				}, ret => {
					this.nativeMsg = '宿主App回传的数据:' + ret;
				})

iOS代码:

复制代码
/// 小程序向原生发送事件回调方法
/// @param appid 对应小程序的appid
/// @param event 事件名称
/// @param data 数据:NSString 或 NSDictionary 类型
/// @param callback 回调数据给小程序
- (void)onUniMPEventReceive:(NSString *)appid event:(NSString *)event data:(id)data callback:(DCUniMPKeepAliveCallback)callback {
    NSLog(@"Receive UniMP:%@ event:%@ data:%@",appid,event,data);
    // 根据event字段跳转不同页面
 /// 小程序打开状态,调用此方法可获取小程序对应的 DCUniMPViewController 实例
    UIViewController *uniMPVC = [DCUniMPSDKEngine getUniMPViewController];
    OriginViewController *vc = [[OriginViewController alloc] init];

//    vc.modalPresentationStyle = UIModalPresentationFullScreen;
//
//    [uniMPVC presentViewController:vc animated:YES completion:nil];
    // 前提是打开Uniapp的方式为push,即 configuration.openMode = DCUniMPOpenModePush;
    [uniMPVC.navigationController pushViewController:vc animated:YES];

     // 回传数据给小程序
    // DCUniMPKeepAliveCallback 用法请查看定义说明
    if (callback) {
        callback(@"native callback message",NO);
    }
    }
3) 原生 打开UniApp页面:

UniApp代码:

复制代码
// 获取配置信息
    DCUniMPConfiguration *configuration = [[DCUniMPConfiguration alloc] init];
    
    // 配置启动小程序时传递的数据(目标小程序可在 App.onLaunch,App.onShow 中获取到启动时传递的数据)
    configuration.extraData = @{ @"launchInfo":@"Hello UniMP" };
    
    // 配置小程序启动后直接打开的页面路径 例:@"pages/component/view/view?action=redirect&password=123456"
    configuration.path = @"pages/component/view/view?action=redirect&password=123456";
    
    // 开启后台运行
    configuration.enableBackground = YES;
    
    // 设置打开方式
    configuration.openMode = DCUniMPOpenModePush;
    
    // 启用侧滑手势关闭小程序
    configuration.enableGestureClose = YES;
    
    __weak __typeof(self)weakSelf = self;
    // 打开小程序
    [DCUniMPSDKEngine openUniMP:k_AppId1 configuration:configuration completed:^(DCUniMPInstance * _Nullable uniMPInstance, NSError * _Nullable error) {
        if (uniMPInstance) {
            weakSelf.uniMPInstance = uniMPInstance;
        } else {
            NSLog(@"打开小程序出错:%@",error);
        }
    }];
相关推荐
2501_9159090624 分钟前
怎么用 FlutterFlow 把应用发布到 App Store?
android·ios·小程序·https·uni-app·iphone·webview
2501_9160088917 小时前
全平台抓包工具,Windows、iPhone、Linux三个平台抓包测试
网络协议·计算机网络·网络安全·ios·adb·https·udp
2501_9159184120 小时前
怎么把 Python 写的 Flet 应用打包成 iOS App 并上架 App Store?
android·ios·小程序·https·uni-app·iphone·webview
Geek_Vison21 小时前
小程序容器如何抹平系统差异,让一个小程序运行在 iOS、安卓、鸿蒙和电脑端
小程序·uni-app·harmonyos·mpaas
PedroQue991 天前
0.5.0重磅发布:动画插件+H5体验全面优化
前端·uni-app
李游Leo1 天前
HarmonyOS 7 实战开发 04:适配手机、折叠屏与大屏布局
ios·harmonyos
终端安全笔记1 天前
iOS 27 强制 TLS 1.2:租赁设备的注册链路会在哪一环断
android·网络·安全·ios·智能手机
黑科技iOS上架1 天前
iOS深度混淆flutter应用的最佳实践
flutter·ios·混淆·审核·深度混淆
思盛iOS签名上架1 天前
IOS企业签名作用(核心作用一)
ios·testfight