'Scene (_: openURLContexts :)' yöntemi çağrılmaz


9

İnfo.plist dosyasında yapılandırdım URL Identifierve URL Schemebaşarıyla. Ayrıca özel URL kullanarak uygulama açabiliyorum. Sorun, uygulamanın yöntemi ilk kez başlatmasıdır

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) does not call.

Yukarıdaki yönteme dayalı bazı bağımlı işlevsellik var. Dolayısıyla uygulama ilk başlatıldığında, uygulamamda hiçbir şey göremiyorum.

Ayrıca yöntemde kod ekledim

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

        guard let _ = (scene as? UIWindowScene) else { return }

        let url = connectionOptions.urlContexts.first?.url

    }

ama burada URL kadar sıfır alıyorum.

Ancak benim app arka plan modunda ve ben URL vurmak o zaman yukarıdaki yöntem başarıyla çağırır ve bağımlı işlevsellik iyi çalışıyor. Aşağıdaki benim scene(_:openURLContexts:)yöntemde benim kod 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()
    }

Birisi bana neden yukarıdaki yöntemi ilk kez aramıyor söyleyebilir?


Bu sorunun şu anki durumu nedir? Cevaplardan biri sorununuzu çözdü mü? Evetse, lütfen birini kabul edin. Daha fazla yardıma mı ihtiyacınız var? Cevabınız evet ise, sağlanan çözümlerin sorununuza ne yaptığını ve hala eksik olanı açıklayabilir misiniz? Bu konuda size yardımcı olmaktan memnuniyet duyarım
mmika1000

Yanıtlar:


2

Belki bu sizin durumunuza yardımcı olacaktır.

func scene (_ sahne: UIScene, willConnectTo oturumu: UISceneSession, seçenek bağlantısıOptions: UIScene.ConnectionOptions) {

    let urlinfo = connectionOptions.urlContexts
    url = urlinfo.first? .url gibi olsun! NSURL

}

func sahnesi (_ sahnesi: UIScene, openURLContexts URLContexts: Set) {

    let url = URLContexts.first! .url NSURL olarak

}


2

Aynı sorunu yaşadım ve yöntem scene(_ scene:, continue userActivity:)yalnızca uygulama açıkken çağrıldı.

Ben checked zaman connectionOptionsyönteme geçirilen scene(_ scene:, willConnectTo session, options connectionOptions:)beklenen URL ile bir kullanıcı etkinliğini vardı. Böylece, ilk yöntemi elle çağırdı:

func scene(_ scene: UIScene,
           willConnectTo session: UISceneSession,
           options connectionOptions: UIScene.ConnectionOptions) {

    if let userActivity = connectionOptions.userActivities.first {
        self.scene(scene, continue: userActivity)
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.