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

iOS App Intent中Measurement类型参数的实现问题求助

解决App Intent中Measurement的Sendable警告与Siri识别问题

针对你遇到的两个问题,分享实际可行的解决方法:

1. 消除UnitLength不遵循Sendable协议的警告

UnitLength在部分Foundation版本中未默认遵循Sendable,可以通过两种方式解决:

  • 方式一:扩展显式遵循Sendable
    直接给UnitLength添加扩展,让它符合协议:
    extension UnitLength: Sendable {}
    
  • 方式二:使用@unchecked Sendable抑制警告
    如果你确认Measurement<UnitLength>的使用是线程安全的,可以在属性上添加标注:
    @Parameter(title: "Measurement")
    var measurement: Measurement<UnitLength> @unchecked Sendable
    

2. 让Siri正确识别测量值请求

Siri无法识别通常是因为意图参数的语义描述不足或配置缺失,可按以下步骤调整:

  • 完善参数摘要与描述
    在你的LogMileageIntent中补充parameterSummary,明确参数的语义,同时给@Parameter添加详细描述:
    struct LogMileageIntent: AppIntent, CustomIntentMigratedAppIntent, PredictableIntent {
        static var title: LocalizedStringResource = "Log Mileage"
        static var description = IntentDescription("Tracks your driving mileage.")
    
        @Parameter(title: "Measurement", description: "The distance driven, like miles or kilometers")
        var measurement: Measurement<UnitLength>
    
        static var parameterSummary: some ParameterSummary {
            Summary("Log \(\.$measurement) of driving mileage")
        }
    
        // 其他实现代码...
    }
    
  • 使用明确的语音指令测试
    测试时使用清晰的指令,比如“Log 3 miles of driving mileage”或“记录6公里的行车里程”,避免模糊表述。
  • 确认Intent注册配置
    检查Info.plist中是否正确注册了该Intent,确保Siri能检索到你的意图定义。

很多开发者已经成功实现了这个功能,核心就是处理好Sendable的兼容性,同时给Siri足够的语义信息来解析测量值参数。

内容的提问来源于stack exchange,提问作者Will Alexander

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:05:08