विधि 'दृश्य (_: openURLContexts :)' नहीं कहा जाता है


9

Info.plist फ़ाइल में मैंने कॉन्फ़िगर किया URL Identifierऔर URL Schemeसफलतापूर्वक। इसके अलावा, मैं कस्टम URL का उपयोग करके ऐप खोलने में सक्षम हूं। समस्या तब है जब ऐप पहली बार विधि लॉन्च करता है

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

उपरोक्त विधि के आधार पर मेरी कुछ निर्भर कार्यक्षमता है। इसलिए जब पहली बार ऐप लॉन्च हुआ तो मैं अपने ऐप में कुछ भी नहीं देख पा रहा हूं।

इसके अलावा मैंने विधि में कोड जोड़ा

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

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

        let url = connectionOptions.urlContexts.first?.url

    }

लेकिन मुझे यहाँ उर के रूप में उर मिल जाता है।

हालाँकि, यदि मेरा ऐप बैकग्राउंड मोड में है और मैंने URL को हिट किया है तो उपरोक्त विधि सफलतापूर्वक कॉल करती है और कार्यक्षमता पर काम करती है। निम्नलिखित scene(_:openURLContexts:)विधि में मेरा कोड है 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()
    }

क्या कोई मुझे बता सकता है कि पहली बार उपरोक्त विधि क्यों नहीं बुलाती है?


इस प्रश्न की वर्तमान स्थिति क्या है? क्या किसी एक उत्तर ने आपकी समस्या हल कर दी? यदि हाँ, तो कृपया उनमें से एक को स्वीकार करें। क्या आपको और अधिक मदद की जरूरत है? यदि हाँ, तो क्या आप बता सकते हैं कि प्रदान किए गए समाधान ने आपकी समस्या का क्या किया और अभी भी क्या गायब है? मुझे इस पर आपकी मदद करने में खुशी होगी
mmika1000

जवाबों:


2

शायद यह आपकी स्थिति में मदद करेगा।

फंक सीन (_ सीन: यूसीकेन, विलकनेक्ट सेशन: यूआईएससीनेशन, ऑप्शंस कनेक्शन: यूआईएससीईएन.कनेक्शन ओशन्स) {

    urlinfo = connectionOptions.urlContexts दें
    चलो url = urlinfo.first? .url के रूप में! NSURL

}

फंक सीन (_ दृश्य: यूआईएससीईएन, ओपनुरलोनटैक्स URLContexts: सेट) {

    url = URLContexts.first!। NSL के रूप में .url

}


2

मेरे पास एक ही समस्या थी, और scene(_ scene:, continue userActivity:)ऐप को खोलने पर विधि को केवल कॉल किया गया था।

जब मैंने connectionOptionsउस विधि से पास की जाँच की scene(_ scene:, willConnectTo session, options connectionOptions:)जिसमें अपेक्षित URL के साथ उपयोगकर्ता गतिविधि थी। इसलिए, मैंने पहली विधि को मैन्युअल रूप से कॉल करना समाप्त किया:

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

    if let userActivity = connectionOptions.userActivities.first {
        self.scene(scene, continue: userActivity)
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.