应用间通信,从现在开始简称 IAC,是一个框架,让你的 iOS 应用能够非常容易地与设备上安装的其他支持 x-callback-url 协议的 iOS 应用进行通信。 通过 IAC,你还可以以非常简单直观的方式为你的应用添加 x-callback-url API。
IAC 目前支持 x-callback-url 1.0 草案规范。
这是原始 Objective-C 版本的 Swift 版本,此处 可用
在你的应用中的任何地方,你都可以使用以下代码调用设备上的任何外部应用
import IACCore
let client = IACClient(scheme: "appscheme")
client.performAction("action" parameters: ["param1": "value1", "param2": "value2"])
如果可用,你也可以使用你正在调用的应用的客户端子类。 在框架中,有 Instapaper 和 Google Chrome 的客户端,未来将添加更多。
例如,要从你的应用向 Instapaper 添加 URL,你可以这样做
import IACCore
let client = IACClient(scheme: "x-callback-instapaper")
client.performAction("add", parameters: ["url": "http://tapsandswipes.com"])
import IACClients
InstapaperIACClient().add("http://tapsandswipes.com")
如果你希望从外部应用回调,你可以指定成功和失败处理程序块,例如
let client = IACClient(scheme: "appscheme")
client.performAction("action",
parameters:["param1": "value1", "param2": "value2"],
handler: { result in
switch result {
case .success(let data):
print("OK: \(data)")
case .cancelled:
print("Canceller")
case .failure(let error):
print(error.localizedDescription)
}
}
)
为了使回调工作,你的应用必须支持 x-callback-url 协议。 最简单的方法是让 IAC 管理它。
按照以下简单步骤为你的应用添加 x-callback-url 支持
在你的应用的 Info.plist
中定义你的应用将响应的 URL Scheme。 请参阅 本文 中实现自定义 URL Scheme 部分。
使用 IACManager.shared.callbackURLScheme = "myappscheme"
将此 Scheme 分配给 IACManager 实例。 我建议在委托方法 application(_: , didFinishLaunchingWithOptions: )
中执行此操作
从应用委托中的 URL 处理方法调用 handleOpenURL(_:)
。 例如
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:] ) -> Bool {
return IACManager.shared.handleOpenURL(url)
}
通过这三个步骤,你的应用将可以调用其他应用并接收来自它们的回调。
如果你想通过 x-callback-url 协议为你的应用添加外部 API,你可以使用以下两种选项中的任何一种或两者都使用
直接将你的操作的处理程序块添加到 IACManager
实例,为每个操作调用 handleAction(_:, with:)
。
在你的任何类中实现 IACDelegate
协议,并将委托分配给 IACManager
实例,最好在应用委托 application(_:, didFinishLaunchingWithOptions:)
方法中。
对于同一操作,操作处理程序优先于委托。
浏览示例代码以查看所有这些的实际应用。
.Package(url: "https://github.com/tapsandswipes/Inter-AppCommunication.git", branch: "main")
添加到你的 Package.swift
中的 dependencies
中import PackageDescription
let package = Package(
name: "yourapp",
dependencies: [
.Package(url: "https://github.com/tapsandswipes/Inter-AppCommunication.git", branch: "main")
]
)
swift build
。你也可以通过将 Sources/IACCore
目录的内容复制到你的项目中来手动安装它。
在 Sources/IACClients
目录中,你可以找到一些应用的客户端,将你想使用的客户端的文件复制到你的项目中。
如果你的应用已经有 x-callback-url API,你可以通过创建 IACClient
子类并与他们共享这些类来帮助其他应用与你的应用通信。
这样,你可以实现暴露的 API,就好像该应用是调用应用中的内部组件一样。 你可以使用所需的参数实现这些方法,甚至在调用之前进行一些验证。
在 Sources/IACClients
目录中,你可以找到当前已实现的所有客户端子类。 如果你为自己的应用实现了一个,请随时与我联系,我会将其添加到存储库中。
如果你使用/喜欢应用间通信框架,请告诉我!
版权所有 (c) 2013 Antonio Cabezuelo Vivo (http://tapsandswipes.com)
特此授予任何人免费许可,以获取本软件及相关文档文件(“软件”)的副本,并在不受限制的情况下处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向其提供软件的人员在以下条件下这样做
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中,由软件或软件的使用或其他交易引起、产生或与之相关的责任。