我正在应用程序中实现URL方案,当应用程序位于前台或后台时,它们总体上可以正常工作。但是,我注意到,当它完全关闭并且另一个应用尝试使用通常可以正常工作的URL(例如app:page?image=1
)访问内容时,它只是打开了该应用,但从未捕获到该内容。
我已经在AppDelegate和SceneDelegate方法中都设置了代码
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:])
和
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
[当应用程序在后台,前景或关闭时打开
仅在前景或背景中打开
由于您的应用当前为not running,因此将使用这些启动选项启动。即这些选项将改为传递给willFinishLaunchingWithOptions:
/ didFinishLaunchingWithOptions:
。将您的代码添加到以下方法之一。
有关更多信息,请阅读有关如何Respond to the Launch of Your App,或更具体地说Determine Why Your App Was Launched的文档。
编辑:
正如下面@ paulw11所评论的,场景委托的工作方式不同,必须单独处理。
但是,在Respond to Scene-Based Life-Cycle Events部分中,最后一点是:
除了与场景有关的事件,您还必须响应使用UIApplicationDelegate对象启动应用。对于有关应用启动时的操作的信息,请参见Responding to the Launch of Your App
所以我想,我们仍然需要处理willdidFinishLaunchingWithOptions
/ didFinishLaunchingWithOptions
中的启动。