You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:45:04