contributors |
---|
zntfdr |
- a way of representing, in detail, a type of action that your app can perform
- Siri includes a lot of built-in intents that support a range of capabilities that you can use to integrate with the system (e.g., messaging, ride booking, payments)
- support the ability for you to define your own custom intents for use with Shortcuts
- An intent donation is the act of telling the system when a person performs an action in your app
- The system will store these donations and use them to expand your app's capabilities and presence throughout the system
- Apps that donate intents show up in places throughout the system like Suggestions, Shortcuts, Focus, Smart Stack, and Siri
- Create a new intent definition:
- With your project open, create a new file of type SiriKit Intent Definition File
- in the following menu select any targets that I want to use the custom intent
- Define the intent
- After selecting the new Intent file, click the + button on the bottom right and select New Intent (or Customize System Intent if your intent matches one of the existing built-in system intents)
- Define eligibility
- After naming your intent in step two, check whether you'd like your intent to be eligible for widgets/shortcuts/(Siri)suggestions
- Define Intent parameters
- These parameters are the input of your action/intent, which depend on your specific intent
- For each parameter you can select the type (String/Location/URL... can be custom, too)
- If the parameter options are not static and/or need to be provided by the app, check the Dynamic Options - this
The system reads the intent definition file to determine the intent and parameter combinations that an app supports for prediction.
- Donate the intent when appropriate
- Create an instance of the intent class (this is automatically generated for you from the Intent file via an Xcode rule)
- donate it
// Donate your intent.
let intent = CheckWeatherIntent()
intent.location = weatherLocation
let interaction = INInteraction(intent: intent, response: nil)
interaction.donate { (error) in
// Handle the error.
}
- It's important to delete donations so people don't get suggestions for actions in your app that are no longer relevant:
// Donate your intent.
let interaction = INInteraction(intent: intent, response: response)
interaction.identifier = "68753A44-4D6F-1226-9C60-0050E4C00067"
interaction.groupIdentifier = "san-diego"
interaction.donate { (error) in
// Handle the error.
}
// Delete individual donations.
INInteraction.delete(with: ["68753A44-4D6F-1226-9C60-0050E4C00067"]) { (error) in
// Handle the error.
}
// Delete group donations.
INInteraction.delete(with: "san-diego") { (error) in
// Handle the error.
}
- the system stores these donations over time along with the context the person was in when the intent was donated
- As the user continue to repeat the same action, the app continues to make intent donations
- The system uses the intent parameters to determine whether the intents are equivalent or not
- The system uses machine learning and on-device intelligence to find patterns in the data and predict what intent is relevant given a person's current context and past behavioral patterns
- The on-device intelligence integrates with user-facing features to expose your app's capabilities and presence to the user
- all of the machine learning and intelligence is performed on-device in a privacy-preserving manner, meaning Apple does not collect any data that can be used to personally identify a user
- Represents an action likely to be repeated by the user
- Intent payload is consistent across donations - so that a pattern can be recognized by the on-device intelligence
- No timestamps (in the suggestion parameters)