# Android
# Overview
이 문서는 issuer, verifier용 어플리케이션이 쯩 앱과 연동하기 위한 SDK입니다. 이 문서는 Android 앱과 쯩 앱 연동 관련 문서이며, iOS나 Web은 별도 문서로 제공됩니다.
Verifier가 presentation 요청하고 검증하는 기능에 대해서만 정리되어 있습니다. 발급 관련 기능은 아직 제공하지 않습니다.
# 쯩 앱 지원 버전
SDK의 지원 버전과 별개로 이 SDK와 연동하는 쯩 앱은 Android 6.0 (Marshmallow) 이상의 기기에서만 동작을 합니다. Android 6.0 이전의 기기에서는 쯩 앱과 연동시 에러 팝업을 띄우거나, 연동하는 메뉴를 노출 하지 않는 등의 방법으로 예외 처리를 하시기 바랍니다.
# Client SDK Sequence
Client SDK가 동작하는 순서와 기능은 아래 그림과 같습니다. SDK는 verifier에게 제공됩니다.
# Implementation Preparation
Prerequisite
- Android SDK version: 19 이상
SDK 라이브러리 MyID 서비스를 사용하기 위해 사용되는 MyID-sdk-android 파일은 aar로 배포됩니다.
MyID Client SDK - Android 에서 다운로드 가능합니다.
# Sample Code
SDK를 사용하는 클라이언트 샘플코드를 참고하십시오. Client App Sample
# Implementation Guide
기본적으로 다음과 같은 작업을 수행합니다.
- 쯩 for 공공기관 앱 설치 확인
- Zzeung 객체 생성
- ResultCallback 구현
- request로 Presentation 생성 요청
# 쯩 앱 설치 확인
쯩 앱 설치 확인 후 미설치 시 Goolge playstore로 이동
앱 설치 확인*
PackageManager pm = getPackageManager();
boolean isInstalled = false;
try {
pm.getPackageInfo("com.iconloop.zzeung", PackageManager.GET_ACTIVITIES);
// 쯩 앱이 설치 되어 있음.
isInstalled = true;
catch (PackageManager.NameNotFoundException e) {
// 쯩 앱이 설치 되어있지 않음.
isInstalled = false;
}
미설치 시 Google playstore로 이동
Uri playstore = Uri.parse("market://details?id=com.iconloop.zzeung")
startActivity(new Intent(Intent.ACTION_VIEW, playstore));
# Zzeung
쯩 앱과 연결하고 쯩 앱으로 presentation 생성을 요청하고 생성된 presentation을 전달받습니다.
Constructor
- Zzeung Interface
- ResultCallback
- onResult
- onError
- Methods
- request()
- openUrl()
Constructor
Zzeung(Context context)
쯩 앱과 통신하는 Zzeung 객체 생성합니다.
// Zzeung 객체 생성
Zzeung zzeung = new Zzeung(context);
Interface
ResultCallback
request에 대한 결과를 받습니다.
- onResult
- onError
Zzeung zzeung = new Zzeung(context)
.setResultCallback(new Zzeung.ResultCallback() {
@Override
public void onResult(int reqId, String result) {
// Presentation에 대한 처리
}
@Override
public void onError(int reqId, ZzeungException e) {
Log.e(TAG, e.toString());
}
});
Methods
request(int reqId, String jwt)
쯩 앱에 메시지를 보냅니다. 가능한 메시지 목록은 MyID2.0 Implementation Guide의 Appendix / 쯩 앱과의 메시지 규격을 참조하십시오. 현재는 이 중에 Presentation Request (VPR) & Presentation만 지원합니다.
- reqId : Request ID
- jwt : Verifiable Presentation Request message
Zzeung zzeung = new Zzeung(context)
.setResultCallback(Zzeung.ResultCallback);
String vpr = “{\n\“type\”:\“request_presentation\”,...kL7KQ\”\n}”;
// 쯩앱에 ‘Verifiable Presentation Request (VPR)’를 보내 Presentation 생성 요청.
zzeung.request(1234, vpr);
openUrl(String url)
쯩 앱 내에서 해당 URL의 웹 페이지를 열도록 요청합니다.
- url : URL
Zzeung zzeung = new Zzeung(context)
.setResultCallback(Zzeung.ResultCallback);
String url = “https://www.iconloop.com”;
// 쯩앱에 URL을 보내 웹페이지를 열도록 요청.
zzeung.openUrl(url);
ZzeungException
- Medhods
- getCode
- getMessage
- ErrorCodes
Methods
int getCode()
- 에러코드 반환
String getMessage()
- 에러 메시지 반환