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_915106322 小时前
iOS 抓包工具在不同场景的实际作用
android·macos·ios·小程序·uni-app·cocoa·iphone
蒜苔肉丝2 小时前
uniapp 解决微信小程序ios自带的上拉下拉(橡皮筋)效果
微信小程序·小程序·uni-app
Aress"2 小时前
scrollTop不生效解决(uniapp)
uni-app
Edward.W2 小时前
Android (ADB)、iOS、OpenHarmony 常用调试命令对照表
android·ios·adb
GuoyeZhang2 小时前
解决uniapp在内网构建ETIMEDOUT卡住的问题
uni-app·etimedout
sweet丶3 小时前
CocoaPods Podfile优化设置手册-持续更新
ios·架构
karshey18 小时前
【IOS webview】h5页面播放视频时,IOS系统显示设置的icon
前端·ios
游戏开发爱好者818 小时前
抓包工具有哪些?代理抓包、数据流抓包、拦截转发工具
android·ios·小程序·https·uni-app·iphone·webview
bybitq20 小时前
Go函数闭包实战-复用函数
ios·golang·xcode