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);
        }
    }];
相关推荐
三天不学习15 小时前
【超详细】Vue3+UniApp+.NET8集成腾讯云IM即时通信全攻略
uni-app·.net·腾讯云·im·即时通信
于先生吖16 小时前
前后端分离人事招聘项目,校招宣讲预约+社招双向撮合功能架构设计教程
java·开发语言·uni-app
QQ_51100828516 小时前
uniapp微信小程序网上饰品商城售卖系统php python物流
微信小程序·uni-app·php
2601_9557674219 小时前
iPhone 17 全系屏幕光学特性与保护膜选型技术分析
ios·ar·iphone·圆偏振光护眼·iphone17护眼钢化膜·#观复盾护景贴
2501_9159090620 小时前
深入解析Mock.js:功能、应用及实战案例,提升前端开发效率
android·ios·小程序·https·uni-app·iphone·webview
于先生吖20 小时前
前后端分离体育服务项目,场馆计费+线下赛事排行小程序部署开发教程
java·小程序·uni-app
蜡台21 小时前
Uniapp 实现预览pdf 文件
pdf·uni-app·pdfh5
不想吃饭e1 天前
uniapp-图片,视频上传组件封装
java·uni-app·音视频
pop_xiaoli1 天前
【iOS】通知传值实现
macos·ios·xcode