Activation Code Verification
Gate the generated app behind activation codes, so it runs only after a valid code is entered.
Where: the Activation code card in the Edit Common Config editor.
Options
- Enable — turn activation gating on (
activationEnabled). - Activation codes — the list of valid codes (
activationCodeList). On a time-limited or combined code, Show remaining days on each launch is on unless you turn it off. Each successful launch opens the activation window with the days and hours left and a Start button, then continues into the announcement or splash. Cards saved before this choice, including ones that only carry the older off-by-default flag, still show the window. Permanent and usage-only codes do not offer it. Remote activation does not show this window. - Require every time — re-verify the activation on every launch instead of trusting it once (
activationRequireEveryTime). The remembered card is re-validated silently: local codes must still be listed in the config (removing a card revokes it), remote codes are re-checked against your server. The user is only asked to re-enter a code when the remembered one fails (expired, exhausted, revoked, or rejected). - Dialog config — customize the activation dialog (title, subtitle, input label, button text).
- Remote activation — verify against your own HTTPS endpoint signed with EC P-256, with an offline policy (
activationRemoteConfig). - Device binding (one-time codes) — remote-verification only (
activationRemoteConfig.deviceBound). The verification request carries a device identifier and the server enforces per-code seats: each code is limited to 1 device by default (first device to activate claims the seat), so a code behaves as a one-time / single-device code. Other devices are rejected with the server's message. The claimed seat survives uninstall + reinstall on the same device. Requires a verification server that enforces binding — the reference worker does this out of the box viamaxDevices.
Notes
- Local verification checks codes on-device; remote verification calls your server. See the remote activation reference.
- Device binding is impossible with local verification: the app has no shared state between devices, so any "one-time" claim on a purely local code cannot be enforced. Use remote verification with Device binding enabled for one-time codes.
- The usage limit on a local usage-limited code counts app launches on the device after activation — it is not a per-code redemption limit and resets if app data is cleared.
- The app list shows an activation chip on gated apps.
