W pliku info.plist skonfigurowałem URL Identifieri URL Schemeudało mi się. Mogę również otworzyć aplikację przy użyciu niestandardowego adresu URL. Problem polega na tym, że aplikacja uruchamia się po raz pierwszy
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) does not call.
Mam pewne funkcje zależne od powyższej metody. Więc kiedy aplikacja uruchamia się po raz pierwszy, nie widzę niczego w mojej aplikacji.
Również dodałem kod w metodzie
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
let url = connectionOptions.urlContexts.first?.url
}
ale dostaję adres URL jako zero tutaj.
Jeśli jednak moja aplikacja działa w tle i trafię w adres URL, powyższe metody wywołują pomyślnie i zależna funkcjonalność działa poprawnie. Poniżej znajduje się mój kod dotyczący scene(_:openURLContexts:)metody w 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()
}
Czy ktoś może mi powiedzieć, dlaczego po raz pierwszy powyżej metody nie wywołuje?