ShiftOne ScreenVeil Web

Activate and operate ScreenVeil licensing

The goal of this manual is simple: help integrators move from license issuance to reliable app activation without turning licensing into a black box.

License types on this site

Trial license

Issued instantly for 7 days by Bundle ID so a team can validate fit before purchase.

Commercial license

Issued after successful purchase for production use. Validate the commercial license before production rollout.

Activation checklist

  • Use the exact Bundle ID that matches the app build under evaluation or deployment.
  • Store the issued payload in the app path your team already uses for sensitive configuration data.
  • Apply the payload before depending on protection during product demos, QA sign-off, or production rollout.
  • Treat an expired, mismatched, or otherwise invalid license as a product-state problem that needs explicit operator handling.

When activation fails

Bundle mismatch

Confirm that the build target, entitlement setup, and issued license all reference the same Bundle ID. This is the first thing to rule out. → SVLicenseErrorBundleIdentifierMismatch (1002)

Time-window issue

Check whether the trial has expired or whether a deployment is using a license that is not valid for the current time window. → SVLicenseErrorExpired (1003) or SVLicenseErrorNotYetValid (1004)

Operational recovery

Refresh the license, confirm the correct app target, and retry with a clean build. Do not silently continue as if protection succeeded.

Renewal and operator handoff

  • Track which Bundle IDs are tied to trial and production use so your team does not confuse evaluation assets with live entitlements.
  • Keep ownership clear for commercial renewal, billing, and license distribution inside the organization.
  • If a support or legal edge case ever requires license-state review, preserve purchase records and the exact issued payload used by the app.

Error codes

Error codes returned in the NSError domain when sv_enableProtectionWithLicenseJSON:configuration:error: fails.

SVLicenseErrorMalformedPayload (1000)
License JSON is not valid or cannot be parsed.
SVLicenseErrorMissingRequiredField (1001)
A required field is missing from the license payload.
SVLicenseErrorBundleIdentifierMismatch (1002)
The license was issued for a different bundle identifier.
SVLicenseErrorExpired (1003)
The license validity period has ended.
SVLicenseErrorNotYetValid (1004)
The license is not active yet — valid_from is in the future.
SVLicenseErrorSignatureUnsupported (1005)
The signature algorithm is not supported on this platform.
SVLicenseErrorRevoked (1006)
The license has been revoked.
SVLicenseErrorRevocationCheckRequired (1007)
A revocation check is required but could not be satisfied.
SVLicenseErrorInvalidSignature (1008)
Cryptographic signature verification failed.
SVLicenseErrorUnknownKeyIdentifier (1009)
The key identifier in the license is not recognized by this SDK version.
SVLicenseErrorProtectionRequiresMainThread (1010)
Protection must be enabled from the main thread.

Runtime validation order

The SDK validates a license through these steps in sequence. Failure at any step returns the corresponding error code.

1. Parse JSON payload

License JSON is deserialized and required fields are extracted. → SVLicenseErrorMalformedPayload (1000) / SVLicenseErrorMissingRequiredField (1001)

2. Verify bundle identifier

The license bundle_id must match the host app. → SVLicenseErrorBundleIdentifierMismatch (1002)

3. Check valid_from

Rejects licenses that are not yet active. → SVLicenseErrorNotYetValid (1004)

4. Check expires_at

Rejects licenses past their expiry date. → SVLicenseErrorExpired (1003)

5. Evaluate revocation policy

Policy determines whether revocation proof is required. → SVLicenseErrorRevoked (1006) / SVLicenseErrorRevocationCheckRequired (1007)

6. Confirm signature metadata

Algorithm, key ID, and signature data must all be present. → SVLicenseErrorMissingRequiredField (1001)

7. Verify cryptographic signature

ECDSA P-256 signature is verified against the embedded public key. → SVLicenseErrorInvalidSignature (1008) / SVLicenseErrorUnknownKeyIdentifier (1009)

8. Allow activation

All checks passed — protection can now be applied to the view.

Related manuals

These manuals work best when read as part of the full rollout path, not in isolation.

Getting started

The overall rollout order from trial to first validated build.

Open manual

iOS integration

How licensing fits into the app-side activation path.

Open manual

Limitations

Understand what licensing enables and where the limits are.

Open manual