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.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
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
Implement the controller
The
SumSearchesButtonController should display the data received in setSum and trigger onReset when clicked.Swift
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
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