Starting May 1, 2024,
Apple requires all iOS apps to include a privacy manifest.
For more information, see Privacy manifest.
If you’re creating a custom InstantSearch widget because you didn’t find a built-in option for your use case,
consider opening a feature request to describe what you’re trying to build.
-
Create the
MyWidgetInteractor, containing the business logic for your widget. -
Create a
MyWidgetControllerinterface, describing the rendering of the widget data.- Implement it in a
MyConcreteWidgetControllerthat you will use.
- Implement it in a
-
Create the connection methods between your
Interactorand every other component:- Create a
connectController()to connect yourInteractorto itsController. - If it uses the
Searcher, aconnectSearcher(). - If it uses the
FilterState, aconnectFilterState().
- Create a
Example
You will build a widget that displays the number of searches made since it was last clicked.1
Create the interactor
The
Interactor stores a sum that can be incremented or reset to 0.
You can use InstantSearch’s Observer to allow subscribing to changes of the sum’s value.Swift
2
Create the controller interface
To interact with the data in the
ViewModel,
you need a view than can display a number, and handle clicks to reset the counter.Swift
3
Implement the controller
The
SumSearchesButtonController should display the data received in setSum and trigger onReset when clicked.Swift
4
Create the connect controller method
To link the
Interactor with its Controller,
define a connection method to describe what should happen when connecting them
(subscribe to sum and set the reset callback).You can do this in the Interactor extension.Swift
5
Create the connect searcher method
Because the widget needs to be aware of searches to count them,
it needs to be connected to a
Searcher.Subscribe to the searcher’s onResults, and call increment for every new search response.Swift
Final touches
You can now use your custom widget in your application, like any other widget:Swift