Trong tập tin info.plist tôi đã cấu hình URL Identifier
và URL Scheme
thành công. Ngoài ra tôi có thể mở ứng dụng bằng URL tùy chỉnh. Vấn đề là khi ứng dụng khởi chạy lần đầu tiên phương thức
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) does not call.
Tôi có một số chức năng phụ thuộc dựa trên phương pháp trên. Vì vậy, khi ứng dụng ra mắt lần đầu tiên tôi không thể thấy bất cứ điều gì trong ứng dụng của mình.
Ngoài ra tôi đã thêm mã trong phương thức
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
let url = connectionOptions.urlContexts.first?.url
}
nhưng tôi nhận được url như không ở đây.
Tuy nhiên, nếu ứng dụng của tôi ở chế độ nền và tôi nhấn URL thì các cuộc gọi phương thức trên thành công và chức năng phụ thuộc hoạt động tốt. Sau đây là mã của tôi về scene(_:openURLContexts:)
phương pháp trong 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()
}
Bất cứ ai có thể cho tôi biết tại sao lần đầu tiên phương pháp trên không gọi?