开始在应用中集成 URL scheme,为什么不遵守 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"])
你必须在 Info.plist 文件中的 LSApplicationQueriesSchemes 键(字符串数组)下,将你的应用想要查询的任何 URL scheme 加入白名单
或者,你可以创建一个新的 Client
对象,在其中定义目标应用的 URL scheme。
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], ...)
}
}
查看 Clients 目录中的完整示例。(你可以提交 PR 来添加新的 Client
类)
你可以使用 client.appInstalled
检查应用程序是否响应 URL scheme
回调允许你从目标应用程序接收数据,但在执行此操作之前,你需要向你的应用添加 x-callback-url 支持。
然后你可以指定 3 个 x-callback 中的一个:success、failure 和 cancel。
try client.perform(action: "actionName",
onSuccess: { parameters in
},
onFailure: { error in
},
onCancel: {
}
)
应用可以声明它们支持的任何自定义 URL scheme。使用 Info 标签的 URL Types 部分来指定你的应用处理的自定义 URL scheme。
或者直接在 Info.plist 文件中注册你的 URL Scheme
Apple 文档:使用 URL Schemes 与应用通信。
然后你必须将 scheme 设置到此框架管理器
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,你的应用代理应该实现以下方法。
在 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 参数]&[action 参数]
一个操作由其名称(URL 路径)和可选的操作参数定义。
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 是 Objective-C 和 Swift 的集中式依赖管理器。点击此处了解更多。
将项目添加到你的 Podfile。
use_frameworks!
pod 'CallbackURLKit'
运行 pod install
并打开 .xcworkspace
文件以启动 Xcode。
要获取已实现的 Clients,请使用其中一个 subspec
pod 'CallbackURLKit/GoogleChrome'
pod 'CallbackURLKit/Ulysses' // https://ulyssesapp.com