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);
}
}];