IntentTimelineProvider
protocol · iOS 14.0+ · SDK 27.1
protocol IntentTimelineProviderA type that advises WidgetKit when to update a user-configurable widget's display. An Intent timeline provider performs the same function as <doc:TimelineProvider>, but it also incorporates user-configured details into timeline entries. For example, in a widget that displays the health status of a game character the user has chosen, the provider receives a custom intent specifying the character to display. In your Xcode project, you then define a custom SiriKit Intent Definition file. The intent definition can include the character’s details such as its name, avatar, strategic alliances, and so on.  Xcode generates the following <doc://com.apple.documentation/documentation/Intents/INIntent> custom intent: public class SelectCharacterIntent: INIntent { @NSManaged public var characterName: String? @NSManaged public var avatar: String? @NSManaged public var alliances: [String]? @NSManaged public var healthLevel: NSNumber? } Because users can add multiple instances of a particular widget, your provider needs a way to differentiate which instance WidgetKit is asking about. When WidgetKit calls <doc:IntentTimelineProvider/getSnapshot(for:in:completion:)> or <doc:IntentTimelineProvider/getTimeline(for:in:completion:)>, it passes an instance of your custom `INIntent`, configured with the user-selected details. The game widget provider accesses the properties of the intent and includes them in the <doc:TimelineEntry>. WidgetKit then invokes the widget configuration's content closure, passing the timeline entry to allow the views to access the user-configured properties. For example, the provider might implement a `TimelineEntry` with properties corresponding to those in the custom intent: struct CharacterDetailEntry: TimelineEntry { var date: Date var name: String? var avatar: String? var alliances: [String]? var healthLevel: Double? } To generate a snapshot, the game widget provider initializes the character detail entry using the properties from the intent. struct CharacterDetailProvider: IntentTimelineProvider { func getSnapshot(for configuration: SelectCharacterIntent, in context: Context, completion: @escaping (CharacterDetailEntry) -> Void) { let entry = CharacterDetailEntry( date: Date(), name: configuration.characterName, avatar: configuration.avatar, alliances: configuration.alliances, healthLevel: configuration.healthLevel?.doubleValue ) completion(entry) } }
Members (0)
This type has no directly callable members in this snapshot. See the framework’s skipped declarations for unsupported APIs.
Skipped declarations
2 declarations were excluded from these bindings. Each reason comes from the generator or the iOS SDK compiler.
IntentTimelineProvider.recommendations()
The iOS SDK compiler rejected this binding: member 'recommendations' cannot be used on value of type 'any IntentTimelineProvider'; consider using a generic constraint instead [#ExistentialMemberAccess]
IntentTimelineProvider.relevance()
The iOS SDK compiler rejected this binding: member 'relevance' cannot be used on value of type 'any IntentTimelineProvider'; consider using a generic constraint instead [#ExistentialMemberAccess]