Ios 重写canOpenUrl(:)AppDelegate
我有两个通过openUrl相互通信的应用程序。在打开第二个应用程序之前,我希望能够检查一些东西 i、 e.App1希望启动App2。因此,App2检查是否可以打开给定的URL。如果可以,继续发射。如果不能,请停止启动并在App1上显示错误 看起来iOS已经有了这个功能,但我不知道如何让它工作 这是来自App1的示例代码,将启动App2Ios 重写canOpenUrl(:)AppDelegate,ios,swift,openurl,Ios,Swift,Openurl,我有两个通过openUrl相互通信的应用程序。在打开第二个应用程序之前,我希望能够检查一些东西 i、 e.App1希望启动App2。因此,App2检查是否可以打开给定的URL。如果可以,继续发射。如果不能,请停止启动并在App1上显示错误 看起来iOS已经有了这个功能,但我不知道如何让它工作 这是来自App1的示例代码,将启动App2 let url = URL(string: "APP2://Screen1") if UIApplication.shared.canOpenURL(url
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")
}
这是尝试接受URL的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功能?App1只能检查App2是否已安装,是否可以启动,以及初始启动是否成功 App1无法获得App2的
方法中使用的结果(uquo:open:options:)
您唯一的选择是让App2掉头并使用一个URL启动App1,该URL告诉App1由于某种原因启动失败。那么,返回的bool在
应用程序(uU2;:open:options:)
方法中实际做了什么?似乎它被忽略了。操作系统可能会以某种方式使用它,但结果不会传递回App1。好的,因此,从技术上讲,我不知道哪个应用程序启动了App2,因此,如果App2无法打开,我就无法真正跳回上一个应用程序。App1传递给App2的URL需要包含足够的信息,以便App2可以反过来启动App1。我也有同样的问题,尽管我从应用程序(uu:open:options:)方法返回false,直接打开它,而不考虑返回的假值。我需要阻止应用程序打开,如果url不是预期的。