วิธีการ 'scene (_: 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

    }

แต่ฉันได้รับ ur เป็นศูนย์ที่นี่

อย่างไรก็ตามหากแอพของฉันอยู่ในโหมดแบ็กกราวน์และฉันกด 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()
    }

ทุกคนสามารถบอกฉันได้ไหมว่าทำไมครั้งแรกที่วิธีข้างต้นไม่ได้โทร


สถานะปัจจุบันของคำถามนี้คืออะไร คำตอบข้อใดข้อหนึ่งแก้ปัญหาของคุณได้หรือไม่? ถ้าใช่โปรดยอมรับหนึ่งในนั้น คุณต้องการความช่วยเหลือเพิ่มเติมหรือไม่? ถ้าใช่คุณสามารถอธิบายสิ่งที่วิธีแก้ปัญหาที่ให้ไว้กับปัญหาของคุณและสิ่งที่ยังคงหายไป? ฉันยินดีที่จะช่วยคุณในเรื่องนี้
Muli

คำตอบ:


2

บางทีนี่อาจช่วยสถานการณ์ของคุณ

func scene (_ scene: UIScene, willConnectTo เซสชัน: UISceneSession, ตัวเลือก connectionOptions: UIScene.ConnectionOptions) {

    ให้ urlinfo = connectionOptions.urlContexts
    ให้ url = urlinfo.first?. url เป็น! NSURL

}

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

    ให้ url = URLContexts.first! .url เป็น NSURL

}


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)
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.