ShiftOne ScreenVeil 웹

승인 전에 꼭 검증해야 할 것

추상적인 완벽함을 증명하려는 목적이 아니라, 실제 배포에서 중요한 화면·기기·상태 전환을 검증하는 것이 목표입니다.

최소 검증 범위

  • 보호된다고 설명하려는 모든 화면 또는 컨테이너
  • 실제 지원하는 주요 iOS 버전대를 대표하는 실기기
  • 일반 포그라운드 사용, 앱 전환기, 백그라운드 전환, 제품이 대응하기로 한 캡처 관련 상태
  • 정상 활성화 케이스와 의도적인 실패 케이스 최소 1개 이상

권장 실행 순서

1. 라이센스 활성화 확인

의도한 Bundle ID와 라이센스로 앱이 정상 활성화되는지 먼저 확인합니다.

2. 일반 사용자 흐름 테스트

보호 화면이 평소 앱 사용 흐름에서 불필요하게 깨지지 않는지 확인합니다.

3. 상태 변화 테스트

앱 전환, 백그라운드 진입/복귀, 캡처 관련 상태처럼 실제로 중요한 상태 전환을 점검합니다.

4. 관찰 결과 기록

기기, OS 버전, 화면 이름, 선택한 보호 스타일, 기대와 달랐던 상태를 남겨 재현 가능하게 만듭니다.

재검증이 필요한 경우

앱 쪽 변경

네비게이션 개편, 화면 계층 변경, 새 민감 화면 추가, 표현 방식 변경은 다시 검증해야 합니다.

릴리스 변경

주요 iOS 업데이트, SDK 업데이트, 상용 라이센스 전환은 모두 재검증 사유로 보는 편이 안전합니다.

지원 이슈 발생

QA나 사용자 제보로 예상 밖 노출 사례가 나오면, 해당 화면만이 아니라 관련 전체 흐름을 다시 확인해야 합니다.

승인 전 질문

  • 보호된다고 설명할 정확한 화면을 모두 테스트했는가
  • 우리 배포에 중요한 OS·기기 조합을 반영했는가
  • 활성화 실패 시 운영/지원팀이 설명 가능한 대체 동작이 있는가
  • 제한 사항 문구를 함께 검토해 과장된 약속이 나오지 않게 했는가

SDK 런타임 검증 흐름

sv_enableProtectionWithLicenseJSON:configuration:error: 호출 시 실행되는 각 단계와 실패 시 반환되는 에러 코드입니다.

1. JSON 페이로드 파싱

잘못된 JSON 또는 필수 필드 누락 → SVLicenseErrorMalformedPayload (1000) / SVLicenseErrorMissingRequiredField (1001)

2. 번들 식별자 확인

라이센스 bundle_id가 앱과 일치해야 함 → SVLicenseErrorBundleIdentifierMismatch (1002)

3. valid_from 확인

아직 활성화되지 않은 라이센스 → SVLicenseErrorNotYetValid (1004)

4. expires_at 확인

유효 기간 초과 → SVLicenseErrorExpired (1003)

5. 취소 정책 평가

취소 확인이 필요하지만 충족되지 않음 → SVLicenseErrorRevoked (1006) / SVLicenseErrorRevocationCheckRequired (1007)

6. 서명 메타데이터 확인

알고리즘, 키 ID, 서명 데이터 누락 → SVLicenseErrorMissingRequiredField (1001)

7. 암호화 서명 검증

서명 불일치 → SVLicenseErrorInvalidSignature (1008) / SVLicenseErrorUnknownKeyIdentifier (1009)

8. 활성화 허용

모든 검사 통과 — 뷰에 보호를 적용할 수 있습니다.

함께 읽으면 좋은 문서

이 문서만 따로 보지 말고, 도입 흐름에 맞는 인접 문서를 함께 확인하는 편이 좋습니다.

시작 가이드

검증으로 자연스럽게 이어지는 전체 순서를 먼저 봅니다.

문서 열기

보호 스타일

실제 적용 예정 스타일을 기준으로 테스트합니다.

문서 열기

제한 사항

승인 전 제품 경계를 확인합니다.

문서 열기