Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
# Changelog

## v2.2.0 - May 15th, 2025
## v2.3.0 - August 25th, 2025

### Added

- GeoLocation support implemented
- Verify Retry support
- Rate Limiting support
- New UI screens and various UI improvements
- Localization support through PingOne
- Strengthened security for document uploads
- Support for Aadhaar Verification
- Improvements to support backend driven flows
- Support for selfie authentication mode

### Fixed

- Error handling
- UI defects
- AppTheme issues
- Other minor bugs
- Minor changes to improve UI/UX
- Defects related to verification flows
349 changes: 342 additions & 7 deletions README.md

Large diffs are not rendered by default.

Binary file removed SDK/PingOneVerify-2.2.0.aar
Binary file not shown.
Binary file added SDK/PingOneVerify-2.3.3.aar
Binary file not shown.
Binary file modified SDK/iad.aar
Binary file not shown.
Binary file modified SDK/voice_sdk.aar
Binary file not shown.
13 changes: 8 additions & 5 deletions SampleCode/PingOneVerify/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ android {
applicationId "com.pingidentity.sdk.pingoneverify.sample"
minSdkVersion 26
targetSdkVersion 34
versionCode 4
versionName "2.2.0"
versionCode 8
versionName "2.3.3"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down Expand Up @@ -55,14 +55,13 @@ dependencies {

implementation 'com.github.bumptech.glide:glide:4.13.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'

implementation 'com.google.android.material:material:1.12.0'
implementation 'com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1'
implementation 'com.google.android.gms:play-services-mlkit-face-detection:17.1.0'
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'com.google.protobuf:protobuf-kotlin-lite:3.20.1'
implementation group: 'com.googlecode.libphonenumber', name: 'libphonenumber', version: '8.13.7'

implementation 'com.appmattus.certificatetransparency:certificatetransparency-android:1.1.1'
implementation 'com.squareup.retrofit2:converter-moshi:2.7.2'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
Expand All @@ -71,7 +70,11 @@ dependencies {
implementation 'com.squareup.moshi:moshi-kotlin:1.14.0'
implementation group: 'com.squareup.okhttp3', name: 'okhttp-urlconnection', version: '4.9.3'

implementation("com.appmattus.certificatetransparency:certificatetransparency-android:1.1.1")
//Important: Below dependencies must be defined for Selfie/Government ID document upload on S3
implementation 'org.bitbucket.b_c:jose4j:0.9.5'
//Important: Below dependencies should be defined for Selfie Liveness feature
implementation 'com.google.protobuf:protobuf-javalite:3.20.1'
implementation 'com.google.protobuf:protobuf-kotlin-lite:3.20.1'
}

configurations.implementation {
Expand Down
8 changes: 8 additions & 0 deletions SampleCode/PingOneVerify/app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@
-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**

-keep class org.jose4j.** { *; }
-dontwarn org.jose4j.**

#Adding missing proguard rules from missing_rules.txt
-dontwarn com.google.protobuf.AbstractMessageLite
-dontwarn com.google.protobuf.ByteString
Expand All @@ -123,9 +126,11 @@
-dontwarn com.google.protobuf.GeneratedMessageLite$DefaultInstanceBasedParser
-dontwarn com.google.protobuf.GeneratedMessageLite$MethodToInvoke
-dontwarn com.google.protobuf.GeneratedMessageLite
-dontwarn com.google.protobuf.Internal$BooleanList
-dontwarn com.google.protobuf.Internal$EnumLite
-dontwarn com.google.protobuf.Internal$EnumLiteMap
-dontwarn com.google.protobuf.Internal$EnumVerifier
-dontwarn com.google.protobuf.Internal$IntList
-dontwarn com.google.protobuf.Internal$ProtobufList
-dontwarn com.google.protobuf.InvalidProtocolBufferException
-dontwarn com.google.protobuf.MessageLite
Expand All @@ -135,3 +140,6 @@
-dontwarn com.google.protobuf.kotlin.DslList
-dontwarn com.google.protobuf.kotlin.DslProxy
-dontwarn com.google.protobuf.kotlin.ProtoDslMarker
-dontwarn org.slf4j.impl.StaticLoggerBinder
-dontwarn org.slf4j.impl.StaticMDCBinder
-dontwarn org.slf4j.impl.StaticMarkerBinder
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.pingidentity.sdk.pingoneverify.sample;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
Expand All @@ -10,20 +12,22 @@

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.util.Consumer;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

import com.pingidentity.sdk.pingoneverify.PingOneVerifyClient;
import com.pingidentity.sdk.pingoneverify.errors.DocumentSubmissionError;
import com.pingidentity.sdk.pingoneverify.listeners.BackActionHandler;
import com.pingidentity.sdk.pingoneverify.listeners.DocumentSubmissionListener;
import com.pingidentity.sdk.pingoneverify.models.DocumentSubmissionResponse;
import com.pingidentity.sdk.pingoneverify.models.DocumentSubmissionStatus;
import com.pingidentity.sdk.pingoneverify.settings.ButtonAppearance;
import com.pingidentity.sdk.pingoneverify.settings.UIAppearanceSettings;
import com.pingidentity.sdk.pingoneverify.utils.BitmapUtils;

public class MainFragment extends Fragment implements DocumentSubmissionListener {
public class MainFragment extends Fragment implements DocumentSubmissionListener, BackActionHandler {

public static final String TAG = MainFragment.class.getCanonicalName();
public static final String TAG = MainFragment.class.getName();

private Button mBtnVerify;
private View waitOverlay;
Expand All @@ -50,8 +54,7 @@ public void onDocumentSubmitted(DocumentSubmissionResponse response) {
@Override
public void onSubmissionComplete(DocumentSubmissionStatus status) {
setInProgress(false);
getParentFragmentManager().beginTransaction()
.replace(R.id.frame_layout, new CompletedFragment())
getParentFragmentManager().beginTransaction().replace(R.id.frame_layout, new CompletedFragment())
.addToBackStack(null)
.commit();
}
Expand All @@ -63,13 +66,26 @@ public void onSubmissionError(DocumentSubmissionError error) {
setInProgress(false);
}

/**
* @noinspection unused
*/ // UIAppearanceSettings example
private UIAppearanceSettings getUiAppearanceSettings() {
Bitmap logoImage = BitmapUtils.getBitmap(requireContext(), R.mipmap.ic_launcher);

return new UIAppearanceSettings()
.setLogoImage(logoImage)
.setSolidButtonAppearance(new ButtonAppearance("#F1C40F", "#F1C40F", "#95A5A6"))
.setBorderedButtonAppearance(new ButtonAppearance("#00FFFFFF", "#28B463", "#28B463"));
}

private void initPingOneClient() {
waitOverlay.setVisibility(View.VISIBLE);

new PingOneVerifyClient.Builder(false)
.setRootActivity(getActivity())
.setListener(this)
// .setUIAppearance(this.getUiAppearanceSettings())
.setBackActionHandler(this)
// .setUIAppearance(getUiAppearanceSettings())
.startVerification(new PingOneVerifyClient.Builder.BuilderCallback() {
@Override
public void onSuccess(PingOneVerifyClient client) {
Expand Down Expand Up @@ -102,4 +118,24 @@ private void setInProgress(boolean inProgress) {
mBtnVerify.setAlpha(inProgress ? 0.4f : 1f);
}

@Override
public void onBackAction(Consumer<Boolean> consumer) {
new AlertDialog.Builder(getActivity())
.setTitle(R.string.exit_transaction)
.setMessage(R.string.exit_the_transaction_prompt)
.setPositiveButton(R.string.exit_action_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
consumer.accept(true);
}
})
.setNegativeButton(R.string.exit_action_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
consumer.accept(false);
}
})
.create()
.show();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
android:viewportHeight="138">
<path
android:pathData="M69,137.21C59.61,137.21 50.77,135.41 42.48,131.81C34.23,128.25 26.94,123.33 20.6,117.04C14.31,110.71 9.37,103.42 5.77,95.17C2.21,86.87 0.44,78.03 0.44,68.64C0.44,59.26 2.21,50.44 5.77,42.19C9.37,33.9 14.31,26.6 20.6,20.31C26.89,13.98 34.16,9.04 42.41,5.48C50.7,1.88 59.54,0.08 68.93,0.08C78.32,0.08 87.16,1.88 95.46,5.48C103.75,9.04 111.04,13.98 117.33,20.31C123.62,26.6 128.56,33.9 132.16,42.19C135.76,50.44 137.56,59.26 137.56,68.64C137.56,78.03 135.76,86.87 132.16,95.17C128.56,103.42 123.62,110.71 117.33,117.04C111.04,123.33 103.75,128.25 95.46,131.81C87.21,135.41 78.39,137.21 69,137.21ZM69,128.39C77.25,128.39 84.97,126.84 92.17,123.74C99.42,120.64 105.78,116.36 111.25,110.89C116.76,105.42 121.04,99.09 124.1,91.89C127.2,84.64 128.75,76.89 128.75,68.64C128.75,60.4 127.2,52.67 124.1,45.47C121,38.22 116.71,31.87 111.25,26.4C105.78,20.88 99.42,16.6 92.17,13.55C84.97,10.45 77.23,8.9 68.93,8.9C60.68,8.9 52.94,10.45 45.69,13.55C38.49,16.6 32.15,20.88 26.69,26.4C21.26,31.87 17,38.22 13.9,45.47C10.85,52.67 9.32,60.4 9.32,68.64C9.32,76.89 10.85,84.64 13.9,91.89C17,99.09 21.29,105.42 26.75,110.89C32.22,116.36 38.56,120.64 45.76,123.74C52.96,126.84 60.71,128.39 69,128.39ZM56.76,106.24C55.67,106.24 54.74,105.9 53.96,105.22C53.23,104.49 52.87,103.6 52.87,102.55C52.87,101.46 53.23,100.55 53.96,99.82C54.74,99.09 55.67,98.72 56.76,98.72H66.61V63.24H57.65C56.51,63.24 55.58,62.88 54.85,62.15C54.12,61.42 53.76,60.53 53.76,59.48C53.76,58.44 54.12,57.55 54.85,56.82C55.58,56.09 56.51,55.72 57.65,55.72H70.78C72.1,55.72 73.12,56.16 73.85,57.02C74.58,57.84 74.95,58.96 74.95,60.37V98.72H84.72C85.86,98.72 86.8,99.09 87.53,99.82C88.25,100.55 88.62,101.46 88.62,102.55C88.62,103.6 88.25,104.49 87.53,105.22C86.8,105.9 85.86,106.24 84.72,106.24H56.76ZM68.59,43.15C66.54,43.15 64.78,42.44 63.33,41.03C61.87,39.57 61.14,37.81 61.14,35.76C61.14,33.67 61.87,31.89 63.33,30.43C64.78,28.97 66.54,28.24 68.59,28.24C70.69,28.24 72.44,28.97 73.85,30.43C75.31,31.89 76.04,33.67 76.04,35.76C76.04,37.81 75.31,39.57 73.85,41.03C72.44,42.44 70.69,43.15 68.59,43.15Z"
android:fillColor="#253746"/>
android:fillColor="@color/black"/>
</vector>
Loading