UI extensibility options
The base configuration (HaapiUIKitConfigurationBuilder
and theming/resources plist) for theming might sufficiently align with the application's design. However, if these configurations are not enough, it is possible to have "advanced" customization options such as:
- Providing custom ViewControllers for any UIModel states
- Providing custom objects and overriding the mappings of objects that are passed to the UI elements for HAAPI
Providing custom UIViewControllers for any UIModel states
The HaapiIdsvrUIKit
framework uses HAAPI representations that are mapped into UIModel
instances which are used to populate the UIViewControllers UI content. This is all done dynamically via a ViewControllerResolver
engine which is capable of loading the corresponding UI for a given model.
The table below lists the default correspondence between the UIModel
and the provided bundled HaapiUIViewController
implementation that renders the model content.
UIModel | ViewController that is a subclass of BaseViewController |
---|---|
FormModel | FormViewController |
GenericModel | GenericViewController |
PollingModel | PollingViewController |
ProblemModel | ProblemViewController |
SelectorModel | SelectorViewController |
WebAuthnOperationModel | WebAuthnViewController |
Internally, HaapiUIKitApplication
uses a default implementation of a ViewControllerResolver
engine which can be customized.
To do so, the client developer can register custom view controller for each model type into the default view controller resolver functionality by configuring them using the ViewControllerFactoryRegistry
and then set it in HaapiUIKitApplicationBuilder
.
Finally, HaapiFlowViewController
embeds the generated UIViewControllers and displays their contents.
More information on how to customize and register UI overrides, continue here.
Providing custom objects and overriding the mappings of objects that are passed to the UI elements for HAAPI
The previous section focuses on customizing the UI rendering via using different UIViewControllers, subclassing one of the bundled UIViewControllers or using a custom UIViewController that conforms to HaapiUIViewController
.
This section highlights the possibility of providing custom/modified model state objects to the views. This allows for more "advanced" customizations options such as: Providing custom objects and overriding the mappings of the information provided in server responses so that custom state reaches the UI and can be handled there.
More information on how to customize the models and mappings, continue here.
Reminder: HAAPI representations are mapped into UIModel
objects which are used to resolve the UI interface to present such model to the user.