本文へスキップ
Unveilydocs

ライセンス API

アプリが代わりに呼び出してくれるライセンス検証 API — リファレンス

この API はアプリ起動時に SDK が自動で呼び出します。自分で呼ぶことはほとんどなく、「内部で何が起きているか」を知りたいときに参照するページです。

エンドポイント

Base URL: https://api.actuallyworks.net

POST /api/license/verify

アプリ起動時にライセンスを検証します。(SDK が自動で呼び出し — 自分で呼ぶ必要はありません)

リクエスト

{
  "licenseKey": "string",
  "packageName": "com.yourcompany.app",
  "appSignatureHash": "SHA-256-hash",
  "deviceId": "unique-device-id"
}

レスポンス(成功)

{
  "isValid": true,
  "tier": "standard",
  "licenseType": "production",
  "expiresAt": "2027-01-01T00:00:00Z",
  "features": ["qr_scan", "push_notifications", "camera_gallery", "gps_location", "biometric"]
}

tier = 現在のプラン

tier は現在のプランです — "basic""standard""pro" のいずれか。ドキュメント各所でいう「プラン」がこの値です。

レスポンス(失敗)

{
  "isValid": false,
  "errorCode": "LICENSE_EXPIRED",
  "message": "License has expired"
}

features フィールドの読み方

features は、このライセンスで開放されている機能の一覧をサーバー側の識別子で並べたものです(qr_scanpush_notifications のように少し長い名前)。

サーバーの名前と、アプリ内で使う名前は別です

この features はサーバーが参考用に返す値です。アプリ内(JavaScript)で機能が有効かを判定するときに、この一覧を直接パースしないでください。 代わりに次を使うほうが簡単です:

  • unveilyBridge.app.getInfo()tier の値で現在のプランを確認
  • unveilyBridge.modules.isEnabled("...") → モジュール(例: sideDrawerbottomTabs)が有効かを確認
  • unveilyBridge.modules.getEnabledModules() → 有効なモジュールの一覧

つまり、サーバーの features は「この契約に何が含まれるか」を表し、画面上で実際に有効かどうかの判定は上のブリッジ呼び出しに任せればよい、ということです。

エラーコード

コード意味
LICENSE_NOT_FOUNDライセンスキーが見つかりません
LICENSE_EXPIREDライセンス期間が切れました
LICENSE_INACTIVEまだ有効化されていません
PACKAGE_MISMATCHパッケージ名が登録値と異なります
SIGNATURE_MISMATCHアプリ署名ハッシュが登録値と異なります
INVALID_SIGNATUREHMAC 署名の検証に失敗しました

各コードの対処法は エラーコード のページにまとめています。

On this page