将IOS本机应用程序与离子应用程序捆绑在一起
警告:此页面是非常技术性的,我希望您可能不必使用它,因为我们应该将它分成2个应用以提高性能,但是如果有帮助,请在下方评论comment
嗨,大家好。 最近,我有一个问题:“我们可以从IOS应用导航到导航应用吗?”。 您可能会想,为什么我们不创建新的App而是大声笑。 尽管如此,我必须实现它,所以我开始研究它,我将向您解释它的工作原理。
总览
此页面的目的是说明如何将iOS本机应用程序与Ionic应用程序捆绑在一起,以及如何将应用程序从主要本机应用程序切换到Ionic。 为了更加方便,我使用git子模块将离子应用程序代码提取到主应用程序。
步骤1:安装Cordova框架
由于导出的离子应用程序使用Cordova框架,因此我们也必须使用它
首先,安装依赖项项目管理,例如可可豆荚或迦太基(在此示例中为迦太基)
使用依赖库
开放终端
$ touch Cartfile
$ vim Cartfile
然后,在下面添加
github“ apache / cordova-ios”
按Control + C键盘上的
然后输入:wq!
更新迦太基
在终端中,键入以下内容
$迦太基更新
将库添加到Xcode
打开Xcode,选择要捆绑的项目
在项目导航中选择应用程序
然后,单击构建阶段
单击将二进制文件与库链接部分以展开
然后单击添加(+),然后单击添加其他…Finder将显示在屏幕上
选择Carthage(在项目文件夹上)> Build> iOS> Cordova.framework
然后点击打开
步骤2添加git子模块
在终端中键入这些命令
$ git子模块添加框架/
终端会将git的源代码加载到Frameworks文件夹中
例如,$ git子模块添加https://gitlab.com/o2oplatform/trueyours.git Frameworks / trueyours
已记录
在此步骤中,您必须在项目中具有git,然后才能运行上述命令。 如果没有,请在终端输入以下内容
git初始化
步骤3将Ionic应用安装到Xcode
将config.xml添加到项目
通过查找器转到根项目文件夹
将文件Frameworks / / platforms / ios / config.xml拖到Xcode项目导航中
重要
如果找不到平台文件夹,请在下面键入命令
$ cd Frameworks /
$ npm安装
$ npm运行build:stg
将离子源代码导入项目
拖动文件夹框架/ /平台/ ios / / www
选中复制项目(如果需要)
创建文件夹引用
添加到目标
冒充桥头
将桥接头文件在root / Framework / /platforms/ios/trueyour/Bridging-Header.h中拖到Xcode中
已记录
如果您有网桥头文件,则可以自己插入代码
将ionic插件文件夹导入项目
框架/ /平台/ ios / 插件
选中复制项目(如果需要)
建立群组
添加到Xcode项目导航的目标
添加嵌入的二进制文件
在xcode项目导航器上选择项目
点击“常规”标签,然后展开“嵌入二进制文件”部分
然后,单击“ +”按钮并添加Cordova.framework
添加链接的框架和库
嵌入式二进制文件的下一部分是链接框架和库,单击展开部分
单击“ +”,然后添加WebKit.framework和Cordova.framework
然后将Cordova.framework的状态更改为Optional
准备测试
现在,您可以将离子应用程序与iOS本机应用程序一起运行。
如果您从ionic应用程序存储库中进行更新,则只需在Frameworks / 中拉git
您不必再次设置以上步骤。
如何在离子应用程序和iOS本机应用程序之间切换
有两件事要做。 首先,创建一个函数以从本机应用程序调用Ionic应用程序。 其次,找到一种从本地应用程序中删除离子应用程序的方法
调用离子应用
要运行离子应用程序,您必须重写CDVViewController。
首先,创建一个ViewController并用CDVViewcontroller覆盖它。
其次,创建一个用于导航页面的函数,您应该可以推送导航或将其作为Navigation Controller的子类。
从离子应用导航回去
现在,我们可以在ionic应用程序上运行swift命令,因为它基于javascript语言,因此需要做一些技巧。
这个概念是使用Notification从离子应用程序通知到Native iOS应用程序。
首先,创建一个RECEIVER以接收任何消息。
将以下命令插入实现CDVViewController的ViewController中
(在此示例中,我将其推入viewDidLoad函数)。 当函数收到任何包含rawValue:” eventName”的消息时,该函数将关闭viewcontroller。
让nc = NotificationCenter.default
nc.addObserver(forName:Notification.Name(rawValue:“ eventName”),
对象:无,队列:无){
通知中
self.dismiss(动画:true,完成:nil)
}
其次,在SENDER和离子应用程序
离子应用程序需要cordova-plugin-broadcaster插件才能发送通知。
安装Cordova和Ionic Native插件:
$ ionic cordova插件添加cordova-plugin-broadcaster
$ npm install --save @ ionic-native / broadcaster
然后按照 将该插件添加到您应用的模块中的步骤进行操作
用法
将这些命令添加到类中,您将分配一个返回按钮。
从“ @ ionic-native / broadcaster”导入{Broadcaster};
构造函数(私人广播公司:Broadcaster){}
将功能添加到您将其分配为返回按钮的按钮
您可以将此行插入要导航的按钮
回去(){
this.broadcaster.fireNativeEvent('eventName',{})。then(()=> console.log('success'));
}
注意
如果出现这样的错误:
无法加载网页,并显示以下错误:无法加载资源,因为“应用程序传输安全性”策略要求使用安全连接。
转到Info.plist并添加