{
    "version": "https://jsonfeed.org/version/1",
    "title": "Encap Android SDK release notes",
    "home_page_url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/",
    "description": "Release notes and changelog for the Encap Android SDK.",
    "items": [
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/",
            "content_html": "<p>We have released version <strong>3.22</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"device-groups\">Device groups<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#device-groups\" class=\"hash-link\" aria-label=\"Direct link to Device groups\" title=\"Direct link to Device groups\" translate=\"no\">​</a></h3>\n<p>Added support for the device groups feature.</p>\n<p>For configuration details, see the <a class=\"\" href=\"https://developer.signicat.com/docs/mobile-identity/encap/sdk-android/configure-features/device-groups/\">Device groups</a> documentation.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"missing-authentication-method-error-code\">Missing authentication method error code<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#missing-authentication-method-error-code\" class=\"hash-link\" aria-label=\"Direct link to Missing authentication method error code\" title=\"Direct link to Missing authentication method error code\" translate=\"no\">​</a></h3>\n<p>Added error code <code>serverErrorMissingAuthMethod</code>, which may occur if an authentication method in a device group is deactivated.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"non-blocking-support-methods\">Non-blocking support methods<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#non-blocking-support-methods\" class=\"hash-link\" aria-label=\"Direct link to Non-blocking support methods\" title=\"Direct link to Non-blocking support methods\" translate=\"no\">​</a></h3>\n<p>Added non-blocking versions of the following support methods that accept a callback:</p>\n<ul>\n<li class=\"\"><code>activatedAuthMethods</code></li>\n<li class=\"\"><code>activatedRecoveryMethods</code></li>\n<li class=\"\"><code>isActivated</code></li>\n<li class=\"\"><code>isRecoveryActivated</code></li>\n<li class=\"\"><code>registrationId</code></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"controller-initialisation-error-state\">Controller initialisation error state<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#controller-initialisation-error-state\" class=\"hash-link\" aria-label=\"Direct link to Controller initialisation error state\" title=\"Direct link to Controller initialisation error state\" translate=\"no\">​</a></h3>\n<p>Added a new <code>Controller.State</code>, <code>ERROR_INITIALIZING</code>, to indicate that controller initialisation failed.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"changed\">Changed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#changed\" class=\"hash-link\" aria-label=\"Direct link to Changed\" title=\"Direct link to Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"controller-initialisation\">Controller initialisation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#controller-initialisation\" class=\"hash-link\" aria-label=\"Direct link to Controller initialisation\" title=\"Direct link to Controller initialisation\" translate=\"no\">​</a></h3>\n<p>Controller initialisation now runs on a background thread to reduce creation time and prevent application not responding (ANR) situations.</p>\n<div class=\"theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><i class=\"icon icon--signicat-notice\"></i></span>Check the controller state</div><div class=\"admonitionContent_BuS1\"><p>Before calling a controller operation such as <code>isActivated</code>, you must check that the controller state described in <a class=\"\" href=\"https://developer.signicat.com/docs/mobile-identity/encap/sdk-android/appendix/controller-state/\">Controller state</a> is <code>READY</code> or <code>ERROR_INITIALIZING</code>.</p></div></div>\n<p><span id=\"security\"></span></p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"encryption-algorithms-and-keys\">Encryption algorithms and keys<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#encryption-algorithms-and-keys\" class=\"hash-link\" aria-label=\"Direct link to Encryption algorithms and keys\" title=\"Direct link to Encryption algorithms and keys\" translate=\"no\">​</a></h3>\n<p>Improved security for compliance with NSM/NIST:</p>\n<ul>\n<li class=\"\">End-to-end encryption algorithms changed to X25519 and AES-GCM.</li>\n<li class=\"\">Increased salt encryption key length to 32 and changed algorithm to AES-CTR. No changes in the Android SDK interfaces.</li>\n</ul>\n<div class=\"theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><i class=\"icon icon--signicat-notice\"></i></span>Replace the encryption key</div><div class=\"admonitionContent_BuS1\"><p>Old elliptic curve keys do not work with the 3.22 API. Set the <code>publicKeyBase64</code> property of <code>EncapConfig</code> to the Base64-encoded DER X25519 public key.</p></div></div>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"removed\">Removed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#removed\" class=\"hash-link\" aria-label=\"Direct link to Removed\" title=\"Direct link to Removed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"offline-authentication\">Offline authentication<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#offline-authentication\" class=\"hash-link\" aria-label=\"Direct link to Offline authentication\" title=\"Direct link to Offline authentication\" translate=\"no\">​</a></h3>\n<p>Removed the offline authentication feature.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"offline-authentication-error-codes\">Offline authentication error codes<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/#offline-authentication-error-codes\" class=\"hash-link\" aria-label=\"Direct link to Offline authentication error codes\" title=\"Direct link to Offline authentication error codes\" translate=\"no\">​</a></h3>\n<p>Removed error codes:</p>\n<ul>\n<li class=\"\"><code>clientErrorOfflineVersionNotSupported</code></li>\n<li class=\"\"><code>clientErrorOfflineParsingFailed</code></li>\n</ul>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/07-07-2026/",
            "title": "Released Android SDK 3.22",
            "summary": "The 3.22 release is now available for Android SDK.",
            "date_modified": "2026-07-07T00:00:00.000Z",
            "tags": [
                "Feature",
                "Enhancement",
                "Breaking change",
                "Security"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/",
            "content_html": "<p>We have released version <strong>3.21</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"risk-parameters\">Risk parameters<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#risk-parameters\" class=\"hash-link\" aria-label=\"Direct link to Risk parameters\" title=\"Direct link to Risk parameters\" translate=\"no\">​</a></h3>\n<p>Added the following new risk parameters:</p>\n<ul>\n<li class=\"\"><code>SSID</code></li>\n<li class=\"\"><code>BSSID</code></li>\n<li class=\"\"><code>Barometer</code></li>\n<li class=\"\"><code>Gravity</code></li>\n<li class=\"\"><code>Magnetometer</code></li>\n<li class=\"\"><code>IsDeveloperMode</code></li>\n<li class=\"\"><code>IsOverlayDetected</code></li>\n<li class=\"\"><code>IsProxyEnabled</code></li>\n<li class=\"\"><code>IsVpnEnabled</code></li>\n<li class=\"\"><code>Locale</code></li>\n</ul>\n<div class=\"theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><i class=\"icon icon--signicat-notice\"></i></span>Set Wi-Fi access permissions</div><div class=\"admonitionContent_BuS1\"><p>If you enable the <code>SSID</code> or <code>BSSID</code> risk parameters, you must add the required permissions to your <code>AndroidManifest.xml</code> file.</p><p>To learn how to do this, see <a class=\"\" href=\"https://developer.signicat.com/docs/mobile-identity/encap/archive/3-21/sdk-android/configure-features/risk-parameters/#wi-fi-information-ssid-and-bssid\">Wi-Fi information (SSID and BSSID)</a> in our Risk parameters feature documentation.</p></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"invalid-client-data-error-code\">Invalid client data error code<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#invalid-client-data-error-code\" class=\"hash-link\" aria-label=\"Direct link to Invalid client data error code\" title=\"Direct link to Invalid client data error code\" translate=\"no\">​</a></h3>\n<p>Added the error code <code>clientErrorClientDataInvalid</code> for client data passed to the start authentication operation that:</p>\n<ul>\n<li class=\"\">Exceeds 1024 bytes when UTF-8 encoded.</li>\n<li class=\"\">Contains one or more 4-byte UTF-8 characters, including most emojis.</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"error-code-exception-classes\">Error code exception classes<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#error-code-exception-classes\" class=\"hash-link\" aria-label=\"Direct link to Error code exception classes\" title=\"Direct link to Error code exception classes\" translate=\"no\">​</a></h3>\n<p>Added the exception class to each <code>ErrorCode</code> entry so you can look up the exception associated with an error code.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"changed\">Changed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#changed\" class=\"hash-link\" aria-label=\"Direct link to Changed\" title=\"Direct link to Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"recovery-method-enum-entry\">Recovery method enum entry<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#recovery-method-enum-entry\" class=\"hash-link\" aria-label=\"Direct link to Recovery method enum entry\" title=\"Direct link to Recovery method enum entry\" translate=\"no\">​</a></h3>\n<p>Renamed the recovery method enum entry:</p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th style=\"text-align:left\">Before</th><th style=\"text-align:left\">After</th></tr></thead><tbody><tr><td style=\"text-align:left\"><code>RecoveryMethod.CLOUD_BACKUP</code></td><td style=\"text-align:left\"><code>RecoveryMethod.CLOUD_BACKUP_RECOVERY_CODE</code></td></tr></tbody></table>\n<div class=\"theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><i class=\"icon icon--signicat-info\"></i></span>Breaking change</div><div class=\"admonitionContent_BuS1\"><p>You must replace all occurrences of <code>RecoveryMethod.CLOUD_BACKUP</code> with <code>RecoveryMethod.CLOUD_BACKUP_RECOVERY_CODE</code> in your code.</p></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"missing-biometrics-error-code\">Missing biometrics error code<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#missing-biometrics-error-code\" class=\"hash-link\" aria-label=\"Direct link to Missing biometrics error code\" title=\"Direct link to Missing biometrics error code\" translate=\"no\">​</a></h3>\n<p>Changed the error code returned when the device has no enrolled biometrics to align with iOS:</p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th style=\"text-align:left\">Before</th><th style=\"text-align:left\">After</th></tr></thead><tbody><tr><td style=\"text-align:left\"><code>clientErrorAuthMethodNotAllowed</code></td><td style=\"text-align:left\"><code>clientErrorAuthMethodUnavailable</code></td></tr></tbody></table>\n<p>The SDK still returns <code>clientErrorAuthMethodNotAllowed</code> in cases where an authentication method is being used but is not yet activated, or if not enabled in the server configuration.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"removed\">Removed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#removed\" class=\"hash-link\" aria-label=\"Direct link to Removed\" title=\"Direct link to Removed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"authentication-required-error-code\">Authentication required error code<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/#authentication-required-error-code\" class=\"hash-link\" aria-label=\"Direct link to Authentication required error code\" title=\"Direct link to Authentication required error code\" translate=\"no\">​</a></h3>\n<p>Removed SDK error code <code>serverErrorAuthenticationRequired</code>.</p>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/31-10-2025/",
            "title": "Released Android SDK 3.21",
            "summary": "The 3.21 release is now available for Android SDK.",
            "date_modified": "2025-10-31T00:00:00.000Z",
            "tags": [
                "Feature",
                "Breaking change"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/",
            "content_html": "<p>We have released version <strong>3.20</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"face-scan-recovery\">Face scan recovery<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#face-scan-recovery\" class=\"hash-link\" aria-label=\"Direct link to Face scan recovery\" title=\"Direct link to Face scan recovery\" translate=\"no\">​</a></h3>\n<p>Added support for face scan recovery alongside recovery codes, with the enum entry <code>RecoveryMethod.CLOUD_BACKUP_SERVER_SIDE_FACE</code>.</p>\n<p>Added the following classes:</p>\n<ul>\n<li class=\"\"><code>RecoveryParameter</code></li>\n<li class=\"\"><code>RecoveryCodeRecoveryParameter</code></li>\n<li class=\"\"><code>ServerSideFaceRecoveryParameter</code></li>\n</ul>\n<p>Added the following <code>Controller</code> methods accepting <code>RecoveryParameter</code>:</p>\n<div class=\"language-kotlin codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#F8F8F2;--prism-background-color:#282A36\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-kotlin codeBlock_bY9V thin-scrollbar\" style=\"color:#F8F8F2;background-color:#282A36\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token keyword\" style=\"color:#CFADFF;font-style:italic\">fun</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:rgb(80, 250, 123)\">finishAddOrUpdateRecovery</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    recoveryParameter</span><span class=\"token operator\">:</span><span class=\"token plain\"> RecoveryParameter</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    appCallback</span><span class=\"token operator\">:</span><span class=\"token plain\"> AsyncCallback</span><span class=\"token operator\">&lt;</span><span class=\"token plain\">FinishAddOrUpdateRecoveryResult</span><span class=\"token operator\">&gt;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#CFADFF;font-style:italic\">fun</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:rgb(80, 250, 123)\">finishRecovery</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    recoveryParameter</span><span class=\"token operator\">:</span><span class=\"token plain\"> RecoveryParameter</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    activationParameter</span><span class=\"token operator\">:</span><span class=\"token plain\"> ActivationParameter</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    appCallback</span><span class=\"token operator\">:</span><span class=\"token plain\"> AsyncCallback</span><span class=\"token operator\">&lt;</span><span class=\"token plain\">FinishRecoveryResult</span><span class=\"token operator\">&gt;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#CFADFF;font-style:italic\">fun</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:rgb(80, 250, 123)\">finishDeleteRecovery</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    recoveryParameter</span><span class=\"token operator\">:</span><span class=\"token plain\"> RecoveryParameter</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    appCallback</span><span class=\"token operator\">:</span><span class=\"token plain\"> AsyncCallback</span><span class=\"token operator\">&lt;</span><span class=\"token plain\">FinishDeleteRecoveryResult</span><span class=\"token operator\">&gt;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><br></div></code></pre></div></div>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"changed\">Changed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#changed\" class=\"hash-link\" aria-label=\"Direct link to Changed\" title=\"Direct link to Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"kotlin-api-implementation\">Kotlin API implementation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#kotlin-api-implementation\" class=\"hash-link\" aria-label=\"Direct link to Kotlin API implementation\" title=\"Direct link to Kotlin API implementation\" translate=\"no\">​</a></h3>\n<p>Rewrote the Encap Android API from Java to Kotlin 2.0. It remains backwards compatible with API 3.19 and adds a dependency on <code>kotlin-stdlib</code> version 2.0.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"minimum-android-version\">Minimum Android version<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#minimum-android-version\" class=\"hash-link\" aria-label=\"Direct link to Minimum Android version\" title=\"Direct link to Minimum Android version\" translate=\"no\">​</a></h3>\n<p>Raised the minimum Android version to Android 9 (API 28).</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deprecated\">Deprecated<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#deprecated\" class=\"hash-link\" aria-label=\"Direct link to Deprecated\" title=\"Direct link to Deprecated\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"recovery-parameters\">Recovery parameters<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#recovery-parameters\" class=\"hash-link\" aria-label=\"Direct link to Recovery parameters\" title=\"Direct link to Recovery parameters\" translate=\"no\">​</a></h3>\n<p>Deprecated the <code>EncapRecoveryParameter</code> class and the <code>Controller</code> methods that accept it.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"removed\">Removed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#removed\" class=\"hash-link\" aria-label=\"Direct link to Removed\" title=\"Direct link to Removed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deprecated-add-or-update-method\">Deprecated add or update method<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#deprecated-add-or-update-method\" class=\"hash-link\" aria-label=\"Direct link to Deprecated add or update method\" title=\"Direct link to Deprecated add or update method\" translate=\"no\">​</a></h3>\n<p>Removed the deprecated <code>Controller</code> method:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#F8F8F2;--prism-background-color:#282A36\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"color:#F8F8F2;background-color:#282A36\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token keyword\" style=\"color:#CFADFF;font-style:italic\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:rgb(80, 250, 123)\">startAddOrUpdate</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    </span><span class=\"token class-name\">String</span><span class=\"token plain\"> clientData</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    </span><span class=\"token class-name\">AsyncCallback</span><span class=\"token generics punctuation\" style=\"color:rgb(248, 248, 242)\">&lt;</span><span class=\"token generics class-name\">StartAddOrUpdateResult</span><span class=\"token generics punctuation\" style=\"color:rgb(248, 248, 242)\">&gt;</span><span class=\"token plain\"> callback</span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">;</span><br></div></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"already-authenticated-error-code\">Already authenticated error code<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#already-authenticated-error-code\" class=\"hash-link\" aria-label=\"Direct link to Already authenticated error code\" title=\"Direct link to Already authenticated error code\" translate=\"no\">​</a></h3>\n<p>Removed SDK error code <code>serverErrorAlreadyAuthenticated</code>.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"outdated-google-play-services-error-handling\">Outdated Google Play services error handling<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/#outdated-google-play-services-error-handling\" class=\"hash-link\" aria-label=\"Direct link to Outdated Google Play services error handling\" title=\"Direct link to Outdated Google Play services error handling\" translate=\"no\">​</a></h3>\n<p>Removed the SDK error code <code>clientErrorGoogleServicesOutdated</code> and the exception class <code>GooglePlayServicesOutdatedException</code>.</p>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/22-04-2025/",
            "title": "Released Android SDK 3.20",
            "summary": "The 3.20 release is now available for Android SDK.",
            "date_modified": "2025-04-22T00:00:00.000Z",
            "tags": [
                "Feature",
                "Enhancement",
                "Breaking change",
                "Deprecation"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/",
            "content_html": "<p>We have released version <strong>3.19</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"server-side-face-authentication\">Server-side face authentication<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#server-side-face-authentication\" class=\"hash-link\" aria-label=\"Direct link to Server-side face authentication\" title=\"Direct link to Server-side face authentication\" translate=\"no\">​</a></h3>\n<p>Added the server-side face authentication method <code>AuthMethod.DEVICE_SERVER_SIDE_FACE</code>.</p>\n<p>You can use server-side face authentication to change a forgotten PIN when the end-user has no valid biometrics.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"add-or-update-parameters\">Add or update parameters<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#add-or-update-parameters\" class=\"hash-link\" aria-label=\"Direct link to Add or update parameters\" title=\"Direct link to Add or update parameters\" translate=\"no\">​</a></h3>\n<p>Added the following <code>Controller</code> method:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#F8F8F2;--prism-background-color:#282A36\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"color:#F8F8F2;background-color:#282A36\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token keyword\" style=\"color:#CFADFF;font-style:italic\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:rgb(80, 250, 123)\">startAddOrUpdate</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    </span><span class=\"token annotation punctuation\" style=\"color:rgb(248, 248, 242)\">@NonNull</span><span class=\"token plain\"> </span><span class=\"token class-name\">StartAddOrUpdateParameter</span><span class=\"token plain\"> startParameter</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    </span><span class=\"token annotation punctuation\" style=\"color:rgb(248, 248, 242)\">@NonNull</span><span class=\"token plain\"> </span><span class=\"token class-name\">AsyncCallback</span><span class=\"token generics punctuation\" style=\"color:rgb(248, 248, 242)\">&lt;</span><span class=\"token generics class-name\">StartAddOrUpdateResult</span><span class=\"token generics punctuation\" style=\"color:rgb(248, 248, 242)\">&gt;</span><span class=\"token plain\"> callback</span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">;</span><br></div></code></pre></div></div>\n<p>You can choose the parameter for your use case:</p>\n<ul>\n<li class=\"\">\n<p>For server-side face authentication, you can use:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#F8F8F2;--prism-background-color:#282A36\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"color:#F8F8F2;background-color:#282A36\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token class-name\">StartAddOrUpdateParameter</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token class-name\">AuthMethod</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">.</span><span class=\"token constant\" style=\"color:#CFADFF\">DEVICE_SERVER_SIDE_FACE</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><br></div></code></pre></div></div>\n</li>\n<li class=\"\">\n<p>To pass client data, you can use:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#F8F8F2;--prism-background-color:#282A36\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"color:#F8F8F2;background-color:#282A36\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token class-name\">StartAddOrUpdateParameter</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token class-name\">String</span><span class=\"token plain\"> clientData</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><br></div></code></pre></div></div>\n</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"controller-nullability-annotations\">Controller nullability annotations<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#controller-nullability-annotations\" class=\"hash-link\" aria-label=\"Direct link to Controller nullability annotations\" title=\"Direct link to Controller nullability annotations\" translate=\"no\">​</a></h3>\n<p>Added <code>@NonNull</code> and <code>@Nullable</code> annotations to all <code>Controller</code> methods to support Kotlin integration.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"changed\">Changed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#changed\" class=\"hash-link\" aria-label=\"Direct link to Changed\" title=\"Direct link to Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"minimum-android-version\">Minimum Android version<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#minimum-android-version\" class=\"hash-link\" aria-label=\"Direct link to Minimum Android version\" title=\"Direct link to Minimum Android version\" translate=\"no\">​</a></h3>\n<p>Raised the minimum Android version to Android 8 (API 26).</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deactivation-state\">Deactivation state<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#deactivation-state\" class=\"hash-link\" aria-label=\"Direct link to Deactivation state\" title=\"Direct link to Deactivation state\" translate=\"no\">​</a></h3>\n<p><code>PROCESSING_DEACTIVATION</code> is now a blocking state. Starting a new operation before deactivation finishes returns <code>clientErrorOperationInProgress</code>.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"missing-biometrics-error-handling\">Missing biometrics error handling<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#missing-biometrics-error-handling\" class=\"hash-link\" aria-label=\"Direct link to Missing biometrics error handling\" title=\"Direct link to Missing biometrics error handling\" translate=\"no\">​</a></h3>\n<p>If biometrics or fingerprint are not enrolled or enabled on the device, the SDK returns <code>BiometricAuthenticationException</code> with <code>clientErrorAndroidBiometricPromptErrorNoBiometrics</code>. This replaces <code>UnexpectedException</code> with <code>clientErrorUnexpected</code>.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deprecated\">Deprecated<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#deprecated\" class=\"hash-link\" aria-label=\"Direct link to Deprecated\" title=\"Direct link to Deprecated\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"add-or-update-method\">Add or update method<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#add-or-update-method\" class=\"hash-link\" aria-label=\"Direct link to Add or update method\" title=\"Direct link to Add or update method\" translate=\"no\">​</a></h3>\n<p>Deprecated the following <code>Controller</code> method:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#F8F8F2;--prism-background-color:#282A36\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"color:#F8F8F2;background-color:#282A36\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token keyword\" style=\"color:#CFADFF;font-style:italic\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:rgb(80, 250, 123)\">startAddOrUpdate</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    </span><span class=\"token class-name\">String</span><span class=\"token plain\"> clientData</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">    </span><span class=\"token class-name\">AsyncCallback</span><span class=\"token generics punctuation\" style=\"color:rgb(248, 248, 242)\">&lt;</span><span class=\"token generics class-name\">StartAddOrUpdateResult</span><span class=\"token generics punctuation\" style=\"color:rgb(248, 248, 242)\">&gt;</span><span class=\"token plain\"> callback</span><br></div><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">;</span><br></div></code></pre></div></div>\n<p>The <code>String clientData</code> argument is made obsolete by the new method accepting:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#F8F8F2;--prism-background-color:#282A36\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"color:#F8F8F2;background-color:#282A36\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token class-name\">StartAddOrUpdateParameter</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">(</span><span class=\"token class-name\">String</span><span class=\"token plain\"> clientData</span><span class=\"token punctuation\" style=\"color:rgb(248, 248, 242)\">)</span><br></div></code></pre></div></div>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"removed\">Removed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#removed\" class=\"hash-link\" aria-label=\"Direct link to Removed\" title=\"Direct link to Removed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"fingerprint-authentication\">Fingerprint authentication<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/#fingerprint-authentication\" class=\"hash-link\" aria-label=\"Direct link to Fingerprint authentication\" title=\"Direct link to Fingerprint authentication\" translate=\"no\">​</a></h3>\n<p>Removed the fingerprint authentication method <code>AuthMethod.DEVICE_ANDROID_FINGERPRINT</code>. Use <code>AuthMethod.DEVICE_ANDROID_BIOMETRIC_PROMPT</code> instead.</p>\n<p>For existing fingerprint users, you can migrate from PIN to Biometric Prompt using <code>addOrUpdate</code>. To migrate from fingerprint to Biometric Prompt, you must use an earlier SDK version.</p>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/08-08-2024/",
            "title": "Released Android SDK 3.19",
            "summary": "The 3.19 release is now available for Android SDK.",
            "date_modified": "2024-08-08T00:00:00.000Z",
            "tags": [
                "Feature",
                "Enhancement",
                "Breaking change",
                "Deprecation"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/",
            "content_html": "<p>We have released version <strong>3.18</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"callback-nullability-annotations\">Callback nullability annotations<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/#callback-nullability-annotations\" class=\"hash-link\" aria-label=\"Direct link to Callback nullability annotations\" title=\"Direct link to Callback nullability annotations\" translate=\"no\">​</a></h3>\n<p>Added the annotation <code>@NonNull</code> to both the <code>OnSuccess</code> and <code>OnFailure</code> functions of <code>AsyncCallback</code>.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"changed\">Changed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/#changed\" class=\"hash-link\" aria-label=\"Direct link to Changed\" title=\"Direct link to Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"operation-context-methods\">Operation context methods<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/#operation-context-methods\" class=\"hash-link\" aria-label=\"Direct link to Operation context methods\" title=\"Direct link to Operation context methods\" translate=\"no\">​</a></h3>\n<p>Renamed the operation context methods in <code>FinishActivationResult</code> and <code>FinishAuthenticationResult</code> to match <code>StartAuthenticationResult</code> and iOS:</p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th style=\"text-align:left\">Previous name</th><th style=\"text-align:left\">New name</th></tr></thead><tbody><tr><td style=\"text-align:left\"><code>getResponseTitle()</code></td><td style=\"text-align:left\"><code>getContextTitle()</code></td></tr><tr><td style=\"text-align:left\"><code>getResponseConent()</code></td><td style=\"text-align:left\"><code>getContextContent()</code></td></tr><tr><td style=\"text-align:left\"><code>getResponseMimeType()</code></td><td style=\"text-align:left\"><code>getContextMIME()</code></td></tr></tbody></table>\n<div class=\"theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><i class=\"icon icon--signicat-notice\"></i></span>Deprecated method names</div><div class=\"admonitionContent_BuS1\"><p>The old methods are deprecated. They will be removed in the next release.</p></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"documentation-improvements\">Documentation improvements<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/#documentation-improvements\" class=\"hash-link\" aria-label=\"Direct link to Documentation improvements\" title=\"Direct link to Documentation improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Restructured the documentation to improve usability.</li>\n<li class=\"\">Rewrote multiple sections.</li>\n<li class=\"\">Added examples that are easier to copy and paste.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deprecated\">Deprecated<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/#deprecated\" class=\"hash-link\" aria-label=\"Direct link to Deprecated\" title=\"Direct link to Deprecated\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"fingerprint-authentication\">Fingerprint authentication<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/#fingerprint-authentication\" class=\"hash-link\" aria-label=\"Direct link to Fingerprint authentication\" title=\"Direct link to Fingerprint authentication\" translate=\"no\">​</a></h3>\n<p>Deprecated fingerprint authentication. It will be removed in a future release.</p>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/20-10-2023/",
            "title": "Released Android SDK 3.18",
            "summary": "The 3.18 release is now available for Android SDK.",
            "date_modified": "2023-10-20T00:00:00.000Z",
            "tags": [
                "Enhancement",
                "Deprecation",
                "Documentation"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/",
            "content_html": "<p>We have released version <strong>3.17</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"biometric-prompt-confirmation\">Biometric Prompt confirmation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/#biometric-prompt-confirmation\" class=\"hash-link\" aria-label=\"Direct link to Biometric Prompt confirmation\" title=\"Direct link to Biometric Prompt confirmation\" translate=\"no\">​</a></h3>\n<p>The Biometric Prompt activation and authentication parameters now expose <code>setConfirmationRequired()</code>.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"changed\">Changed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/#changed\" class=\"hash-link\" aria-label=\"Direct link to Changed\" title=\"Direct link to Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"minimum-android-version\">Minimum Android version<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/#minimum-android-version\" class=\"hash-link\" aria-label=\"Direct link to Minimum Android version\" title=\"Direct link to Minimum Android version\" translate=\"no\">​</a></h3>\n<p>Raised the minimum Android version to Android 7.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"app-attestation\">App attestation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/#app-attestation\" class=\"hash-link\" aria-label=\"Direct link to App attestation\" title=\"Direct link to App attestation\" translate=\"no\">​</a></h3>\n<p>Replaced the SafetyNet Attestation API with the Play Integrity API.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"removed\">Removed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/#removed\" class=\"hash-link\" aria-label=\"Direct link to Removed\" title=\"Direct link to Removed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"intermediate-push-feature\">Intermediate push feature<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/#intermediate-push-feature\" class=\"hash-link\" aria-label=\"Direct link to Intermediate push feature\" title=\"Direct link to Intermediate push feature\" translate=\"no\">​</a></h3>\n<p>Removed the intermediate push feature. You must use the Play Integrity API for app attestation instead.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deprecated-authentication-method-accessors\">Deprecated authentication method accessors<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/#deprecated-authentication-method-accessors\" class=\"hash-link\" aria-label=\"Direct link to Deprecated authentication method accessors\" title=\"Direct link to Deprecated authentication method accessors\" translate=\"no\">​</a></h3>\n<p>Removed the following deprecated API methods:</p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th style=\"text-align:left\">Removed deprecated API method</th><th style=\"text-align:left\">Use instead</th></tr></thead><tbody><tr><td style=\"text-align:left\"><code>StartAuthenticationResult</code>: <code>getAllowedAuthMethods()</code></td><td style=\"text-align:left\"><code>getAuthMethodsForAuthentication()</code></td></tr><tr><td style=\"text-align:left\"><code>StartActivationResult</code>: <code>getAllowedAuthMethods()</code></td><td style=\"text-align:left\"><code>getAuthMethodsForActivation()</code></td></tr><tr><td style=\"text-align:left\"><code>StartAddOrUpdateResult</code>: <code>getAllowedAuthMethodsForActivation()</code></td><td style=\"text-align:left\"><code>getAuthMethodsForActivation()</code></td></tr></tbody></table>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/26-05-2023/",
            "title": "Released Android SDK 3.17",
            "summary": "The 3.17 release is now available for Android SDK.",
            "date_modified": "2023-05-26T00:00:00.000Z",
            "tags": [
                "Feature",
                "Breaking change",
                "Security"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/",
            "content_html": "<p>We have released version <strong>3.16</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"client-debug-data\">Client debug data<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#client-debug-data\" class=\"hash-link\" aria-label=\"Direct link to Client debug data\" title=\"Direct link to Client debug data\" translate=\"no\">​</a></h3>\n<p>Added the client debug data feature.</p>\n<p>The new <code>EncapConfig</code> setting <code>setAllowDebugData</code> is <code>true</code> by default. You can set it to <code>false</code> to prevent a device from sending debug data, even if you have enabled it in your application configuration.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deprecated\">Deprecated<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#deprecated\" class=\"hash-link\" aria-label=\"Direct link to Deprecated\" title=\"Direct link to Deprecated\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"authentication-method-accessors\">Authentication method accessors<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#authentication-method-accessors\" class=\"hash-link\" aria-label=\"Direct link to Authentication method accessors\" title=\"Direct link to Authentication method accessors\" translate=\"no\">​</a></h3>\n<p>Deprecated the following API methods:</p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th style=\"text-align:left\">Deprecated API method</th><th style=\"text-align:left\">Use instead</th></tr></thead><tbody><tr><td style=\"text-align:left\"><code>StartAuthenticationResult</code>: <code>getAllowedAuthMethods()</code></td><td style=\"text-align:left\"><code>getAuthMethodsForAuthentication()</code></td></tr><tr><td style=\"text-align:left\"><code>StartActivationResult</code>: <code>getAllowedAuthMethods()</code></td><td style=\"text-align:left\"><code>getAuthMethodsForActivation()</code></td></tr><tr><td style=\"text-align:left\"><code>StartAddOrUpdateResult</code>: <code>getAllowedAuthMethodsForActivation()</code></td><td style=\"text-align:left\"><code>getAuthMethodsForActivation()</code></td></tr></tbody></table>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"removed\">Removed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#removed\" class=\"hash-link\" aria-label=\"Direct link to Removed\" title=\"Direct link to Removed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"fingerprint-documentation\">Fingerprint documentation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#fingerprint-documentation\" class=\"hash-link\" aria-label=\"Direct link to Fingerprint documentation\" title=\"Direct link to Fingerprint documentation\" translate=\"no\">​</a></h3>\n<p>Removed the fingerprint documentation. For new implementations, we recommend using Biometric Prompt.</p>\n<p>If you need fingerprint authentication on Android 6–8, we recommend using Biometric Prompt with the AndroidX library.</p>\n<p>You can still access the removed fingerprint documentation in an earlier version of this documentation.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"maven-documentation\">Maven documentation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#maven-documentation\" class=\"hash-link\" aria-label=\"Direct link to Maven documentation\" title=\"Direct link to Maven documentation\" translate=\"no\">​</a></h3>\n<p>Removed the documentation about building with Maven. You can still access the removed Maven integration documentation in an earlier version of this documentation.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"fixed\">Fixed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#fixed\" class=\"hash-link\" aria-label=\"Direct link to Fixed\" title=\"Direct link to Fixed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deactivation-of-non-activated-registrations\">Deactivation of non-activated registrations<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#deactivation-of-non-activated-registrations\" class=\"hash-link\" aria-label=\"Direct link to Deactivation of non-activated registrations\" title=\"Direct link to Deactivation of non-activated registrations\" translate=\"no\">​</a></h3>\n<p>Deactivating a non-activated registration on the client no longer results in an error.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"upcoming-changes\">Upcoming changes<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#upcoming-changes\" class=\"hash-link\" aria-label=\"Direct link to Upcoming changes\" title=\"Direct link to Upcoming changes\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"app-attestation\">App attestation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/#app-attestation\" class=\"hash-link\" aria-label=\"Direct link to App attestation\" title=\"Direct link to App attestation\" translate=\"no\">​</a></h3>\n<p>The SafetyNet Attestation API will be replaced with the Play Integrity API in version 3.17.</p>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-01-2023/",
            "title": "Released Android SDK 3.16",
            "summary": "The 3.16 release is now available for Android SDK.",
            "date_modified": "2023-01-30T00:00:00.000Z",
            "tags": [
                "Feature",
                "Bug fix",
                "Deprecation",
                "Documentation"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-06-2022/",
            "content_html": "<p>We have released version <strong>3.15</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-06-2022/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"biometric-authentication-cancellation\">Biometric authentication cancellation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-06-2022/#biometric-authentication-cancellation\" class=\"hash-link\" aria-label=\"Direct link to Biometric authentication cancellation\" title=\"Direct link to Biometric authentication cancellation\" translate=\"no\">​</a></h3>\n<p>Added support for cancelling an ongoing biometric authentication for <a href=\"https://developer.android.com/reference/androidx/biometric/package-summary\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AndroidX BiometricPrompt</a>.</p>\n<p>You can cancel an ongoing biometric authentication by supplying a <a href=\"https://developer.android.com/reference/android/os/CancellationSignal\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\"><code>CancellationSignal</code></a> to the <code>DeviceAndroidBiometricPromptAuthParameter</code> and calling the <a href=\"https://developer.android.com/reference/android/os/CancellationSignal#cancel()\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\"><code>cancel()</code></a> method.</p>\n<p>The Encap API sets up a listener on the <code>CancellationSignal</code> that calls the <code>cancelAuthentication()</code> method of AndroidX BiometricPrompt.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"changed\">Changed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-06-2022/#changed\" class=\"hash-link\" aria-label=\"Direct link to Changed\" title=\"Direct link to Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"invalidated-authentication-data-error-code\">Invalidated authentication data error code<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-06-2022/#invalidated-authentication-data-error-code\" class=\"hash-link\" aria-label=\"Direct link to Invalidated authentication data error code\" title=\"Direct link to Invalidated authentication data error code\" translate=\"no\">​</a></h3>\n<p>Replaced the error code <code>clientErrorKeyPermanentlyInvalidated</code> (<code>180</code>) with <code>clientErrorAuthDataInvalidated</code> (<code>132</code>) to align with iOS.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deprecated\">Deprecated<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-06-2022/#deprecated\" class=\"hash-link\" aria-label=\"Direct link to Deprecated\" title=\"Direct link to Deprecated\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"intermediate-push-attestation\">Intermediate push attestation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-06-2022/#intermediate-push-attestation\" class=\"hash-link\" aria-label=\"Direct link to Intermediate push attestation\" title=\"Direct link to Intermediate push attestation\" translate=\"no\">​</a></h3>\n<p>Deprecated intermediate push attestation. It will be removed in a future release.</p>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/30-06-2022/",
            "title": "Released Android SDK 3.15",
            "summary": "The 3.15 release is now available for Android SDK.",
            "date_modified": "2022-06-30T00:00:00.000Z",
            "tags": [
                "Feature",
                "Breaking change",
                "Deprecation"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/",
            "content_html": "<p>We have released version <strong>3.14</strong> of our SDK for Android.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"added\">Added<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/#added\" class=\"hash-link\" aria-label=\"Direct link to Added\" title=\"Direct link to Added\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"geofencing\">Geofencing<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/#geofencing\" class=\"hash-link\" aria-label=\"Direct link to Geofencing\" title=\"Direct link to Geofencing\" translate=\"no\">​</a></h3>\n<p>Added the geofencing feature.</p>\n<p>The SDK uses an external geocoder service to look up the device location, then sends the country code to the server.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"invalid-session-error-code\">Invalid session error code<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/#invalid-session-error-code\" class=\"hash-link\" aria-label=\"Direct link to Invalid session error code\" title=\"Direct link to Invalid session error code\" translate=\"no\">​</a></h3>\n<p>Added the <code>serverErrorInvalidSession</code> error code.</p>\n<p>If the server starts a new session after the client calls <code>startAuthenticate</code>, <code>finishAuthenticate</code> returns this error. You need to call <code>startAuthenticate</code> again to start a new authentication attempt.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"changed\">Changed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/#changed\" class=\"hash-link\" aria-label=\"Direct link to Changed\" title=\"Direct link to Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"authenticate-and-activate-operation\">Authenticate and activate operation<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/#authenticate-and-activate-operation\" class=\"hash-link\" aria-label=\"Direct link to Authenticate and activate operation\" title=\"Direct link to Authenticate and activate operation\" translate=\"no\">​</a></h3>\n<p>Renamed the <code>AuthenticateAndActivate</code> operation to <code>AddOrUpdate</code>.</p>\n<p>On iOS, this operation has always been called <code>AddOrUpdate</code>. The rename aligns the Android and iOS controller interfaces.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"removed\">Removed<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/#removed\" class=\"hash-link\" aria-label=\"Direct link to Removed\" title=\"Direct link to Removed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"signing-feature\">Signing feature<a href=\"https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/#signing-feature\" class=\"hash-link\" aria-label=\"Direct link to Signing feature\" title=\"Direct link to Signing feature\" translate=\"no\">​</a></h3>\n<p>Removed the signing feature. If your app uses signing, you must remove calls to its functions.</p>\n<p>Removed the following functions and classes:</p>\n<ul>\n<li class=\"\"><code>EncapConfig.Builder</code>: <code>setSigningEnabled()</code> and <code>setSigningKeySize()</code></li>\n<li class=\"\"><code>EncapController</code>: <code>startAuthenticationOrSigning()</code>, <code>startSigning()</code> and <code>FinishSigning()</code></li>\n<li class=\"\"><code>EncapController.State</code>: <code>isSigningState()</code></li>\n<li class=\"\"><code>PushMessage</code>: <code>isSigningMessage()</code></li>\n<li class=\"\"><code>SigningFailedException</code></li>\n<li class=\"\"><code>StartSigningResult</code></li>\n<li class=\"\"><code>FinishSigningResult</code></li>\n</ul>\n<p>Removed the following error codes:</p>\n<ul>\n<li class=\"\"><code>serverErrorIncorrectSignature</code></li>\n<li class=\"\"><code>serverErrorInvalidSignature</code></li>\n</ul>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/15-02-2022/",
            "title": "Released Android SDK 3.14",
            "summary": "The 3.14 release is now available for Android SDK.",
            "date_modified": "2022-02-15T00:00:00.000Z",
            "tags": [
                "Feature",
                "Breaking change"
            ]
        },
        {
            "id": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/02-11-2021/",
            "content_html": "<p>We have released version <strong>3.13</strong> of our SDK for Android.</p>",
            "url": "https://developer.signicat.com/docs/mobile-identity/encap/release-notes/sdk-android/02-11-2021/",
            "title": "Released Android SDK 3.13",
            "summary": "The 3.13 release is now available for Android SDK.",
            "date_modified": "2021-11-02T00:00:00.000Z",
            "tags": []
        }
    ]
}