Skip to content

Commit 9c8dbec

Browse files
committed
Merge branch 'master' into ED-545
# Conflicts: # yoti-sdk/src/main/java/com/yoti/mobile/android/sdk/kernelSDK/KernelSDKIntentService.java
2 parents add6aaf + 0acc4a0 commit 9c8dbec

File tree

12 files changed

+149
-72
lines changed

12 files changed

+149
-72
lines changed

README.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ We have included both config below :
136136
[See this code in one of our sample apps](./sample-app/src/main/java/com/yoti/mobile/android/sdk/sampleapp/ShareAttributesResultBroadcastReceiver.java)
137137

138138

139-
You will now need to specify your Client SDK ID and Scenario ID ready from your application dashboard.
139+
You will now need to specify your Client SDK ID and Scenario ID from your application dashboard.
140140
The SDK can be initialised like this:
141141

142142

@@ -157,7 +157,8 @@ try {
157157
YotiSDK.addScenario(scenario);
158158
```
159159

160-
[See this code in one of our sample apps](./sample-app/src/main/java/com/yoti/mobile/android/sdk/sampleapp/MainActivity.java)
160+
It is very important that this initialisation is done in the onCreate method fo your Application.
161+
[See this code in one of our sample apps](./sample-app/src/main/java/com/yoti/mobile/android/sdk/sampleapp/SampleApp.java)
161162

162163
In order to set a listener for the events on the Yoti button you can specify one this way:
163164

@@ -178,6 +179,19 @@ yotiSDKButton.setOnYotiButtonListener(new YotiSDKButton.OnYotiButtonClickListene
178179
});
179180
```
180181

182+
There is also a listener that you can set to be notified when the intent has been sent to the Yoti app.
183+
When this happens you would probably want to restore your state.
184+
185+
186+
```java
187+
yotiSDKButton.setOnYotiCalledListener(new YotiSDKButton.OnYotiCalledListener() {
188+
@Override
189+
public void onYotiCalled() {
190+
// Restore the original state
191+
}
192+
});
193+
```
194+
[See this code in one of our sample apps](./sample-app/src/main/java/com/yoti/mobile/android/sdk/sampleapp/MainActivity.java)
181195

182196
You can activate a verbose mode for the SDK by using this method :
183197
```java

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ allprojects {
3333

3434
// Testing
3535
libJunit = "junit:junit:${libJunitVersion}"
36-
libMockito = "org.mockito:mockito-all:${libMockitoVersion}"
36+
libMockito = "org.mockito:mockito-core:${libMockitoVersion}"
3737
}
3838
}

sample-app-2/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
package="com.yoti.sampleapp2">
44

55
<uses-permission android:name="android.permission.INTERNET" />
6+
67
<application
8+
android:name="com.yoti.mobile.android.sampleapp2.SampleApp2"
79
android:allowBackup="true"
810
android:icon="@mipmap/ic_launcher"
911
android:label="@string/app_name"
1012
android:roundIcon="@mipmap/ic_launcher_round"
1113
android:supportsRtl="true"
1214
android:theme="@style/AppTheme">
15+
1316
<activity android:name="com.yoti.mobile.android.sampleapp2.MainActivity">
1417
<intent-filter>
1518
<action android:name="android.intent.action.MAIN" />

sample-app-2/src/main/java/com/yoti/mobile/android/sampleapp2/MainActivity.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,8 @@
66
import android.widget.ProgressBar;
77
import android.widget.TextView;
88

9-
import com.yoti.mobile.android.sdk.YotiSDK;
109
import com.yoti.mobile.android.sdk.YotiSDKButton;
1110
import com.yoti.mobile.android.sdk.exceptions.YotiSDKException;
12-
import com.yoti.mobile.android.sdk.exceptions.YotiSDKNotValidScenarioException;
13-
import com.yoti.mobile.android.sdk.model.Scenario;
1411
import com.yoti.sampleapp2.R;
1512

1613
public class MainActivity extends AppCompatActivity {
@@ -24,8 +21,6 @@ protected void onCreate(Bundle savedInstanceState) {
2421
final ProgressBar progress = findViewById(R.id.progress);
2522
final TextView message = findViewById(R.id.text);
2623

27-
createYoti();
28-
2924
yotiSDKButton.setOnYotiScenarioListener(new YotiSDKButton.OnYotiButtonClickListener() {
3025
@Override
3126
public void onStartScenario() {
@@ -43,23 +38,6 @@ public void onStartScenarioError(YotiSDKException cause) {
4338
});
4439
}
4540

46-
47-
private void createYoti() {
48-
Scenario scenario = null;
49-
try {
50-
scenario = new Scenario.Builder()
51-
.setUseCaseId("yoti_btn_1")
52-
.setClientSDKId("d28feaf4-d62d-40e3-88ae-d619e9a5b906")
53-
.setScenarioId("60b8e997-4a5c-40b2-86e8-29c4521b7015")
54-
.setCallbackAction("com.yoti.services.CALLBACK")
55-
.create();
56-
} catch (YotiSDKNotValidScenarioException e) {
57-
e.printStackTrace();
58-
}
59-
60-
YotiSDK.addScenario(scenario);
61-
}
62-
6341
}
6442

6543

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.yoti.mobile.android.sampleapp2;
2+
3+
import android.app.Application;
4+
5+
import com.yoti.mobile.android.sdk.YotiSDK;
6+
import com.yoti.mobile.android.sdk.exceptions.YotiSDKNotValidScenarioException;
7+
import com.yoti.mobile.android.sdk.model.Scenario;
8+
9+
public class SampleApp2 extends Application {
10+
11+
@Override
12+
public void onCreate() {
13+
super.onCreate();
14+
15+
Scenario scenario = null;
16+
17+
try {
18+
scenario = new Scenario.Builder()
19+
.setUseCaseId("yoti_btn_1")
20+
.setClientSDKId("d28feaf4-d62d-40e3-88ae-d619e9a5b906")
21+
.setScenarioId("60b8e997-4a5c-40b2-86e8-29c4521b7015")
22+
.setCallbackAction("com.yoti.services.CALLBACK")
23+
.create();
24+
} catch (YotiSDKNotValidScenarioException e) {
25+
e.printStackTrace();
26+
}
27+
28+
YotiSDK.addScenario(scenario);
29+
}
30+
}

sample-app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<uses-permission android:name="android.permission.INTERNET" />
66

77
<application
8+
android:name=".SampleApp"
89
android:allowBackup="true"
910
android:icon="@mipmap/ic_launcher"
1011
android:label="@string/app_name"

sample-app/src/main/java/com/yoti/mobile/android/sdk/sampleapp/MainActivity.java

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@
22

33
import android.support.v7.app.AppCompatActivity;
44
import android.os.Bundle;
5-
import android.util.Log;
65
import android.view.View;
76
import android.widget.ProgressBar;
87
import android.widget.TextView;
98

109
import com.yoti.mobile.android.sdk.YotiSDKButton;
11-
import com.yoti.mobile.android.sdk.YotiSDK;
1210
import com.yoti.mobile.android.sdk.exceptions.YotiSDKException;
1311
import com.yoti.mobile.android.sdk.exceptions.YotiSDKNoYotiAppException;
14-
import com.yoti.mobile.android.sdk.exceptions.YotiSDKNotValidScenarioException;
15-
import com.yoti.mobile.android.sdk.model.CustomCertificate;
16-
import com.yoti.mobile.android.sdk.model.Scenario;
1712

1813
public class MainActivity extends AppCompatActivity {
1914

@@ -25,8 +20,6 @@ protected void onCreate(Bundle savedInstanceState) {
2520

2621
setContentView(R.layout.activity_main);
2722

28-
setupYotiShareScenario();
29-
3023
final YotiSDKButton yotiSDKButton = (YotiSDKButton) findViewById(R.id.button);
3124
final ProgressBar progress = (ProgressBar) findViewById(R.id.progress);
3225
final TextView message = (TextView)findViewById(R.id.text);
@@ -54,6 +47,15 @@ public void onYotiAppNotInstalledError(YotiSDKNoYotiAppException cause) {
5447
}
5548
});
5649

50+
yotiSDKButton.setOnYotiCalledListener(new YotiSDKButton.OnYotiCalledListener() {
51+
@Override
52+
public void onYotiCalled() {
53+
// Restore the original state
54+
yotiSDKButton.setVisibility(View.VISIBLE);
55+
progress.setVisibility(View.GONE);
56+
}
57+
});
58+
5759
if (getIntent().hasExtra(ShareAttributesResultBroadcastReceiver.EXTRA_CANCELLED_BY_USER)) {
5860
yotiSDKButton.setVisibility(View.VISIBLE);
5961
progress.setVisibility(View.GONE);
@@ -72,30 +74,4 @@ public void onYotiAppNotInstalledError(YotiSDKNoYotiAppException cause) {
7274
}
7375
}
7476

75-
private void setupYotiShareScenario() {
76-
CustomCertificate customCertificate = new CustomCertificate();
77-
customCertificate.setCertificateResourceId(R.raw.certificate);
78-
customCertificate.setAlias("test");
79-
customCertificate.setPassword("test123");
80-
customCertificate.setStoreName("TEST");
81-
82-
try {
83-
Scenario scenario = new Scenario.Builder()
84-
.setUseCaseId("get_user_phone_1")
85-
.setClientSDKId("4c5ecbe4-dbc1-4e42-9a36-7fc81dd32bea")
86-
.setScenarioId("35e0cf80-c8dc-4dd3-ac66-023d2c2e496c")
87-
.setCallbackAction("com.test.app.YOTI_CALLBACK")
88-
.setBackendCallbackAction("com.test.app.BACKEND_CALLBACK")
89-
.setCustomCertificate(customCertificate)
90-
.create();
91-
92-
YotiSDK.addScenario(scenario);
93-
94-
YotiSDK.enableSDKLogging(true);
95-
96-
} catch (YotiSDKNotValidScenarioException e) {
97-
Log.e(TAG, "Invalid scenario!!", e);
98-
}
99-
100-
}
10177
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.yoti.mobile.android.sdk.sampleapp;
2+
3+
import android.app.Application;
4+
import android.util.Log;
5+
6+
import com.yoti.mobile.android.sdk.YotiSDK;
7+
import com.yoti.mobile.android.sdk.exceptions.YotiSDKNotValidScenarioException;
8+
import com.yoti.mobile.android.sdk.model.CustomCertificate;
9+
import com.yoti.mobile.android.sdk.model.Scenario;
10+
11+
import static android.content.ContentValues.TAG;
12+
13+
public class SampleApp extends Application {
14+
15+
@Override
16+
public void onCreate() {
17+
super.onCreate();
18+
19+
CustomCertificate customCertificate = new CustomCertificate();
20+
customCertificate.setCertificateResourceId(R.raw.certificate);
21+
customCertificate.setAlias("test");
22+
customCertificate.setPassword("test123");
23+
customCertificate.setStoreName("TEST");
24+
25+
try {
26+
Scenario scenario = new Scenario.Builder()
27+
.setUseCaseId("get_user_phone_1")
28+
.setClientSDKId("d10b19d3-fa50-48ab-bd8c-f5a099205e6c")
29+
.setScenarioId("17807359-a933-4b77-baa2-3c2fdb5608f2")
30+
.setCallbackAction("com.test.app.YOTI_CALLBACK")
31+
.setBackendCallbackAction("com.test.app.BACKEND_CALLBACK")
32+
.setCustomCertificate(customCertificate)
33+
.create();
34+
35+
YotiSDK.addScenario(scenario);
36+
37+
YotiSDK.enableSDKLogging(true);
38+
39+
} catch (YotiSDKNotValidScenarioException e) {
40+
Log.e(TAG, "Invalid scenario!!", e);
41+
}
42+
}
43+
}

yoti-sdk/src/main/java/com/yoti/mobile/android/sdk/YotiSDK.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.Context;
44
import android.content.pm.PackageInfo;
55
import android.content.pm.PackageManager;
6+
import android.os.ResultReceiver;
67
import android.support.annotation.Nullable;
78

89
import com.yoti.mobile.android.sdk.exceptions.YotiSDKException;
@@ -92,7 +93,9 @@ public static Scenario getScenario(String useCaseId) {
9293
* @throws YotiSDKException
9394
*/
9495
/*package*/
95-
static void startScenario(final Context context, final String useCaseId, final boolean handleNoYotiAppError) throws YotiSDKException {
96+
static void startScenario(final Context context, final String useCaseId,
97+
final boolean handleNoYotiAppError,
98+
final ResultReceiver onYotiCalledResultReceiver) throws YotiSDKException {
9699

97100
YotiSDKLogger.debug("Starting scenario " + useCaseId);
98101

@@ -127,7 +130,7 @@ static void startScenario(final Context context, final String useCaseId, final b
127130
}
128131

129132
YotiSDKLogger.debug("Started scenario " + useCaseId);
130-
KernelSDKIntentService.startActionStartScenario(context, useCaseId);
133+
KernelSDKIntentService.startActionStartScenario(context, useCaseId, onYotiCalledResultReceiver);
131134
}
132135

133136
/**

yoti-sdk/src/main/java/com/yoti/mobile/android/sdk/YotiSDKButton.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
import android.content.Context;
44
import android.content.res.TypedArray;
5+
import android.os.Bundle;
6+
import android.os.Handler;
7+
import android.os.ResultReceiver;
8+
import android.support.annotation.NonNull;
59
import android.support.annotation.Nullable;
610
import android.support.v7.widget.AppCompatButton;
711
import android.util.AttributeSet;
@@ -19,6 +23,17 @@ public class YotiSDKButton extends YotiButton implements View.OnClickListener {
1923
private String mUseCaseId;
2024
private OnYotiButtonClickListener mOnYotiButtonClickListener;
2125
private OnYotiAppNotInstalledListener mOnYotiAppNotInstalledListener;
26+
private OnYotiCalledListener mOnYotiCalledListener;
27+
28+
private ResultReceiver mYotiCallResultReceiver = new ResultReceiver(new Handler()) {
29+
@Override
30+
protected void onReceiveResult(int resultCode, Bundle resultData) {
31+
super.onReceiveResult(resultCode, resultData);
32+
if (mOnYotiCalledListener != null) {
33+
mOnYotiCalledListener.onYotiCalled();
34+
}
35+
}
36+
};
2237

2338
public YotiSDKButton(Context context) {
2439
super(context);
@@ -72,6 +87,10 @@ public void setOnYotiAppNotInstalledListener(@Nullable OnYotiAppNotInstalledList
7287
mOnYotiAppNotInstalledListener = listener;
7388
}
7489

90+
public void setOnYotiCalledListener(@Nullable OnYotiCalledListener listener) {
91+
mOnYotiCalledListener = listener;
92+
}
93+
7594
@Override
7695
public void onClick(View v) {
7796

@@ -80,7 +99,7 @@ public void onClick(View v) {
8099
}
81100

82101
try {
83-
YotiSDK.startScenario(getContext(), mUseCaseId, mOnYotiAppNotInstalledListener == null);
102+
YotiSDK.startScenario(getContext(), mUseCaseId, mOnYotiAppNotInstalledListener == null, mYotiCallResultReceiver);
84103
} catch (YotiSDKException cause) {
85104

86105
YotiSDKLogger.error(cause.getMessage(), cause);
@@ -104,4 +123,8 @@ public interface OnYotiButtonClickListener {
104123
public interface OnYotiAppNotInstalledListener {
105124
void onYotiAppNotInstalledError(YotiSDKNoYotiAppException cause);
106125
}
126+
127+
public interface OnYotiCalledListener {
128+
void onYotiCalled();
129+
}
107130
}

0 commit comments

Comments
 (0)