This section contains a list of changes to help upgrade your app from the 9.0.0 version of the iOS App SDK to the 9.1.0 version.
The following changes are introduced in 9.1.0. The client SDKs are backwards compatible so you can continue to use the 9.0.0 APIs. However, there are new features and updated behavior detailed below that could affect your application, so it is best to review them to determine if you need to make any changes.
Set the App SDK version number in your app's config.json file to "9.1.0".
The App SDK now uses Apple’s App Attest for application validation. Add the following system framework to all application targets that use the App SDK.
DeviceCheck.framework
Also see Support App Attest.The NNLAdaptiveUI.getAuthenticationView() function now returns the base class NNLBaseAdaptiveAuthenticationViewController* instead of a derived class. If your application specifies the type of variable that stores the returned object, then change the type to the base type.
let authViewController : NNLBaseAdaptiveAuthenticationViewController? = ui.getAuthenticationView(nil, transactionId: nil, authOptions: extras, suggestRegOptions: suggestRegOptions )The NNLAdaptiveUI.getRegistrationView() function now returns NNLBaseAdaptiveRegViewController* object, derived from UIViewController, instead of an object of the base class. If your application specifies the type of variable that stores the returned object, then change the type to the derived type.
let mAdaptiveRegistrationVc: NNLBaseAdaptiveRegViewController? = adaptiveUi.getRegistrationView(app.authData?.sessionData, withExtras: nil)The NNLAdaptiveUI.transact() function now handles all the complex functionality and UI that used to require a call to NNLAuthenticationController.enable(AutoStart.AUTO_ANY) followed by a call to NNLAuthenticationController.enable(AutoStart.AUTO_NONE). You can now replace these calls to enable() with a single call to transact().
let result = adaptiveUI.transact(sessionData, transactionId: transactionID, extras: authOptions)
See Dev Guide section Transaction for more information.When your application has a renewed session, there is now no need to call setSessionData() on each controller. Instead, make a single call to NNLOperationResultListener.onSessionDataUpdated().
NNLOperationResultListener.getInstance().onSessionDataUpdated?(sessionData)If you created an mfac_cfg.json file containing a policyMap object for friendly names for authentication methods, move your policyMap object from mfac_cfg.json to your JSON UI configuration file.
If you defined a custom class that adopts a Live Data protocol, your custom class should also implement the corresponding Base View Controller interface:
Live Data Protocol | Base View Interface |
|---|---|
| |
| |
| |
| |
| |
In order to make your custom view implementation available to the SDK, define a custom class that adopts the createViewController() method of the corresponding UI Factory protocol. Your application then calls the setInstance() static method of the corresponding UI Factory class during application initialization and provides an instance of your custom UI factory implementation.
Base View Controller Protocol | UI Factory Protocol |
|---|---|
| |
| |
| |
| |
| |
See the corresponding section of Replacingthe UI section for more details.