모바일 및 웹 SDK
iOS, Android, React Native, Flutter용 네이티브 SDK는 플로우를 앱 안에 넣으며 NFC를 지원하는 유일한 경로입니다. 웹 SDK는 프런트엔드에 임베드합니다.
네이티브 SDK는 iOS, Android, React Native, Flutter용으로 제공되며, 웹 SDK는 플로우를 프런트엔드에 임베드합니다. NFC나 최상의 카메라 동작이 필요할 때는 네이티브 SDK를 사용하세요 - WebView는 둘 다 제공하지 않습니다. 결과는 여전히 SDK가 아니라 웹훅으로 전달됩니다.
#왜 리디렉션이 아니라 SDK인가
호스팅 리디렉션은 가장 손이 덜 가는 방법이며 대부분의 플로우에는 실제로 충분합니다. SDK는 다음과 같은 경우에 도입할 가치가 있습니다.
- NFC가 필요한 경우. 여권이나 신분증에 내장된 칩은 브라우저 페이지에서 읽을 수 없습니다. 네이티브 SDK가 유일한 경로입니다. NFC 칩 인증을 참고하세요.
- 사용자가 여러분의 앱을 떠나지 않길 원하는 경우. 모바일에서 밖으로 나갔다 돌아오는 리디렉션은 실질적인 이탈 지점입니다.
- 최상의 카메라 동작을 원하는 경우. 네이티브 카메라 접근은 특히 구형 기기에서 브라우저보다 안정적입니다.
#제공되는 것
| 플랫폼 | 비고 |
|---|---|
| iOS | XCFramework로 배포 |
| Android | Maven을 통해 배포 |
| React Native | 네이티브 모듈을 래핑하며 New Architecture 지원 |
| Flutter | 네이티브 모듈을 래핑 |
| JavaScript / 웹 | 호스팅 플로우를 웹 프런트엔드에 임베드 |
| In-context iframe | 리디렉션 대신 페이지 안에 플로우를 렌더링 |

- 플랫폼을 선택하면 해당 스택용 스니펫이 제공됩니다.
- 각자의 퀵스타트를 가진 네이티브 및 웹 SDK가 여기에 연결되어 있습니다.
버전 요구 사항과 플랫폼 최소 사양은 릴리스마다 바뀌므로, 도움말 페이지의 스냅샷이 아니라 현재 SDK 문서를 확인하세요. 특정 프레임워크 버전(예: 특정 Expo SDK)을 사용 중이라면, 스프린트에 반영하기 전에 Didit 담당자와 호환성을 확인하세요.
#WebView는 네이티브 SDK가 아닙니다
호스팅된 웹 플로우를 WebView로 감싸면 앱 내 경험처럼 보입니다. 하지만 실제로는 겉모습만 그럴 뿐입니다.
- NFC 불가. 칩은 여전히 읽을 수 없습니다.
- 카메라 권한이 더 까다로워집니다. WebView의 카메라 접근은 호스트 앱 설정에 좌우되며, 잘못 설정하면 라이브니스 및 얼굴 일치 문제 해결하기에서 다루는 "카메라가 아예 켜지지 않는다"는 보고가 그대로 나옵니다.
- 로케일이 사용자가 아니라 앱의 것이 됩니다. WebView는 호스트 앱의 로케일을 보고하므로, 세션 생성 시
language를 명시적으로 전달하세요. 인증 언어 설정하기를 참고하세요.
앱 내 플로우를 위해 수고를 들일 것이라면 네이티브 SDK를 사용하세요.
#결과는 여전히 웹훅에서 옵니다
여기서 많은 사람이 놓치는 부분입니다. SDK는 사용자가 플로우를 마쳤다는 사실을 앱에 알려줍니다. 하지만 그것이 인증 결정의 권위 있는 출처는 아닙니다.
결정은 검사가 실행된 후 서버 측에서 만들어지며, 웹훅을 통해 전달됩니다. SDK의 완료 콜백만으로 접근 권한을 부여하지 마세요 - 클라이언트 측 신호는 쉽게 위조될 수 있고, 콜백이 실행될 때 검사가 아직 끝나지 않았을 수도 있습니다.
"SDK가 완료됐다고 했다"를 "사용자가 인증되었다"로 취급하는 것은 모바일 연동에서 저지를 수 있는 가장 치명적인 실수입니다. 무언가를 잠금 해제하기 전에 서버에서 웹훅이나 결정 엔드포인트로 반드시 확인하세요.
#하나의 소비자 앱인가, 여러분의 앱인가
호스팅 세션이 NFC 같은 단계를 위해 사용자를 넘겨주는 별도의 소비자용 Didit 앱은 존재하지 않습니다. NFC와 비NFC를 포함한 모든 것을 하나의 앱 경험 안에 담고 싶다면, 그 앱은 SDK가 내장된 여러분 자신의 앱입니다.
#배포 및 의존성 충돌
네이티브 SDK 연동이 호스트 앱의 다른 의존성과 충돌하는 경우가 가끔 있습니다 - 공유된 전이 라이브러리나, 다른 곳에서도 특정 버전을 고정하는 서브스펙 등입니다. 이런 문제를 만나면 오래된 버전을 고정해 우회하기보다는, 의존성 매니페스트와 함께 구체적이고 재현 가능한 문제로 보고할 가치가 있습니다. 대개 수정은 SDK 쪽에서 이루어져야 합니다.
#기기에서 테스트하기
샌드박스는 SDK를 통해서도 다른 곳과 동일하게 작동합니다 - 앱을 샌드박스 애플리케이션의 키로 지정하면 모든 검사가 모의 처리되고 과금되지 않습니다. 이는 모바일 플로우를 시연해 보기에 적합한 방법입니다. 가장 테스트해야 할 SDK 동작(권한 프롬프트, 카메라 생명주기, 캡처 도중 백그라운드 전환)은 기기 동작이라 반복해서 확인해도 비용이 들지 않기 때문입니다. 샌드박스에서 테스트하기를 참고하세요.
