swift2 自定义url方案仅在应用程序处于后台时才起作用?

7z5jn7bk  于 2022-11-06  发布在  Swift
关注(0)|答案(3)|浏览(144)

我为iOS应用定义了自定义url方案,以便可以从网站访问它。当我在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时,应用程序没有打开时,该函数会被调用。任何帮助都将不胜感激,谢谢!

7hiiyaii

7hiiyaii1#

在您的didFinishLaunchingWithOptions中,您可以检查launchOptions是否包含键UIApplicationLaunchOptionsURLKey。如果您使用方案打开应用,则该方案将位于该字典中。
当应用程序在后台运行时,请使用openURL(就像您已经做的那样)。

1l5u6lss

1l5u6lss2#

雨燕4:
我发现,有时似乎应用程序无法打开网址,只是因为需要时间来建立它的物理基础设施(特别是如果你使用自定义的视图控制器或过渡).我发现这个解决方案:

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

2izufjch3#

这听起来像是“自定义URL”设置没有正确设置。
您的.plist文件中确实有这些设置吗?

有了这些设置,无论何时启动应用程序,都应该调用application函数。
更多信息,请访问:
Custom URLs

相关问题