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 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.