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
MyWidgetController
interface, describing the rendering of the widget data.- Implement it in a
MyConcreteWidgetController
that you will use.
- Implement it in a
-
Create the connection methods between your
Interactor
and every other component:- Create a
connectController()
to connect yourInteractor
to 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
TheInteractor
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 theViewModel
,
you need a view than can display a number, and handle clicks to reset the counter.
Swift
Implement the SumSearchesButtonController
The SumSearchesButtonController
should display the data received in setSum
and trigger onReset
when clicked.
Swift
Create the connectController
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 connectSearcher
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