In der Datei info.plist habe ich konfiguriert URL Identifier
und URL Scheme
erfolgreich. Außerdem kann ich die App über eine benutzerdefinierte URL öffnen. Das Problem ist, wenn die App die Methode zum ersten Mal startet
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) does not call.
Ich habe einige abhängige Funktionen basierend auf der obigen Methode. Wenn die App zum ersten Mal gestartet wird, kann ich nichts in meiner App sehen.
Außerdem habe ich Code in Methode hinzugefügt
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
let url = connectionOptions.urlContexts.first?.url
}
aber ich bekomme hier keine URL.
Wenn sich meine App jedoch im Hintergrundmodus befindet und ich auf URL drücke, werden die oben genannten Methoden erfolgreich aufgerufen und die abhängigen Funktionen funktionieren einwandfrei. Es folgt mein Code zur scene(_:openURLContexts:)
Methode in sceneDelegate
.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>){
let url = URLContexts.first?.url
let urlString: String = url!.absoluteString
if let urlComponents = URLComponents(string: urlString),let queryItems = urlComponents.queryItems {
queryParams = queryItems
} else {
print("invalid url")
}
guard let windowScene = (scene as? UIWindowScene) else { return }
self.window = UIWindow(windowScene: windowScene)
//self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let rootVC = storyboard.instantiateViewController(identifier: "LocationViewIdentifier") as? UIViewController else {
print("ViewController not found")
return
}
let rootNC = UINavigationController(rootViewController: rootVC)
self.window?.rootViewController = rootNC
self.window?.makeKeyAndVisible()
}
Kann mir jemand sagen, warum das erste Mal oben keine Methode aufruft?