iOS WebViews
本指南介绍如何在更大的 iOS 应用程序中嵌入启用 Cordova 的 WebView 组件。有关这些组件如何相互通信的详细信息,请参阅应用程序插件。
对 iOS WebViews 的支持始于 Cordova 1.4 版本,使用 Cleaver
组件,Xcode 模板作为参考实现。Cordova 2.0 及更高版本仅支持基于子项目的 Cleaver 实现。
这些说明至少需要 Cordova 4.x 和 Xcode 8.0,以及来自新创建的 iOS 项目的 config.xml
文件。您可以使用命令行界面中的过程创建一个新项目,然后从 platforms/ios
中命名应用程序的子目录中获取 config.xml
文件。
要遵循这些说明,请确保您拥有最新的 Cordova 发行版。从 cordova.apache.org 下载并解压缩其 iOS 包。
您有两种方法可以将 Cordova 添加到您的项目中。第一种是使用 Carthage,第二种是手动添加 Cordova。请注意,Carthage 支持仅在 cordova-ios 版本 4.4.0 或更高版本中可用。
在使用这两种方法中的任何一种后,请继续执行 “使用 CDVViewController” 部分。
1. 使用 Carthage 将 Cordova.framework 添加到 Xcode 项目
-
安装 Carthage
-
在您的 Cartfile 中,添加(将 <version_or_tag> 替换为适当的版本)
git "git://git.apache.org/cordova-ios.git" "<version_or_tag>" # Apache
-
运行
carthage update
-
将
Carthage/Build/iOS/Cordova.framework
添加到您的 Xcode 项目中。
2. 将 Cleaver 添加到 Xcode 项目 (CordovaLib 子项目)
-
如果 Xcode 正在运行,请退出。
-
打开终端并导航到 Cordova iOS 的源代码目录。
-
将上述
config.xml
文件复制到项目目录中。 -
打开 Xcode 并使用 Finder 将
config.xml
文件复制到其项目导航器窗口中。 -
选择为任何添加的文件夹创建组,然后按完成。
-
使用 Finder 将
CordovaLib/CordovaLib.xcodeproj
文件复制到 Xcode 的项目导航器中 -
在项目导航器中选择
CordovaLib.xcodeproj
。 -
键入 Option-Command-1 组合键以显示文件检查器。
-
在文件检查器的位置下拉菜单中选择相对于组。
-
在项目导航器中选择项目图标,选择目标,然后选择构建设置选项卡。
-
为其他链接器标志值添加
-force_load
和-ObjC
。 -
单击项目导航器中的项目图标,选择目标,然后选择构建阶段选项卡。
-
展开链接二进制文件与库。
-
选择 + 按钮,并添加以下框架。或者,在项目导航器中,将它们移动到 Frameworks 组下
AssetsLibrary.framework CoreLocation.framework CoreGraphics.framework MobileCoreServices.framework
-
展开目标依赖项,如果有一个以上的框,则为带有该标签的顶部框。
-
选择 + 按钮,并添加
CordovaLib
构建产品。 -
展开链接二进制文件与库,如果有一个以上的框,则为带有该标签的顶部框。
-
选择 + 按钮,并添加
libCordova.a
。 -
将Xcode 偏好设置 → 位置 → 派生数据 → 高级… 设置为唯一。
-
在项目导航器中选择项目图标,选择您的目标,然后选择构建设置选项卡。
-
搜索头文件搜索路径。对于该设置,在下面添加以下三个值,包括引号
"$(TARGET_BUILD_DIR)/usr/local/lib/include" "$(OBJROOT)/UninstalledProducts/include" "$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include" "$(BUILT_PRODUCTS_DIR)"
从 Cordova 2.1.0 开始,
CordovaLib
已升级为使用自动引用计数 (ARC)。您无需升级到 ARC 即可使用CordovaLib
,但如果您想将您的项目升级为使用 ARC,您应该使用 编辑 → 重构 → 转换为 Objective-C ARC… 菜单中的 Xcode 迁移向导,取消选择 libCordova.a,然后运行该向导直至完成。
使用 CDVViewController
-
添加以下标头
#import <Cordova/CDVViewController.h>
-
实例化一个新的
CDVViewController
并将其保留在某处,例如,保留到类属性中CDVViewController* viewController = [CDVViewController new];
-
(可选)设置
wwwFolderName
属性,该属性默认为www
viewController.wwwFolderName = @"myfolder";
-
(可选)在
config.xml
文件的<content>
标签中设置起始页,可以是本地文件<content src="index.html" />
…或远程站点
<content src="https://apache.ac.cn" />
-
(可选)设置
useSplashScreen
属性,该属性默认为NO
viewController.useSplashScreen = YES;
-
设置视图框架。始终将其设置为最后一个属性
viewController.view.frame = CGRectMake(0, 0, 320, 480);
-
将 Cleaver 添加到视图中
[myView addSubview:viewController.view];
添加 HTML、CSS 和 JavaScript 资源
-
在项目内创建一个新目录,例如
www
。 -
将 HTML、CSS 和 JavaScript 资源放入此目录中。
-
使用 Finder 将目录复制到 Xcode 的项目导航器窗口中。
-
选择为任何添加的文件夹创建文件夹引用。
-
为您最初创建的目录设置适当的
wwwFolderName
和startPage
属性,或者在实例化CDVViewController
时使用默认值(在上一节中指定)。/* if you created a folder called 'myfolder' and you want the file 'mypage.html' in it to be the startPage */ viewController.wwwFolderName = @"myfolder"; viewController.startPage = @"mypage.html"