自定义网址方案仅在应用程序位于后台时才有效?

时间:2016-04-07 14:20:02

标签: ios swift2 url-scheme

我为我的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并且应用程序未打开时调用该函数。 感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:2)

在didFinishLaunchingWithOptions中,您可以检查launchOptions是否包含密钥UIApplicationLaunchOptionsURLKey。如果您使用方案打开您的应用程序,它将在该字典中。

当应用在后台时,请使用openURL(就像您一样)。

答案 1 :(得分:0)

这几乎听起来像自定义网址设置尚未正确设置。

你的.plist文件中肯定有这些设置吗?

enter image description here

有了这些设置,只要你的应用程序启动,就应该调用application函数。

此处提供更多信息:

Custom URLs

答案 2 :(得分:0)

斯威夫特4:

我已经发现有时似乎应用程序无法打开网址只是因为构建它的phisic基础结构所需的时间(特别是如果你使用自定义的viewcontrollers或转换)。我找到了这个解决方案:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
         DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
             // your code
         }
         return true
}