CallbackURLKit 2.3.0

CallbackURLKit 2.3.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2019年5月
SPM支持 SPM

phimage 维护。



  • by
  • phimage

CallbackURLKit - 应用间通信

License Platform Language Issues Cocoapod

Become a Patron! Buy me a coffee

在应用中开始集成URL方案,为什么不遵循 x-callback-url

CallbackURLKit.register(action: "play") { parameters, ... in
  self.player.play()
}

想与已经实现 x-callback-url 的众多其他应用进行交互,您也可以使用这个框架。

CallbackURLKit.perform(action: "open", urlScheme: "googlechrome-x-callback",
                             parameters: ["url": "http://www.google.com"])

用法

在其他应用上执行操作

导入 CallbackURLKit 后的代码中任何位置都可以调用

try CallbackURLKit.perform(action: "actionName", urlScheme: "applicationName",
    parameters: ["key1": "value1"])

您也可以使用一个新的 Manager 或共享实例

try Manager.shared.perform(action: "actionName", urlScheme: "application-name",
    parameters: ["key1": "value1"])

在 iOS9 中声明目标应用的 URL 方案

必须在 Info.plist 下 LSApplicationQueriesSchemes 键(一个字符串数组)中将您应用想要查询的任何 URL 方案列入白名单。

xcode-white-list

创建客户端类

或者,您可以创建一个新的Client对象,在该对象中您可以为目标应用的URL方案进行定义。

let client = Client(urlScheme: "application-url-scheme")
try client.perform(action:(..)

或者创建一个新的Client类以添加一些实用方法,这些方法可以隐藏实现细节并进行参数检查。

class GoogleChrome: Client {
  init() {
    super.init(urlScheme:"googlechrome-x-callback")
  }
  func open(url: String, ...) {
    self.perform(action: "open", parameters: ["url": url], ...)
  }
}

客户端目录中查看完整示例。(您可以通过PR添加新的Client类)

您可以使用client.appInstalled检查应用是否对URL方案做出响应。

使用回调闭包

回调允许您从目标应用接收信息或状态,但在这样做之前,您需要为您的应用添加 x-callback-url 支持

然后,您可以指定以下三个 x-callbacks 之一:成功、失败和取消

try client.perform(action: "actionName",
    onSuccess: { parameters in
    },

onFailure: { error in
    },
    onCancel: {
    }
)

为您的应用添加 x-callback-url 支持

注册您的 URL 方案

应用程序可以声明它们支持的任何自定义 URL 方案。使用信息标签的 URL 类型部分来指定您的应用程序处理的自定义 URL 方案。xcode

或者在 Info.plist 文件中直接注册您的 URL 方案

  • 添加 URL Types,然后在项目 0
  • 将文档角色设置为 Editor。
  • URL 标识符设为您的应用程序包标识符。
  • 创建一个 URL Schemes 字段,并将项目 0 设置为要使用的 URL Scheme。

Apple 文档: 使用 URL 方案与应用程序通信

使用URL方案设置框架

然后您必须将方案设置为此框架管理器

let manager =  Manager.shared
manager.callbackURLScheme = "my-application-scheme"
// or get the first from Info.plist using utility method
manager.callbackURLScheme = Manager.urlSchemes?.first

处理传入的URL

最后,要处理传入的URL,您的应用程序代理应该实现以下方法。

iOS上

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    manager.handleOpen(url: url)
    return true
}

在OSX上,如果没有其他URL事件的特殊需求,您可以在调用applicationDidFinishLaunching方法时让管理器完成所有工作,调用Manager.instance.registerToURLEvent()

添加新动作

客户端应用程序将使用以下URL结构与应用程序交互。

[url-scheme]://x-callback-url/[action]?[x-callback parameters]&[action parameters]

动作由其名称(URL路径)定义,并可选的眼睛blink action parameters

manager["myActionName"] = { parameters, success, failure, cancel in
  // action code, using or not the parameters
  ...
  // notify the client app with one of the callback
  success(nil) // or failure(exception)
}

您也可以使用以下内容在共享的Manager实例上注册动作

CallbackURLKit.register(action: "myActionName") { parameters, success, failure, cancel in

}

安装

使用CocoaPods

CocoaPods是基于Objective-C和Swift的集中化依赖管理器。请访问此处了解更多信息。

  1. 将项目添加到您的Podfile中。

    use_frameworks!
    
    pod 'CallbackURLKit'
  2. 运行pod install并打开.xcworkspace文件以启动Xcode。

客户

要获取已实现的客户,请使用以下子规格之一

pod 'CallbackURLKit/GoogleChrome'
pod 'CallbackURLKit/Ulysses' // https://ulyssesapp.com

链接