Since May 1st, 2024, Apple requires all iOS apps to include a privacy manifest.
For more details, see Privacy Manifest.
You are trying to create your own widget with InstantSearch iOS and that’s awesome but that also means that you couldn’t find the widgets or built-in options you were looking for. Algolia would love to hear about your use case as the aim with the InstantSearch libraries is to provide the best out-of-the-box experience. Don’t hesitate to send a quick message explaining what you were trying to achieve either using the form at the end of that page or directly by submitting a feature request.
-
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