Dalam file info.plist saya mengkonfigurasi URL Identifier
dan URL Scheme
berhasil. Saya juga dapat membuka aplikasi menggunakan URL khusus. Masalahnya adalah ketika aplikasi meluncurkan metode pertama kali
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) does not call.
Saya memiliki beberapa fungsi dependen berdasarkan metode di atas. Jadi ketika aplikasi diluncurkan pertama kali saya tidak dapat melihat apa pun di aplikasi saya.
Saya juga menambahkan kode dalam metode
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
let url = connectionOptions.urlContexts.first?.url
}
tapi saya mendapatkan url sebagai nihil di sini.
Namun jika aplikasi saya dalam mode latar belakang dan saya menekan URL maka metode di atas berhasil memanggil dan fungsi dependen berfungsi dengan baik. Berikut ini adalah kode saya pada scene(_:openURLContexts:)
metode disceneDelegate
.
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()
}
Adakah yang bisa memberitahu saya mengapa metode pertama kali di atas tidak menelepon?
sumber
Jawaban:
Mungkin ini akan membantu situasi Anda.
sumber
Saya memiliki masalah yang sama, dan metode
scene(_ scene:, continue userActivity:)
itu hanya dipanggil ketika aplikasi terbuka.Ketika saya memeriksa
connectionOptions
diteruskan ke metodescene(_ scene:, willConnectTo session, options connectionOptions:)
itu memiliki aktivitas pengguna dengan URL yang diharapkan. Jadi, saya akhirnya memanggil metode pertama secara manual:sumber