ShiftOne ScreenVeil 웹

ScreenVeil 라이센스 활성화와 운영

이 문서의 목적은 단순합니다. 발급된 라이센스를 앱에서 안정적으로 활성화하고, 운영 중 라이센스 문제를 블랙박스로 두지 않도록 돕는 것입니다.

이 사이트의 라이센스 종류

체험 라이센스

Bundle ID 기준으로 7일 동안 즉시 발급되며, 구매 전 적합성 검토를 위한 기본 수단입니다.

상용 라이센스

결제가 끝나면 운영용으로 발급됩니다. 상용 흐름도 같은 제품을 기준으로 하며, 구매 전 검증이 전제됩니다.

활성화 체크리스트

  • 평가 또는 배포 중인 앱 빌드와 정확히 일치하는 Bundle ID를 사용합니다.
  • 발급된 payload는 팀이 기존에 민감 설정값을 다루는 방식에 맞춰 보관합니다.
  • 데모, QA 승인, 운영 배포 전에 앱이 유효한 라이센스 상태로 들어가는지 먼저 확인합니다.
  • 만료, 불일치, 기타 무효 상태는 운영상 이슈로 보고 명시적으로 처리합니다.

활성화 실패 시 먼저 볼 것

Bundle ID 불일치

빌드 타깃, 앱 설정, 발급된 라이센스가 모두 같은 Bundle ID를 가리키는지 가장 먼저 확인합니다. → SVLicenseErrorBundleIdentifierMismatch (1002)

유효 기간 문제

체험판이 만료됐거나 현재 시점에 유효하지 않은 라이센스를 사용하고 있지 않은지 확인합니다. → SVLicenseErrorExpired (1003) / SVLicenseErrorNotYetValid (1004)

운영 복구

라이센스를 새로 받고, 올바른 앱 타깃인지 확인한 뒤, 클린 빌드 기준으로 다시 검증합니다. 보호가 된 것처럼 넘어가면 안 됩니다.

갱신과 운영 인수인계

  • 체험판용과 운영용 Bundle ID를 구분해 관리해 평가 자산과 실운영 자산이 섞이지 않게 합니다.
  • 상용 갱신, 과금, 라이센스 배포 책임자를 조직 안에서 명확히 둡니다.
  • 지원 또는 법적 예외 검토가 필요한 경우를 대비해 구매 기록과 실제 사용 payload를 보관합니다.

에러 코드

sv_enableProtectionWithLicenseJSON:configuration:error:가 실패할 때 NSError 도메인에서 반환되는 에러 코드입니다.

SVLicenseErrorMalformedPayload (1000)
라이센스 JSON이 유효하지 않거나 파싱할 수 없습니다.
SVLicenseErrorMissingRequiredField (1001)
라이센스 페이로드에 필수 필드가 없습니다.
SVLicenseErrorBundleIdentifierMismatch (1002)
라이센스가 다른 번들 식별자로 발급되었습니다.
SVLicenseErrorExpired (1003)
라이센스 유효 기간이 종료되었습니다.
SVLicenseErrorNotYetValid (1004)
라이센스가 아직 활성화되지 않았습니다 — valid_from이 미래 시점입니다.
SVLicenseErrorSignatureUnsupported (1005)
이 플랫폼에서 지원하지 않는 서명 알고리즘입니다.
SVLicenseErrorRevoked (1006)
라이센스가 취소되었습니다.
SVLicenseErrorRevocationCheckRequired (1007)
취소 확인이 필요하지만 충족할 수 없습니다.
SVLicenseErrorInvalidSignature (1008)
암호화 서명 검증에 실패했습니다.
SVLicenseErrorUnknownKeyIdentifier (1009)
라이센스의 키 식별자를 이 SDK 버전이 인식하지 못합니다.
SVLicenseErrorProtectionRequiresMainThread (1010)
보호는 메인 스레드에서 활성화해야 합니다.

런타임 검증 순서

SDK가 라이센스를 순서대로 검증하는 단계입니다. 각 단계 실패 시 해당 에러 코드가 반환됩니다.

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. 암호화 서명 검증

내장 공개 키로 ECDSA P-256 서명 검증. → SVLicenseErrorInvalidSignature (1008) / SVLicenseErrorUnknownKeyIdentifier (1009)

8. 활성화 허용

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

함께 읽으면 좋은 문서

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

시작 가이드

체험판에서 첫 검증 빌드까지의 전체 흐름입니다.

문서 열기

iOS 통합

앱 쪽 활성화 흐름과 함께 봐야 하는 문서입니다.

문서 열기

제한 사항

라이센스가 보장하지 않는 범위를 이해할 때 필요합니다.

문서 열기