アクティベーション
サンプルコード
- iOS: ActivationModel.swift
- Android: MainActivity.java
SDK のスキャン機能を使う前に、SDK を使用するデバイスでライセンスのアクティベーションを行う必要があります。 アクティベーションはそのデバイスで初めて SDK を使うときのみ必要で、オンライン環境で行います。
警告
- Android: デバイスのファクトリーリセットを行うと、再度のアクティベーションが必要になり、別デバイスとして登録されます。
- iOS: アプリを削除して再インストールすると、再度のアクティベーションが必要になり、別デバイスとして登録されます。
1. NefrockLicenseAPI の初期化
ライセンスキーを使って NefrockLicenseAPI を初期化します。
- iOS (Swift)
- Android (Java)
import EdgeOCRSwift
let licenseAPI = try LicenseBuilder()
.withLicenseKey("YOUR_LICENSE_KEY")
.build()
import com.nefrock.edgeocr.NefrockLicenseAPI;
import com.nefrock.edgeocr.EdgeError;
NefrockLicenseAPI licenseAPI;
try {
licenseAPI = new NefrockLicenseAPI.Builder(context)
.withLicenseKey("YOUR_LICENSE_KEY")
.build();
} catch (EdgeError e) {
// 初期化失敗時の処理
Log.e("EdgeOCR", e.getMessage());
}
"YOUR_LICENSE_KEY"にはお客様のライセンスキーを設定してください。- Android では第一引数にアプリの
Contextを渡します。
2. アクティベーションの実行
activate メソッドを呼び出してデバイスを登録します。
- iOS (Swift)
- Android (Java)
do {
let license = try await licenseAPI.activate()
// アクティベーション成功
} catch {
// アクティベーション失敗
print(error.localizedDescription)
}
import com.nefrock.edgeocr.License;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.ListenableFuture;
ListenableFuture<License> future = licenseAPI.activate();
Futures.addCallback(
future,
new FutureCallback<License>() {
@Override
public void onSuccess(License license) {
// アクティベーション成功
}
@Override
public void onFailure(Throwable t) {
// アクティベーション失敗
}
},
Runnable::run
);
一度アクティベーションを行うと、ライセンス情報がファイルに保存されるため、次回以降のアプリ起動時に再度アクティベーションを行う必要はありません。
3. アクティベーション状態の確認
isActivated メソッドで、デバイスがすでにアクティベーション済みかを確認できます。
- iOS (Swift)
- Android (Java)
do {
let license = try await licenseAPI.isActivated()
// アクティベーション済み
} catch {
// 未アクティベーション
}
ListenableFuture<License> future = licenseAPI.isActivated();
Futures.addCallback(
future,
new FutureCallback<License>() {
@Override
public void onSuccess(License license) {
// アクティベーション済み
}
@Override
public void onFailure(Throwable t) {
// 未アクティベーション
}
},
Runnable::run
);
このメソッドはまずローカルのライセンスファイルを確認し、見つからない場合はサーバーに問い合わせます。 新しいデバイスとして登録されることはありません。
推奨パターン
アプリ起動時にまず isActivated で確認し、未アクティベーションの場合のみ activate を呼び出すようにしてください。
- iOS (Swift)
- Android (Java)
func tryActivation(key: String) async -> String? {
let licenseAPI: NefrockLicenseAPI
do {
licenseAPI = try LicenseBuilder().withLicenseKey(key).build()
} catch {
return error.localizedDescription
}
do {
_ = try await licenseAPI.isActivated()
} catch {
// 未アクティベーションなので activate を実行
do {
_ = try await licenseAPI.activate()
} catch {
return error.localizedDescription
}
}
return nil // 成功
}
サンプルアプリでは EdgeOCRSample/Models/Activation/ActivationModel.swift に実装されています。
// アクティベーション状態を確認してから必要に応じて実行する
ListenableFuture<License> future = licenseAPI.isActivated();
Futures.addCallback(
future,
new FutureCallback<License>() {
@Override
public void onSuccess(License license) {
// すでにアクティベーション済み
activationButton.setText("アクティベート済み");
}
@Override
public void onFailure(Throwable t) {
// 未アクティベーション — ボタンクリックで activate を実行
activationButton.setText("アクティベート");
activationButton.setOnClickListener(v -> {
licenseAPI.activate();
});
}
},
Runnable::run
);
サンプルアプリでは app/src/main/java/com/nefrock/edgeocr_example/MainActivity.java に実装されています。
4. アクティベーションの解除
deactivate メソッドでアクティベーションを解除できます。
デバイスに保存されているライセンス情報が削除され、サーバー側の登録も解除されます。
- iOS (Swift)
- Android (Java)
do {
try await licenseAPI.deactivate()
// ディアクティベーション成功
} catch {
// ディアクティベーション失敗
print(error.localizedDescription)
}
ListenableFuture<Void> future = licenseAPI.deactivate();
Futures.addCallback(
future,
new FutureCallback<Void>() {
@Override
public void onSuccess(Void result) {
// ディアクティベーション成功
}
@Override
public void onFailure(Throwable t) {
// ディアクティベーション失敗
}
},
Runnable::run
);