iOS应用后台点击Universal Link无法获取URL,求对应触发方法
iOS后台点击Universal Link无法获取URL的解决方案
当应用处于后台时,点击Universal Link唤醒应用,需在SceneDelegate中实现对应方法来获取跳转URL——iOS 13+启用Scene架构后,原AppDelegate中的application(_:continue:restorationHandler:)方法不再触发。
核心解决方法
实现SceneDelegate的scene(_:continue:)方法,从NSUserActivity中提取Universal Link的URL:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { // 验证是否为Universal Link类型的用户活动 guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let targetURL = userActivity.webpageURL else { return } // 在这里处理获取到的URL,执行对应功能跳转 processUniversalLink(url: targetURL) } // 自定义URL处理方法示例 private func processUniversalLink(url: URL) { // 根据URL的路径、参数等,跳转至对应页面 if url.path.hasPrefix("/article") { // 跳转到文章详情页逻辑 } else if url.path.hasPrefix("/profile") { // 跳转到个人主页逻辑 } }
关键注意事项
scene(_:willContinueUserActivityWithType:)仅为唤醒前的通知方法,无法直接获取URL,系统会在该方法后自动调用scene(_:continue:),只需在后者中处理逻辑即可。- 确认
Info.plist中UIApplicationSceneManifest配置正确,已指定SceneDelegate类,保证Scene架构正常运行。 - 务必校验
userActivity.activityType为NSUserActivityTypeBrowsingWeb,避免处理非Universal Link类型的用户活动。
内容的提问来源于stack exchange,提问作者vinu
相关产品推荐
相关产品推荐

