Digipass S3 is now DigipassONE. This section is currently being updated to reflect our new name.

Upgrading from 8.0.1 to 9.0.0

Prev Next

The following are introduced in 9.0.0. The client SDKs are backwards compatible and you can continue to use the 8.0.1 APIs. However, there are new features and updated behavior detailed below that could affect your application and it is best to review to determine if any changes are needed:

  • Replace the m2repository folder from the extracted 8.0.1 package with the same folder from the 9.0.0 package.

  • In the app level build.gradle file, replace all 8.0.1.x versions with 9.0.0.x

  • To use Tutorial App version 8.0.1 with the SDK version 9.0.0, set the version number in AppSDK/android-studio/app_tutorial_plus/app/src/main/res/raw/config.json file to "9.0.0".

  • Classes extending from com.noknok.android.client.utils.BaseTask must implement the new method
    void handleException(RuntimeException e, final Params... params);

  • In class
    com.noknok.android.client.utils.ActivityProxy
    the startActivityForResult() method now takes 2 parameters instead of 3. Remove the last (int timeout) parameter.

  • The constructor for class:
    com.noknok.android.client.appsdk.adaptive.authenticate.AuthenticationController
    takes an extra argument suggestRegOpts of type HashMap <String, String>. Pass null if no options are expected.

  • In class: com.noknok.android.client.appsdk.adaptive.authenticate.AuthenticationViewModel, the return type of the method getMethods() has changed.
    Old return type: MutableLiveData<Pair<List<List<AdaptiveMethod>>, MethodUIFactory.Operation>>
    New return type: MutableLiveData<AuthResultParam>

  • In class:
    com.noknok.android.client.appsdk.adaptive.register.RegistrationViewModel
    the method setMethods() has two new parameters: ResultType resultType and String message.

  • The class: com.noknok.android.client.utils.ActivityStarter has been removed. Use the class: com.noknok.android.client.utils.ActivityProxy instead.

  • The class: com.noknok.android.client.appsdk.adaptive.suggest.SuggestRegController has been deprecated. Use the class
    com.noknok.android.client.appsdk.adaptive.suggest.SuggestRegistrationController
    instead.

  • In class: com.noknok.android.client.appsdk.adaptive.suggest.SuggestRegViewModel, the return type of the method getMethods() has changed.
    Old return Type: MutableLiveData<List<List<AdaptiveMethod>>>
    New return type: MutableLiveData<SuggestRegResultParam>

  • In class: com.noknok.android.client.appsdk.adaptive.suggest.SuggestRegViewModel, the method setMethods() has two new parameters:
    ResultType resultType and String message. 
  • In class:
    com.noknok.android.client.appsdk_plus.registration.FidoRegistrationViewModel
    the return type of the method getFidoMethodsLiveData() has changed.
    Old return type: MutableLiveData<List<FidoMethod>>
    New return type: MutableLiveData<RegResultParam>
  • In class:
    com.noknok.android.client.appsdk_plus.registration.FidoRegistrationViewModel
    the method setMethods() has two new parameters:
    ResultType resultType and String message. 
  • In class:
    com.noknok.android.client.appsdk_plus.management.ManageRegistrationViewModel
    the return type of the method getFidoMethodsLiveData() has changed.
    Old return Type: MutableLiveData<JSONArray>
    New return Type: MutableLiveData<ManageRegResultParam>
  • In class
    com.noknok.android.client.appsdk_plus.management.ManageRegistrationViewModel
    the method setMethods() has two new parameters: ResultType resultType and String message.
  • In interface
    com.noknok.android.client.appsdk_plus.IOperationResultListener,
    in the method onFailure(), the type of the parameter exception has changed.
    Old parameter type: AppSDKException
    New parameter type: RuntimeException
  • The class AdaptiveAppSDK2 has been removed. Use class AppSDK2 instead.

  • In the abstract class:
    com.noknok.android.client.appsdk.adaptive.MethodUIFactory
    the method getTitle() takes one additional parameter: String name.
    Old header: String getTitle(String id, Operation operation, Context context)
    New header: String getTitle(String id, String name, Operation operation, Context context)

  • In class:
    com.noknok.android.client.appsdk.adaptive.authenticate.BaseAdaptiveAuthFragment
    the method enable() is deprecated. Instead, call AuthenticationController.enable() directly:
    com.noknok.android.client.appsdk.adaptive.authenticate.BaseAdaptiveAuthFragment.getController().enable()

AutoStart.AUTO_ANY

The behavior of AutoStart.AUTO_ANY in class AuthenticationController is changed. If your application uses this mode for authentication then update your code to match the following behavior:

  • The promise returned by enable(AutoStart.AUTO_ANY) is rejected only if there is no possibility to complete authentication. If this promise is rejected, your application should not call enable(AutoStart.AUTO_NONE) because it results in an empty view.

  • The promise returned by enable(AutoStart.AUTO_ANY) is resolved even if authentication does not succeed and the session is still not available. If this is the case then more authentication methods can be used. Your application should call enable(AutoStart.AUTO_NONE) to get a list of all possible methods:

enable(requireActivity(), AUTO_ANY)
   .then { autoAnyResult ->
       if (autoAnyResult == null) {
           //It is not possible to complete authentication with AUTO_ANY. 
           //Start AUTO_NONE to present the list of choices and continue
           // authentication
           showAdaptiveAuthFragment(getFragment())
           controller.enable(requireActivity(), AUTO_NONE).then{}.error{}
       } else {
           //Authentication completed with AUTO_ANY
       }
   .error { failureResult ->
       //It is not possible to complete authentication with any mode 
       //as there is not enough registered methods available to satisfy 
       //the adaptive ruleset.
}
  • FidoRegistrationController and ManageRegistrationController no longer call onRefresh() after an operation is complete. If you only display the fragment from one of these controllers at a time, call onRefresh() on the respective controller when an operation is complete.

    If you display the fragment from more than one controller at the same time, you need to ensure that a change in one fragment is reflected in all fragments. Instead of calling onRefresh() after each operation, create an OperationResultObserver object that implements the IOperationResultListener interface. Observe the LiveData field on the OperationResultObserver object to listen for the failure or completion of the operation. Then call the Controller.onOpCompleted() method from the observe() method to keep the fragments updated. Here is an example observe() method:

mOperationResultObserver = new OperationResultObserver();
OperationResultListener.addInstance(mOperationResultObserver);
mOperationResultObserver.getLiveData().observe(getViewLifecycleOwner(),
           operationResult ->
           mRegistrationController.onOpCompleted(requireActivity(),  
                                      mRegistrationViewModel, operationResult)
);
  • A new function getIcon() is added to the MethodUIFactory protocol. If your application adopts the MethodUIFactory protocol then it must implement getIcon():

public abstract String getIcon(String id, String name, Context context)