覆盖 canOpenUrl(_:) AppDelegate
Override canOpenUrl(_:) AppDelegate
我有两个应用程序通过 openUrl 相互通信。我希望能够在打开第二个应用程序之前检查几项内容。
即App1 想要启动 App2。因此 App2 检查它是否可以打开给定的 URL。如果可以,继续发布。如果不能,停止启动并在 App1 上显示错误。
似乎 iOS 已经有了这个功能,但我不知道如何让它工作。
这是来自 App1 的示例代码,它将启动 App2。
let url = URL(string: "APP2://Screen1")
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: { _ in })
} else {
self.showError("Couldn't Open App2")
}
这是 App2 的示例代码,它会尝试接受 URL。
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
guard options[.sourceApplication] as? String == "com.test.app1" else { return false }
if self.canLogInFrom(url) {
return true
else {
return false
}
如果我 return 错误,无论如何它都会继续发布。不管我在这个函数中 return 是什么,无论如何它都会启动 App2。
在 App2 中有没有办法实现 AppDelegate CanOpenURL 功能?
App1 只能检查 App2 是否已安装,是否可以启动启动以及初始启动是否成功。
App1 无法获取 App2 的 application(_:open:options:)
方法中使用的结果。
您唯一的选择是让 App2 转身并启动 App1,其中 URL 告诉 App1 由于某种原因启动失败。
我有两个应用程序通过 openUrl 相互通信。我希望能够在打开第二个应用程序之前检查几项内容。
即App1 想要启动 App2。因此 App2 检查它是否可以打开给定的 URL。如果可以,继续发布。如果不能,停止启动并在 App1 上显示错误。
似乎 iOS 已经有了这个功能,但我不知道如何让它工作。
这是来自 App1 的示例代码,它将启动 App2。
let url = URL(string: "APP2://Screen1")
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: { _ in })
} else {
self.showError("Couldn't Open App2")
}
这是 App2 的示例代码,它会尝试接受 URL。
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
guard options[.sourceApplication] as? String == "com.test.app1" else { return false }
if self.canLogInFrom(url) {
return true
else {
return false
}
如果我 return 错误,无论如何它都会继续发布。不管我在这个函数中 return 是什么,无论如何它都会启动 App2。
在 App2 中有没有办法实现 AppDelegate CanOpenURL 功能?
App1 只能检查 App2 是否已安装,是否可以启动启动以及初始启动是否成功。
App1 无法获取 App2 的 application(_:open:options:)
方法中使用的结果。
您唯一的选择是让 App2 转身并启动 App1,其中 URL 告诉 App1 由于某种原因启动失败。