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 | 리디렉션 대신 페이지 안에 플로우를 렌더링 |

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