覆盖canOpenUrl(_ :) AppDelegate

时间:2017-04-26 15:28:46

标签: ios swift openurl

我有两个通过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 的示例代码。

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
}

如果我返回false,它会继续进行启动。无论我在这个函数中返回什么都无关紧要,无论如何都会启动App2。

在App2中有没有办法,我可以实现AppDelegate CanOpenURL功能?

1 个答案:

答案 0 :(得分:2)

App1只能检查是否安装了App2,是否可以启动启动以及初始启动是否成功。

App1无法获取App2的application(_:open:options:)方法中使用的结果。

你唯一的选择是让App2转身并启动App1,其中的URL告诉App1由于某种原因启动失败。