应用间通信 (Swift)

轻松实现 x-callback-url

应用间通信,从现在开始简称 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 支持

按照以下简单步骤为你的应用添加 x-callback-url 支持

  1. 在你的应用的 Info.plist 中定义你的应用将响应的 URL Scheme。 请参阅 本文实现自定义 URL Scheme 部分。

  2. 使用 IACManager.shared.callbackURLScheme = "myappscheme" 将此 Scheme 分配给 IACManager 实例。 我建议在委托方法 application(_: , didFinishLaunchingWithOptions: ) 中执行此操作

  3. 从应用委托中的 URL 处理方法调用 handleOpenURL(_:)。 例如

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:] ) -> Bool {
    return IACManager.shared.handleOpenURL(url)
}

通过这三个步骤,你的应用将可以调用其他应用并接收来自它们的回调。

为你的应用添加 x-callback-url API

如果你想通过 x-callback-url 协议为你的应用添加外部 API,你可以使用以下两种选项中的任何一种或两者都使用

对于同一操作,操作处理程序优先于委托。

浏览示例代码以查看所有这些的实际应用。

安装

通过 Swift Package Manager

  1. .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")
 	]
)
  1. 运行 swift build

手动

你也可以通过将 Sources/IACCore 目录的内容复制到你的项目中来手动安装它。

Sources/IACClients 目录中,你可以找到一些应用的客户端,将你想使用的客户端的文件复制到你的项目中。

为你的应用创建 IAC 客户端类

如果你的应用已经有 x-callback-url API,你可以通过创建 IACClient 子类并与他们共享这些类来帮助其他应用与你的应用通信。

这样,你可以实现暴露的 API,就好像该应用是调用应用中的内部组件一样。 你可以使用所需的参数实现这些方法,甚至在调用之前进行一些验证。

Sources/IACClients 目录中,你可以找到当前已实现的所有客户端子类。 如果你为自己的应用实现了一个,请随时与我联系,我会将其添加到存储库中。

联系方式

如果你使用/喜欢应用间通信框架,请告诉我!

许可证

MIT 许可证

版权所有 (c) 2013 Antonio Cabezuelo Vivo (http://tapsandswipes.com)

特此授予任何人免费许可,以获取本软件及相关文档文件(“软件”)的副本,并在不受限制的情况下处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向其提供软件的人员在以下条件下这样做

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中,由软件或软件的使用或其他交易引起、产生或与之相关的责任。