将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并添加

Interesting Posts