public struct ConditionalActionRequest<FeatureType, ActionType> where FeatureType : ConditionalFeature, ActionType : Action

A type used to prevent direct execution of actions on ConditionalFeature(s), such that ActionSession only has functions to perform actions using ConditionalActionRequest and not a perform() using a ConditionalActionBinding.

This makes it impossible to directly perform an action of a conditional feature without first requesting access to it, as these request instances are only created by the framework and must be used to perform such actions.

The protocol extensions on ConditionalFeature only supports request and not perform, forcing the caller to test if the feature is available first and at least explicitly ignore the feature not available path, but hopefully provide a code path for that.

  • Call to invoke the system Add Voice Shortcut view controller for the given input to the conditionally-available action represented by this action request.


    Currently only actions that support NSUserActivity by opting in with activityEligibility are supported.

  • param input: The input to pass to the action when it is later invoked from the Siri Shortcut by the user.

  • param presenter: The UIViewController to use to present the view controller

  • Declaration


    @available(iOS 12, *)
    public func addVoiceShortcut(for input: ActionType.InputType, presenter: UIViewController)