SwiftJavascriptBridge 1.1.0

SwiftJavascriptBridge 1.1.0

测试已测试
Lang语言 SwiftSwift
许可 BSD
发布最后发布2015年9月
SPM支持 SPM

Gaston Montes 维护。



SwiftJavascriptBridge

iOS 中 Swift 和 Javascript 之间发送消息的桥梁。

SwiftJavascriptBridge 是一个 Swift 接口,用于在 WKWebView (Swift) 和 WebKit (Javascript) 之间桥接。

SwiftJavascriptBridge 可用于从 Swift 向 Javascript 发送消息,从 Javascript 向 Swift 发送消息,或从 Javascript 接收 Swift 发送的消息,反之亦然。

要求

SwiftJavascriptBridge 版本 最低 iOS 目标 最低 OS X 目标 备注
1.0.0 iOS 7 OS X 10.10.4 需要 Xcode 7。

开始


CocoaPods 是一款用于 iOS 的依赖项管理器,可自动化并简化将第三方库用于您项目的流程。

CocoaPods 以 Ruby gem 的形式发布,并可以通过在 Terminal.app 中运行以下命令进行安装

$ sudo gem install cocoapods
$ pod setup

2) 创建 Podfile


在项目根目录中,运行以下命令以创建 Podfile

$ pod init YOURXCODEPROJECTFILE

如果指定了 YOURXCODEPROJECTFILE 项目文件或当前目录中只有一个项目文件,则将根据项目中定义的目标自动生成目标。

3) 添加依赖项

创建了空的 Podfile,因此我们将添加依赖项到 Podfile 中,指定版本号

要使用 Pod 的最新版本,请省略版本号

pod 'SwiftJavascriptBridge'

冻结到特定版本号

pod 'SwiftJavascriptBridge', '0.0.1'

使用 logical 运算符

  • '> 0.1',任何高于 0.1 的版本。
  • '>= 0.1',任何大于或等于 0.1 的版本。
  • '< 0.1',任何低于 0.1 的版本。
  • '<= 0.1',任何低于或等于 0.1 的版本。

使用 optimistic 运算符

  • '~> 0.1.0',版本 0.1.0 或更高,最高至 0.2,但不包括 0.2。
  • '~> 0.1',版本 0.1 或更高,最高至 1.0,但不包括 1.0。

4) 安装依赖项


在您的项目中安装 Pods 依赖项。运行以下命令

$ pod install

从现在开始,请确保在构建项目时总是打开生成的 Xcode 工作区文件 (.xcworkspace),而不是项目文件。

安装

SwiftJavascriptBridge 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "SwiftJavascriptBridge"

通讯

  • 如果您需要有 帮助,请使用 Stack Overflow。 (标记 ‘swiftjavascriptbridge’)
  • 如果您想 提问,请使用 Stack Overflow
  • 如果您 发现了一个错误,并且 能够提供重现步骤,请创建一个 issue。
  • 如果您 有功能请求,请创建一个 issue。
  • 如果您 想贡献,提交一个 pull request。
  • 如果您 想联系 项目所有者,请给 Gastón Montes 发邮件。

架构

SwiftJavascriptBridge

Swift

  • public func bridgeLoadScriptFromURL(urlString : String)
  • public func bridgeCallFunction(jsFunctionName: String, data: AnyObject?)
  • public func bridgeRemoveHandler(handlerName: String)
  • public func bridgeAddHandler(handlerName: String, handlerClosure: HandlerClosure)

API 参考

Swift API

public func bridgeLoadScriptFromURL(urlString : String)

加载包含 JavaScript 代码的 'urlString’ 页面。在页面加载后,JavaScript 函数可以调用 Swift 处理器,Swift 函数也可以调用 JavaScript 函数。

  • “参数”
    • urlString: 要加载的 URL 字符串。

示例

var bridge: SwiftJavascriptBridge = SwiftJavascriptBridge.bridge()
self.bridge.bridgeLoadScriptFromURL("URLToLoad")

public func bridgeAddHandler(handlerName: String, handlerClosure: HandlerClosure)

添加 Swift 'handlerName’ 处理器。在调用 bridgeLoadScriptFromURL() 之前,bridgeAddHandler 不会有任何效果。bridgeAddHandler() 函数可以在任何时间调用,甚至在页面加载之前。

  • 参数:
    • handlerName: 要添加的 Swift 处理器的名称。
    • handlerClosure: 当 JavaScript 调用 Swift 'handlerName’ 处理器时将被调用的闭包 (块代码)。

示例

var bridge: SwiftJavascriptBridge = SwiftJavascriptBridge.bridge()
self.bridge.bridgeAddHandler("aHandlerName", handlerClosure: { (data: AnyObject?) -> Void in
    // Handler called from JS.
    NSLog(@"Handler called from JS.", nil);
});

public func bridgeRemoveHandler(handlerName: String)

移除 Swift 'handlerName’ 处理器。在调用 bridgeLoadScriptFromURL() 之前,bridgeRemoveHandler 不会有任何效果。

  • 参数:
    • handlerName: 要删除的 Swift 处理器的名称。

示例

var bridge: SwiftJavascriptBridge = SwiftJavascriptBridge.bridge()
self.bridge.bridgeRemoveHandler("aHandlerName")

public func bridgeCallFunction(jsFunctionName: String, data: AnyObject?)

调用名为 'jsFunctionName’ 的 JavaScript 函数。'jsFunctionName’ 必须在 bridgeLoadScriptFromURL() 函数加载的页面中声明,否则调用将没有任何效果。bridgeCallHandler() 函数可以在任何时间调用,甚至在页面加载之前。

  • 参数:
    • jsFunctionName:要调用的JavaScript函数名称。'jsFunctionName' 函数名称不应包含括号。
    • data:必须转换成JSON数据对象的对象。'data' 必须包含以下属性
      • 顶级对象是一个数组或字典
      • 所有对象都是字符串、双精度浮点数、整数或浮点数。
      • 所有字典键都是字符串。
      • 可以是双精度浮点数、浮点数、整数或字符串。

示例

var bridge: SwiftJavascriptBridge = SwiftJavascriptBridge.bridge()
self.bridge.bridgeCallFunction("swiftCallJSFunction", data: nil)

示例

包含一个示例项目与此存储库中。要运行示例项目,首先克隆存储库,然后从示例目录中运行pod install

注意:示例项目使用与iOS 8.3或更高版本兼容的Nimble 2.0.0rc 测试框架。因此,示例项目的开发目标是8.3,但SwiftJavascriptBridge与iOS 8.0或更高版兼容。

贡献者 & Forks

贡献者:https://github.com/Elgatomontes/SwiftJavascriptBridge/graphs/contributors

Forks:https://github.com/Elgatomontes/SwiftJavascriptBridge/network/members

致谢

SwiftJavascriptBridge 由 Gastón Montes 所有并维护。

许可证

SwiftJavascriptBridge 在BSD许可证下提供。有关更多信息,请参阅LICENSE文件。