yihong
yihong
  • 发布:2020-07-14 10:03
  • 更新:2020-07-15 14:51
  • 阅读:972

IOS离线打包OC工程与原生OC工程代码合并,并使用Native.js调用OC项目Scene

分类:Native.js

需求如下,APP有商城和硬件控制两个独立模块,商城使用Uniapp开发,硬件控制使用IOS Object-C开发,目前需实现在Uniapp商城中调起OC项目中的硬件控制界面

安卓端已经实现,下图为Native.js调用安卓原生Activity实现代码

// 打开安卓原生 Activity  
openActivity(item) {  
  //获取宿主上下文  
  var main = plus.android.runtimeMainActivity();  
  //通过反射获取Android的Intent对象  
  var Intent = plus.android.importClass("android.content.Intent");  
  //通过宿主上下文创建 intent  
  var intent = new Intent(main.getIntent());  
  //设置要开启的Activity包类路径  a0201.tianyin.uniapp.MainActivity换掉你自己的界面  
  intent.setClassName(main, "a0201.tianyin.uniapp.SG25_08.sky_allHomeActivity");  
  //开启新的任务栈 (跨进程)  
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  //向原生界面传值操作  
  intent.putExtra("uni_key",item);  
  //开启新的界面  
  main.startActivity(intent);  
},

硬件控制模块工程目录

Uniapp IOS离线打包工程目录

希望IOS端能有通过 Native.js 调起原生界面的类似解决方案,希望有IOS开发大神出来解答一下,有酬谢!

2020-07-14 10:03 负责人:CLP 分享
已邀请:
CLP

CLP

你这贴出来的是2个原生工程,然后其中一个调另外一个工程的界面? 2个功能模块不是在一个app里?

  • yihong (作者)

    是的,这2个功能模块不是在一个app里,现在想要将两个工程合并,然后在uniapp这边有个<Button>点击后要能调起原生界面,安卓这边我是将原生代码合并在Java目录下,然后通过plus.android.runtimeMainActivity()调用,IOS这边没搞过,所以就有点蒙了

    2020-07-16 11:35

  • CLP

    回复 yihong: 可以合起来,然后你写个插件,把原生界面吊起来就可以了

    2020-07-16 13:19

该问题目前已经被锁定, 无法添加新回复