测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可 | Apache 2 |
发布最后发布 | 2016年11月 |
由Holly Schinsky维护。
关于快速将PhoneGap/Cordova启用WebView添加到iOS原生项目(Objective-C或Swift)的资源和使用说明。
PhoneGap文档 - 内嵌WebView部分对此方法进行了全面解释,并说明了您为什么可能希望考虑此方法。
将以下内容添加到你的原生iOS项目Podfile中,以便从CocoaPods注册表中获取此依赖项:
pod 'phonegap-ios-template'
使用CocoaPods的pod
命令,从命令行安装Podfile中引用的库
pod install
关闭你的原生Xcode项目,并打开相同文件夹中的新创建的.xcworkspace
项目,该项目现在包含了所有Cordova依赖库。
你现在可以使用Cordova的任何依赖库,例如CDVViewController
。有关更多详细信息,请参阅下文。
注意:此项目假设您已经提前安装了CocoaPods
Podfile
,使用命令行pod init
以创建基本Podfiletarget
指定行之前的内容(查看演示视频)pod install
以安装Cordova依赖库pod install
创建的新.xcworkspace
文件。Pods
文件夹现在包含了Cordova依赖库:ViewController
类值更改为 CDVViewController
。使用 Xcode 构建/运行应用程序。您应该会看到 PhoneGap Hello World 示例的定制 iOS 模板版本正在运行,并且触发设备就绪事件,同时显示一些消息,以表明正在使用某些依赖插件,以确保它们已被正确引用。
注意:模板项目中的 index.js 代码包含对设备和网络信息插件的引用,以便快速测试插件设置。
target
名称更改为您的本地项目目标名称,并确保 Podfile 存在于您的 Xcode 项目根目录中。pod install
的内容,您必须关闭 Xcode 中的 Workspace 项目并打开新创建的项目。如果您使用的是包含所有插件的该项目,您可能需要更新本地项目中的 Info.plist
文件,以包含以下键(以下注为原始值):
NSCameraUsageDescription
和 NSPhotoLibraryUsageDescriptionentry
键NSContactsUsageDescription
键NSMicrophoneUsageDescription
键NSLocationAlwaysUsageDescription
或 NSLocationWhenInUseUsageDescription
键设置以上键后,应用将在用户中正确提示,显示您设置的用法字符串或如您以下所示留空的空白字符串
以下示例 Info.plist 文件显示了这些值,在普通字符串和原始键格式下设置:[查看示例
如果您使用 InAppBrowser 插件加载 http://
URL,您也将收到此错误
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
InAppBrowser - webView:didFailLoadWithError - -1022: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
并且需要设置 NSAppTransportSecurity
。如果将其设置为 NSAllowsArbitraryLoads = YES
,则所有 URL 都可以访问,但不安全。有关此设置和上面的更多信息,请查阅官方 Apple 文档。请参考上述示例 plist 图像。
如上所述,您可以使用与所述相同的 CocoaPods 方法使用 Swift 基于的项目与 Cordova 一起。当您想要开始扩展或使用 Cordova 类(由 Objective-C 编写)时,需要添加一个桥接头文件,以允许您从 Swift 类与 Objective-C 类进行通信。
从 Xcode 设置桥接头
现在回到您的桥接头文件中,导入您要在项目中使用的 Cordova 类的头文件。例如
#ifndef bridge_header_h
#define bridge_header_h
#import "CDVViewController.h"
#endif /* bridge_header_h */
一旦将头文件添加到桥接文件中,您就可以在 Swift 代码中直接使用它们。例如,在一个 ViewController.swift
文件中,您可能可以使用以下方式扩展 CDVViewController
类并调整 webview 的框架大小
import UIKit
class SecondViewController: CDVViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true);
self.webView.frame = CGRectMake(
self.view.bounds.origin.x,
self.view.bounds.origin.y+40,
self.view.bounds.width,
self.view.bounds.height-40)
}
}
观看这个 视频 来了解如何在带有实时演示的 Swift 项目的项目中使用 Cordova。