我为我的iOS应用程序定义了一个自定义网址方案,以便可以从网站访问它。当我在safari中键入我的自定义url方案时,应用程序会打开,但我的AppDelegate中的以下函数不会被调用:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
print("Scheme: \(url.scheme)");
print("Query: \(url.absoluteString)");
return true;
}
仅在应用程序打开并在后台运行时才会调用它。我希望在我在safari中输入url并且应用程序未打开时调用该函数。 感谢任何帮助,谢谢!
答案 0 :(得分:2)
在didFinishLaunchingWithOptions中,您可以检查launchOptions是否包含密钥UIApplicationLaunchOptionsURLKey。如果您使用方案打开您的应用程序,它将在该字典中。
当应用在后台时,请使用openURL(就像您一样)。
答案 1 :(得分:0)
这几乎听起来像自定义网址设置尚未正确设置。
你的.plist文件中肯定有这些设置吗?
有了这些设置,只要你的应用程序启动,就应该调用application
函数。
此处提供更多信息:
答案 2 :(得分:0)
我已经发现有时似乎应用程序无法打开网址只是因为构建它的phisic基础结构所需的时间(特别是如果你使用自定义的viewcontrollers或转换)。我找到了这个解决方案:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
// your code
}
return true
}