phonegap-ios-template 0.2.4

phonegap-ios-template 0.2.4

测试已测试
语言语言 Obj-CObjective C
许可 Apache 2
发布最后发布2016年11月

Holly Schinsky维护。



phonegap-webview-ios

关于快速将PhoneGap/Cordova启用WebView添加到iOS原生项目(Objective-C或Swift)的资源和使用说明。

PhoneGap文档 - 内嵌WebView部分对此方法进行了全面解释,并说明了您为什么可能希望考虑此方法。

快速开始使用

  1. 将以下内容添加到你的原生iOS项目Podfile中,以便从CocoaPods注册表中获取此依赖项:

    pod 'phonegap-ios-template' 
    
  2. 使用CocoaPods的pod命令,从命令行安装Podfile中引用的库

    pod install
    
  3. 关闭你的原生Xcode项目,并打开相同文件夹中的新创建的.xcworkspace项目,该项目现在包含了所有Cordova依赖库。

  4. 你现在可以使用Cordova的任何依赖库,例如CDVViewController。有关更多详细信息,请参阅下文。

详细使用说明 - 在原生iOS项目中嵌入Cordova

简短演示视频

注意:此项目假设您已经提前安装了CocoaPods

  1. 创建原生Xcode项目 - 例如使用单视图控制器项目模板创建单视图项目
  2. 在项目根目录中创建一个Podfile,使用命令行
  3. 从命令行运行pod install以安装Cordova依赖库安装
  4. 关闭你的Xcode项目
  5. 打开由pod install创建的新.xcworkspace文件。
  6. 请注意,新的Pods文件夹现在包含了Cordova依赖库:原生项目中的Pods
  7. 现在在您的本地项目中使用 Cordova 视图。打开 Main.storyboard 文件,在 Identity Inspector 中将默认的 ViewController 类值更改为 CDVViewController
    Create Single View Project

运行它

使用 Xcode 构建/运行应用程序。您应该会看到 PhoneGap Hello World 示例的定制 iOS 模板版本正在运行,并且触发设备就绪事件,同时显示一些消息,以表明正在使用某些依赖插件,以确保它们已被正确引用。

PhoneGap iOS Template in Native Project

注意:模板项目中的 index.js 代码包含对设备和网络信息插件的引用,以便快速测试插件设置。

Running device plugin Running connection plugin

提示

  • 请确保在 Podfile 中将 target 名称更改为您的本地项目目标名称,并确保 Podfile 存在于您的 Xcode 项目根目录中。
  • 您可能需要更改指定的平台版本或为其他插件指定特定版本。
  • 如果在 podfile 中更新了必须再次运行 pod install 的内容,您必须关闭 Xcode 中的 Workspace 项目并打开新创建的项目。

Info.plist 键

如果您使用的是包含所有插件的该项目,您可能需要更新本地项目中的 Info.plist 文件,以包含以下键(以下注为原始值):

  1. 相机 - 必须设置 NSCameraUsageDescriptionNSPhotoLibraryUsageDescriptionentry
  2. 联系人 - 必须设置 NSContactsUsageDescription
  3. 媒体捕获 - 必须设置 NSMicrophoneUsageDescription
  4. 地理定位 - 必须设置 NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription

设置以上键后,应用将在用户中正确提示,显示您设置的用法字符串或如您以下所示留空的空白字符串

Contacts Usage Location Usage Mic Usage

以下示例 Info.plist 文件显示了这些值,在普通字符串和原始键格式下设置:[查看示例 plist sample

如果您使用 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 图像。

基于 Swift 的项目

如上所述,您可以使用与所述相同的 CocoaPods 方法使用 Swift 基于的项目与 Cordova 一起。当您想要开始扩展或使用 Cordova 类(由 Objective-C 编写)时,需要添加一个桥接头文件,以允许您从 Swift 类与 Objective-C 类进行通信。

从 Xcode 设置桥接头

  1. 转到 文件->新建->文件->头文件,选择一个名称,并将其保存到您的 Xcode 项目的根目录。
  2. 接下来,您需要确保桥接头文件名已设置在项目的构建设置中。要做到这一点,请点击导航器中项目的根目录。然后在 构建设置 标签中,查找 Swift 编译器 - 代码生成 部分,并输入 Objective-C 桥接头 的头文件名。下面有一个示例:

  1. 现在回到您的桥接头文件中,导入您要在项目中使用的 Cordova 类的头文件。例如

      #ifndef bridge_header_h
      #define bridge_header_h
    
      #import "CDVViewController.h"
    
      #endif /* bridge_header_h */
    
  2. 一旦将头文件添加到桥接文件中,您就可以在 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。

更多资源