iOS应用关闭状态下Intent处理问题(Scene架构迁移后)
问题解决:Scene架构下无法从Intent获取电台名称
你的核心问题是错误引用了外部的userActivity,而非循环中当前遍历的activity对象,导致无法正确解析Intent参数。
修正后的代码
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { logger.i("willConnectTo()") guard let _ = (scene as? UIWindowScene) else { return } for activity in connectionOptions.userActivities { if activity.activityType == "SpeelRadiostationAfIntent" { logger.i("speelRadiostationAfIntent started") // 关键修改:使用当前循环的activity对象,而非外部的userActivity guard let interaction = activity.interaction, let intent = interaction.intent as? SpeelRadiostationAfIntent, let naam = intent.radiostation else { logger.e("Failed to parse intent or radiostation parameter") return } triggerdStationsname = naam isTriggerdFromRecentAfgespeeldOrSiri = true } } }
额外排查点
- 确认
SpeelRadiostationAfIntent的Intent Definition配置:检查radiostation参数是否设置为必填,且参数类型与传递的内容匹配。 - 增加日志调试:在解析前打印
activity.interaction的内容,确认Intent是否被正确传递到App中。 - 验证后台唤醒场景:如果App从后台被Intent唤醒,还需要在
sceneDidBecomeActive或continue(_:restorationHandler:)中补充处理未捕获的UserActivity。
内容的提问来源于stack exchange,提问作者Patrick Koning
相关产品推荐
相关产品推荐

