Unable perform AppIntent in interactive Widget

I am currently developing an interactive widget, but an AppIntent issue blocked me for 2 days. I have an AppIntent named TimerActionIntent, which has two parameters: TimerType and TimerAction. Here is the code: import AppIntents

enum TimerType: Int, CaseIterable, AppEnum, AppEntity {
    case sleep
    case feeding

    static let typeDisplayRepresentation: TypeDisplayRepresentation = "Timer Type"

    static let caseDisplayRepresentations: [TimerType : DisplayRepresentation] = [
        .sleep: "Sleep",
        .feeding: "Feeding"
    ]
}

enum TimerAction: Int, CaseIterable, AppEnum, AppEntity {
    case start
    case pause
    case stop

    static let typeDisplayRepresentation: TypeDisplayRepresentation = "Timer Action"

    static let caseDisplayRepresentations: [TimerAction : DisplayRepresentation] = [
        .start: "Start",
        .pause: "Pause",
        .stop: "Stop"
    ]
}

struct TimerActionIntent: AppIntent {
    static let title: LocalizedStringResource = "Operate a Log Timer"

    @Parameter(title: "Timer", default: .sleep)
    var timerType: TimerType

    @Parameter(title: "Action", default: .start)
    var action: TimerAction

    static var isDiscoverable: Bool = false

    static var openAppWhenRun: Bool = false

    init() {}

    init(timerType: TimerType, action: TimerAction) {
        self.timerType = timerType
        self.action = action
    }

    func perform() async throws -> some IntentResult {
            // perform the action
            Self.openAppWhenRun = state == .stopped
        }

        return .result()
    }
}

I can't execute the AppIntent if using the following code:

Button(intent: TimerActionIntent(timerType: .sleep, action: .start)) { 
    // button view
}

// or

let intent = TimerActionIntent()
intent.timerType = timerType
intent.action = .start

Button(intent: intent) { 
    // button view
}

and only execute when initialize TimerActionIntent without any parameters and @Parameter has the default value. e.g.

Button(intent: TimerActionIntent()) { 
    // button view
}

I have some logs in the Console app:

default 17:51:27.626382+0800 linkd Accepting XPC connection from PID 39255 for service "com.apple.linkd.registry"
default 17:51:27.637511+0800 WidgetsExtension Beginning PerformAction <<SB:788D850BBBC5>>
default 17:51:27.637540+0800 WidgetsExtension Beginning InitializeAction <<SB:ACBC7A27CCBF>>
default 17:51:27.637556+0800 WidgetsExtension [InitializeAction <<N:ACBC7A27CCBF>>] Found TimerActionIntent matching TimerActionIntent registered with AppManager
default 17:51:27.637725+0800 WidgetsExtension Prepared timerType to TimerType(TimerType/0))
default 17:51:27.637744+0800 WidgetsExtension Prepared action to TimerAction(TimerAction/0))
default 17:51:27.637772+0800 WidgetsExtension Ending InitializeAction <<SE:ACBC7A27CCBF>>
default 17:51:27.637795+0800 WidgetsExtension Beginning ResolveParameters <<SB:6C7CA02308AD>>
default 17:51:27.639807+0800 WidgetsExtension Building resolver for parameter timerType<TimerType> = TimerType/0
default 17:51:27.640160+0800 WidgetsExtension Building resolver: EntityIdentifier → TimerType:TimerActionIntent:timerType
default 17:51:27.640202+0800 WidgetsExtension Ending ResolveParameters <<SE:6C7CA02308AD>>
default 17:51:27.640221+0800 WidgetsExtension Beginning NeedsDisambiguation <<SB:8E482F9CCCB0>>
default 17:51:27.641328+0800 WidgetsExtension Ending NeedsDisambiguation <<SE:8E482F9CCCB0>>
default 17:51:27.641344+0800 WidgetsExtension Ending PerformAction <<SE:788D850BBBC5>>
error 17:51:27.642316+0800 chronod Perform action connection operation completed with error: Error Domain=LNActionExecutorErrorDomain Code=2010 "(null)"
error 17:51:27.642774+0800 chronod Operation `<LNPerformActionConnectionOperation: 0x600002c4a180, identifier: F8FB77C5-7F8A-4670-BB8C-465DE4EAB6B8>` error Error Domain=LNActionExecutorErrorDomain Code=2010 "(null)"
default 17:51:27.643358+0800 linkd Invalidated XPC connection from PID 39255 for service "com.apple.linkd.registry"

I can't find any details about the error " Error Domain=LNActionExecutorErrorDomain Code=2010 "(null)""

The environment: Xcode: 16.4/26 beta 5 iOS: iOS Simulator 18.5, iOS Simulator 26, iPhone 16 Pro Max 18.6 macOS 15.6

Can anyone help me, please!

Answered by Yozone Wang in 854025022

Got fixed! TimerType and TimerAction can not both conform to AppEnum and AppEntity protocols. Remove the AppEntity, it will work.

Accepted Answer

Got fixed! TimerType and TimerAction can not both conform to AppEnum and AppEntity protocols. Remove the AppEntity, it will work.

Thank you!

Unable perform AppIntent in interactive Widget
 
 
Q