IOS 通用链接启动问题

问题描述 投票:0回答:1

我已按照此文档设置通用链接。我认为我已经成功设置了所有内容,因为当我点击通用链接时,我的应用程序正在启动,并且我在 scene(_:willConnectTo:options:) 中收到 URL,如下所示:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
    Log("SceneDelegate.scene(_:willConnectTo:options:)")
        
    let userActivities: Set<NSUserActivity> = connectionOptions.userActivities
        
    for userActivity in userActivities {
            
        guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
            let universalLink = userActivity.webpageURL else {
            Log("Not launched via universal links!")
            return
        }
            
        Log(String(format: "userActivities = %@", String(describing: userActivity)))
        Log(String(format: "universalLink = %@", universalLink.absoluteString))

        // Update UI
    }
}

但是,当我的应用程序在后台运行并使用通用链接时,我的应用程序会进入前台,但链接不会作为

NSUserActivity
对象传递到场景(_:继续:),如记录

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
        
        Log("SceneDelegate.scene(_:continue:)")
        
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let universalLink = userActivity.webpageURL else {
        Log("Not launched via universal links!")
        return
    }
        
    Log(String(format: "userActivities = %@", String(describing: userActivity)))
    Log(String(format: "universalLink = %@", universalLink.absoluteString))
        
    // Update UI
}

上述方法不会被调用,UI也不会更新。

这个stackoverflow答案也证实了我的理解,但我没有得到URL。这里缺少什么?

ios uikit ios-universal-links uiscenedelegate
1个回答
0
投票

我向 AppleDTS 提出了 TSI,他们告诉我 scene(_:continue:) 方法适用于 UIKit 应用程序。对于 SwiftUI 应用程序,我们必须使用 onOpenURL(_:perform:) 视图修饰符来处理通用链接(以及其他基于 URL 的启动,如文件启动、深层链接等),如下所示。

WindowGroup {
    ContentView()
        .onOpenURL(perform: { (universalLink: URL) in
                    
            Log(String(format: "universalLink = %@", universalLink.absoluteString))
             
            // Handle universal link 
        })
}
© www.soinside.com 2019 - 2024. All rights reserved.