一个 iOS 扩展执行器,允许绕过 UIActivityViewController
直接执行 UI 和非 UI 动作扩展。
推荐使用 Swift Package Manager 将 LNExtensionExecutor
集成到你的项目中。
LNExtensionExecutor
支持 SPM 5.1.0 及以上版本。 要使用 SPM,你应该使用 Xcode 11 打开你的项目。 点击 File
-> Swift Packages
-> Add Package Dependency
,输入 https://github.com/LeoNatan/LNExtensionExecutor
。 选择你想要使用的版本。
你也可以手动将包添加到你的 Package.swift 文件中
.package(url: "https://github.com/LeoNatan/LNExtensionExecutor.git", from: "1.0")
以及你的 target 中的依赖
.target(name: "BestExampleApp", dependencies: ["LNExtensionExecutor"]),
在下面的例子中,WhatsApp 分享扩展程序使用图片打开
import LNExtensionExecutor
//...
do {
let executor = try LNExtensionExecutor(extensionBundleIdentifier: "net.whatsapp.WhatsApp.ShareExtension")
let (completed, returnItems) = try await executor.execute(withActivityItems: activityItems, on: self)
print("completed: \(completed) return items: \(returnItems)")
} catch(let error) {
print("error: \(error.localizedDescription)")
}
提供给 execute
方法的 activity items 应该与传递给 UIActivityViewController
实例的相同。
你需要自己确定扩展程序的 bundle identifier。 一种发现它们的方法是使用 UIActivityViewController
并使用闭包设置 completionWithItemsHandler
属性,并打印 activityType
参数。 请注意,在某些情况下,activity type 与扩展程序的 bundle identifier 不同。 另一种方法是从 App Store 获取 IPA 或在越狱设备中访问文件系统,并检查扩展程序的 Info.plist 以获取 bundle identifier。