APIリファレンス
NetFUNNEL Androidエージェントの関数、コールバック、応答形式に関する完全なリファレンスです。
目次
初期化関数
Netfunnel.initialize
目的: 必須構成を使用してNetFUNNEL Androidエージェントを初期化します。
関数シグネチャ:
- Kotlin
- Java
Netfunnel.initialize(
clientId: String,
networkTimeout: Long = 3000,
retryCount: Int = 0,
printLog: Boolean = false,
errorBypass: Boolean = false,
useNetfunnelTemplate: Boolean = true,
userId: String? = null,
useNetworkRecoveryMode: Boolean = false,
statusBarStyle: String? = null
)
Netfunnel.INSTANCE.initialize(
String clientId,
long networkTimeout,
int retryCount,
boolean printLog,
boolean errorBypass,
boolean useNetfunnelTemplate,
String userId,
boolean useNetworkRecoveryMode,
String statusBarStyle
)
クイックパラメータ概要:
| カテゴリ | パラメータ | 目的 |
|---|---|---|
| 必須 | clientId | 必須クライアント構成 |
| ネットワーク | networkTimeout, retryCount, useNetworkRecoveryMode | ネットワーク動作および安定性 |
| デバッグ | printLog | デバッグロギングを有効化 |
| エラー処理 | errorBypass | エラー動作の制御 |
| UI/テンプレート | useNetfunnelTemplate, statusBarStyle | 待合室の外観 |
| 高度 | userId | ホワイトリスト/ブラックリスト用のユーザー識別 |
基本例:
- Kotlin
- Java
Netfunnel.initialize(
clientId = "{{CLIENT_ID}}"
)
Netfunnel.INSTANCE.initialize(
"{{CLIENT_ID}}"
);
すべてのオプションを含む完全な例:
- Kotlin
- Java
Netfunnel.initialize(
clientId = "{{CLIENT_ID}}",
networkTimeout = 5000,
retryCount = 2,
printLog = true,
errorBypass = false,
useNetfunnelTemplate = true,
userId = "user_12345",
useNetworkRecoveryMode = true,
statusBarStyle = "auto"
)
Netfunnel.INSTANCE.initialize(
"{{CLIENT_ID}}",
5000, // networkTimeout
2, // retryCount
true, // printLog
false, // errorBypass
true, // useNetfunnelTemplate
"user_12345", // userId
true, // useNetworkRecoveryMode
"auto" // statusBarStyle
);
すべての初期化パラメータ、範囲、動作、使用例の詳細については、初期化オプションリファレンスを参照してください。
基本コントロール関数
基本コントロールはサービスに対する進入速度を制限します。開始関数が呼び出されるとキーが発行され、待合室が表示されます。停止関数が呼び出されるとキーが返却されます。
nfStart
目的: 基本コントロールのためにキーを発行し、待合室を表示します。
関数シグネチャ:
- Kotlin
- Java
Netfunnel.nfStart(
projectKey: String,
segmentKey: String,
callback: NetfunnelCallback,
activity: Activity
)
Netfunnel.INSTANCE.nfStart(
String projectKey,
String segmentKey,
NetfunnelCallback callback,
Activity activity
)
パラメータ:
| パラメータ | 型 | 説明 | 必須 |
|---|---|---|---|
projectKey | String | コンソールの基本コントロールプロジェクトキー | はい |
segmentKey | String | コンソールの基本コントロールセグメントキー | はい |
callback | NetfunnelCallback | VWRイベントを処理するコールバック | はい |
activity | Activity | 現在のactivityコンテキスト | はい |
戻り値: void
例:
- Kotlin
- Java
Netfunnel.nfStart(
projectKey = "service_1",
segmentKey = "segKey_8612",
callback = myCallback,
activity = this
)
Netfunnel.INSTANCE.nfStart(
"service_1",
"segKey_8612",
myCallback,
this
);
nfStop
目的: 進入が完了した後にキーを返却します。
関数シグネチャ:
- Kotlin
- Java
Netfunnel.nfStop(
projectKey: String,
segmentKey: String,
completeCallback: NetfunnelCompleteCallback? = null
)
Netfunnel.INSTANCE.nfStop(
String projectKey,
String segmentKey,
NetfunnelCompleteCallback completeCallback
)
パラメータ:
| パラメータ | 型 | 説明 | 必須 |
|---|---|---|---|
projectKey | String | コンソールの基本コントロールプロジェクトキー | はい |
segmentKey | String | コンソールの基本コントロールセグメントキー | はい |
completeCallback | NetfunnelCompleteCallback? | キー返却確認のためのコールバック | いいえ |
戻り値: void
例:
- Kotlin
- Java
Netfunnel.nfStop(
projectKey = "service_1",
segmentKey = "segKey_8612",
completeCallback = myCompleteCallback
)
Netfunnel.INSTANCE.nfStop(
"service_1",
"segKey_8612",
myCompleteCallback
);
停止関数を実行しない場合、セグメントタイムアウト設定に応じてキーが自動的に返却されます (デフォルトタイムアウト: 20秒)。
区間コントロール関数
区間コントロールは特定の区間で固定数の同時ユーザーを維持します。開始関数が呼び出されるとキーが発行されます。停止関数が呼び出されるまでユーザーはアクティブ区間にいるものと見なされ、キュー内の次のユーザーは許可されません。
ユースケース:
- マルチステッププロセス: イベントページ進入後、製品購入および決済完了ボタンクリックまで
- ユーザーセッション管理: ユーザーログインからログアウトまで
- リソース集約的な作業: 特定の機能に対する最適ユーザー数の維持
nfStartSection
目的: 区間コントロールのためにキーを発行し、待合室を表示します。
関数シグネチャ:
- Kotlin
- Java
Netfunnel.nfStartSection(
projectKey: String,
segmentKey: String,
callback: NetfunnelCallback,
activity: Activity
)
Netfunnel.INSTANCE.nfStartSection(
String projectKey,
String segmentKey,
NetfunnelCallback callback,
Activity activity
)
パラメータ:
| パラメータ | 型 | 説明 | 必須 |
|---|---|---|---|
projectKey | String | コンソールの区間コントロールプロジェクトキー | はい |
segmentKey | String | コンソールの区間コントロールセグメントキー | はい |
callback | NetfunnelCallback | VWRイベントを処理するコールバック | はい |
activity | Activity | 現在のactivityコンテキスト | はい |
戻り値: void
例:
- Kotlin
- Java
Netfunnel.nfStartSection(
projectKey = "service_1",
segmentKey = "section_segKey_1234",
callback = myCallback,
activity = this
)
Netfunnel.INSTANCE.nfStartSection(
"service_1",
"section_segKey_1234",
myCallback,
this
);
nfStopSection
目的: ユーザーがアクティブ区間を終了するときにキーを返却します。
関数シグネチャ:
- Kotlin
- Java
Netfunnel.nfStopSection(
projectKey: String,
segmentKey: String,
completeCallback: NetfunnelCompleteCallback? = null
)
Netfunnel.INSTANCE.nfStopSection(
String projectKey,
String segmentKey,
NetfunnelCompleteCallback completeCallback
)
パラメータ:
| パラメータ | 型 | 説明 | 必須 |
|---|---|---|---|
projectKey | String | コンソールの区間コントロールプロジェクトキー | はい |
segmentKey | String | コンソールの区間コントロールセグメントキー | はい |
completeCallback | NetfunnelCompleteCallback? | キー返却確認のためのコールバック | いいえ |
戻り値: void
例:
- Kotlin
- Java
Netfunnel.nfStopSection(
projectKey = "service_1",
segmentKey = "section_segKey_1234",
completeCallback = myCompleteCallback
)
Netfunnel.INSTANCE.nfStopSection(
"service_1",
"section_segKey_1234",
myCompleteCallback
);
停止関数を実行しない場合、ユーザーはアクティブ区間に留まっているものと見なされ、次のユーザーの進入が遅延する可能性があります。
コールバッククラス
NetfunnelCallback
目的: 開始関数に対するNetFUNNELサーバーの応答を処理します。
**AndroidではNetfunnelCallbackはすべてのメソッドを実装する必要があるインターフェースです。**一部のメソッドのみを実装することはできません - すべてのコールバックメソッドに対する実装を提供する必要があります。ただし、一部のメソッドは他のメソッドよりも重要です。基本実装の場合、オプショナルメソッドに対してTODO("Not yet implemented")を使用できますが、プロダクションコードではこれを適切な実装に置き換える必要があります。
抽象メソッド:
| メソッド | 必須 | 説明 | 実装戦略 |
|---|---|---|---|
onSuccess | はい | 進入が許可されるかバイパスされるときに呼び出される | 常に実装 - コアビジネスロジック |
onError | はい | システムエラーが発生したときに呼び出される | 常に実装 - 一般的にビジネスロジックを進行 |
onNetworkError | はい | ネットワーク接続問題が発生したときに呼び出される | 常に実装 - 再試行またはビジネスロジックを進行 |
onBlock | オプション | ユーザーがブロックされるときに呼び出される | 初期にはTODO使用可能 - ブロックメッセージを表示 |
onClose | オプション | ユーザーが待合室を閉じるときに呼び出される | 初期にはTODO使用可能 - ユーザーキャンセル処理 |
onContinue | オプション | カスタム待合室更新のために呼び出される | 初期にはTODO使用可能 - カスタム待合室にのみ必要 |
基本実装 (段階的):
初期開発の場合、必須メソッドのみを実装し、残りはTODOを使用できます:
- Kotlin
- Java
import com.nf4.NetfunnelCallback
class StartCallback {
companion object {
private const val TAG = "NetFUNNEL"
}
private val callback = object : NetfunnelCallback() {
override fun onSuccess(statusCode: Int, message: String) {
Log.d(TAG, "onSuccess $statusCode $message")
// コアビジネスロジック - 常に実装
proceedWithAction()
}
override fun onError(statusCode: Int, message: String) {
Log.d(TAG, "onError $statusCode $message")
// 一般的にビジネスロジックを進行 - 常に実装
proceedWithAction()
}
override fun onNetworkError(statusCode: Int, message: String) {
Log.d(TAG, "onNetworkError $statusCode $message")
// 再試行またはビジネスロジックを進行 - 常に実装
proceedWithAction()
}
override fun onBlock(statusCode: Int, message: String) {
TODO("Not yet implemented")
}
override fun onClose(statusCode: Int, message: String) {
TODO("Not yet implemented")
}
override fun onContinue(statusCode: Int, message: String, aheadWait: Int, behindWait: Int, waitTime: String, progressRate: Int) {
TODO("Not yet implemented")
}
}
fun getCallback(): NetfunnelCallback = callback
}
import com.nf4.NetfunnelCallback;
public class StartCallback {
private static final String TAG = "NetFUNNEL";
private final NetfunnelCallback callback = new NetfunnelCallback() {
@Override
public void onSuccess(int statusCode, @NonNull String message) {
Log.d(TAG, "onSuccess " + statusCode + " " + message);
// コアビジネスロジック - 常に実装
proceedWithAction();
}
@Override
public void onError(int statusCode, @NonNull String message) {
Log.d(TAG, "onError " + statusCode + " " + message);
// 一般的にビジネスロジックを進行 - 常に実装
proceedWithAction();
}
@Override
public void onNetworkError(int statusCode, @NonNull String message) {
Log.d(TAG, "onNetworkError " + statusCode + " " + message);
// 再試行またはビジネスロジックを進行 - 常に実装
proceedWithAction();
}
@Override
public void onBlock(int statusCode, @NonNull String message) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onClose(int statusCode, @NonNull String message) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onContinue(int statusCode, @NonNull String message, int aheadWait, int behindWait, @NonNull String waitTime, int progressRate) {
throw new UnsupportedOperationException("Not yet implemented");
}
};
public NetfunnelCallback getCallback() {
return callback;
}
}
完全な実装 (プロダクション準備):
プロダクションコードの場合、すべてのメソッドを適切な処理とともに実装します:
- Kotlin
- Java
import com.nf4.NetfunnelCallback
class StartCallback {
companion object {
private const val TAG = "NetFUNNEL"
}
private val callback = object : NetfunnelCallback() {
override fun onSuccess(statusCode: Int, message: String) {
Log.d(TAG, "onSuccess $statusCode $message")
/**
* キュー通過処理ロジック
* 例 - サービス画面進入処理
*/
proceedWithAction()
}
override fun onError(statusCode: Int, message: String) {
Log.d(TAG, "onError $statusCode $message")
/**
* システムエラー処理ロジック - サービス可用性を維持するためにビジネスロジックを進行
* 例 - サーバーエラーは一般的に一時的であり、ユーザーアクセスをブロックすべきではない
*/
proceedWithAction()
}
override fun onNetworkError(statusCode: Int, message: String) {
Log.d(TAG, "onNetworkError $statusCode $message")
/**
* ネットワークエラー処理ロジック - ロギングのみ実行、ビジネスロジックは実行しない
* 例 - 自動ネットワーク回復のためにuseNetworkRecoveryMode = trueを使用
*/
// 注意: ここではビジネスロジックを実行しない - ネットワーク回復モードに依存
}
override fun onBlock(statusCode: Int, message: String) {
Log.d(TAG, "onBlock $statusCode $message")
/**
* ユーザー進入ブロック処理ロジック
* 例 - アクセス制限メッセージを表示
*/
showBlockedMessage()
}
override fun onClose(statusCode: Int, message: String) {
Log.d(TAG, "onClose $statusCode $message")
/**
* ユーザーキャンセル処理ロジック (WebViewが自動的に閉じられ、前の画面に戻る)
* 例 - 終了通知Toastを表示
*/
handleUserCancel()
}
override fun onContinue(statusCode: Int, message: String, aheadWait: Int, behindWait: Int, waitTime: String, progressRate: Int) {
Log.d(TAG, "onContinue $statusCode $message")
/**
* 待機進行状況UI更新ロジック (カスタム待合室使用時にのみ適用)
* 例 - カスタム待機画面にリアルタイム待機情報を更新
*/
updateCustomWaitingRoom(aheadWait, behindWait, waitTime, progressRate)
}
}
fun getCallback(): NetfunnelCallback = callback
}
import com.nf4.NetfunnelCallback;
public class StartCallback {
private static final String TAG = "NetFUNNEL";
private final NetfunnelCallback callback = new NetfunnelCallback() {
@Override
public void onSuccess(int statusCode, @NonNull String message) {
Log.d(TAG, "onSuccess " + statusCode + " " + message);
/**
* キュー通過処理ロジック
* 例 - サービス画面進入処理
*/
proceedWithAction();
}
@Override
public void onError(int statusCode, @NonNull String message) {
Log.d(TAG, "onError " + statusCode + " " + message);
/**
* システムエラー処理ロジック - サービス可用性を維持するためにビジネスロジックを進行
* 例 - サーバーエラーは一般的に一時的であり、ユーザーアクセスをブロックすべきではない
*/
proceedWithAction();
}
@Override
public void onNetworkError(int statusCode, @NonNull String message) {
Log.d(TAG, "onNetworkError " + statusCode + " " + message);
/**
* ネットワークエラー処理ロジック - ロギングのみ実行、ビジネスロジックは実行しない
* 例 - 自動ネットワーク回復のためにuseNetworkRecoveryMode = trueを使用
*/
// 注意: ここではビジネスロジックを実行しない - ネットワーク回復モードに依存
}
@Override
public void onBlock(int statusCode, @NonNull String message) {
Log.d(TAG, "onBlock " + statusCode + " " + message);
/**
* ユーザー進入ブロック処理ロジック
* 例 - アクセス制限メッセージを表示
*/
showBlockedMessage();
}
@Override
public void onClose(int statusCode, @NonNull String message) {
Log.d(TAG, "onClose " + statusCode + " " + message);
/**
* ユーザーキャンセル処理ロジック (WebViewが自動的に閉じられ、前の画面に戻る)
* 例 - 終了通知Toastを表示
*/
handleUserCancel();
}
@Override
public void onContinue(int statusCode, @NonNull String message, int aheadWait, int behindWait, @NonNull String waitTime, int progressRate) {
Log.d(TAG, "onContinue " + statusCode + " " + message);
/**
* 待機進行状況UI更新ロジック (カスタム待合室使用時にのみ適用)
* 例 - カスタム待機画面にリアルタイム待機情報を更新
*/
updateCustomWaitingRoom(aheadWait, behindWait, waitTime, progressRate);
}
};
public NetfunnelCallback getCallback() {
return callback;
}
}
応答処理戦略:
| 応答タイプ | ステータスコード | 動作 | ビジネスロジック | ユーザー通知 |
|---|---|---|---|---|
| Success | 200, 300, 303 | 実行 | ✅ はい | オプション |
| Error | 500 | 実行 | ✅ はい | オプション |
| NetworkError | 1001, 1002 | ロギングのみ | ❌ いいえ | オプション |
| Block | 301, 302 | 停止 | ❌ いいえ | 必須 |
| Close | 495-499 | 停止 | ❌ いいえ | オプション |
onErrorはビジネスロジックを実行するがonNetworkErrorは実行しない理由:
onError (ステータスコード 500) - サーバーエラー:
- シナリオ: NetFUNNELサーバーが内部エラーに遭遇
- 戦略: サービス可用性を維持するためにビジネスロジックを実行
- 根拠: サーバーエラーは一般的に一時的であり、ユーザーアクセスをブロックすべきではない
- 結果: NetFUNNELに問題があっても継続する堅牢なサービス
onNetworkError (ステータスコード 1001, 1002) - ネットワーク問題:
- シナリオ: ネットワーク接続問題 (オフライン、タイムアウト)
- 戦略: ロギングのみ実行、ビジネスロジックは実行しない
- 根拠: 自動ネットワーク回復のために
useNetworkRecoveryMode = trueを使用 - 結果: ネットワーク問題中にユーザーが待合室に留まり、接続が回復すると自動的に再開
ネットワーク回復モードの構成:
最適なネットワークエラー処理のためにApplicationクラスでネットワーク回復を有効にします:
- Kotlin
- Java
// SampleApplication.kt
Netfunnel.initialize(
clientId = "{{CLIENT_ID}}",
useNetworkRecoveryMode = true // 自動ネットワーク回復を有効化
)
// SampleApplication.java
Netfunnel.INSTANCE.initialize(
"{{CLIENT_ID}}",
3000, // networkTimeout
0, // retryCount
false, // printLog
false, // errorBypass
true, // useNetfunnelTemplate
null, // userId
true, // useNetworkRecoveryMode
null // statusBarStyle
);
NetfunnelCompleteCallback
目的: 停止関数に対するNetFUNNELサーバーの応答を処理します。
抽象メソッド:
| メソッド | 必須 | 説明 |
|---|---|---|
onComplete | いいえ | キー返却が完了したときに呼び出される |
実装例:
- Kotlin
- Java
import com.nf4.NetfunnelCompleteCallback
class StopCallback {
companion object {
private const val TAG = "NetFUNNEL"
}
private val callback = object : NetfunnelCompleteCallback() {
override fun onComplete(statusCode: Int, message: String) {
Log.d(TAG, "onComplete $statusCode $message")
/**
* 進入キー返却結果処理ロジック
* 例 - キー返却が成功したら次のページに移動
*/
handleKeyReturnCompletion()
}
}
fun getCallback(): NetfunnelCompleteCallback = callback
}
import com.nf4.NetfunnelCompleteCallback;
public class StopCallback {
private static final String TAG = "NetFUNNEL";
private final NetfunnelCompleteCallback callback = new NetfunnelCompleteCallback() {
@Override
public void onComplete(int statusCode, @NonNull String message) {
Log.d(TAG, "onComplete " + statusCode + " " + message);
/**
* 進入キー返却結果処理ロジック
* 例 - キー返却が成功したら次のページに移動
*/
handleKeyReturnCompletion();
}
};
public NetfunnelCompleteCallback getCallback() {
return callback;
}
}
応答オブジェクトスキーマ
コールバックメソッドは次のパラメータを受け取ります:
| パラメータ | 型 | 説明 | 例 |
|---|---|---|---|
statusCode | Int | HTTPステータスコード | 200, 300, 500, 1001など |
message | String | 応答メッセージ | "Success", "Bypass", "Server Error"など |
aheadWait | Int | キュー前のユーザー数 (onContinueのみ) | 5 |
behindWait | Int | キュー後のユーザー数 (onContinueのみ) | 10 |
waitTime | String | 予想待機時間 (onContinueのみ) | "2 minutes" |
progressRate | Int | 進行率パーセンテージ (onContinueのみ) | 75 |
ステータスコードリファレンス
可能なすべてのステータスコードとその意味に関する完全なリファレンスです。
| ステータス | StatusCode | Message | 説明 |
|---|---|---|---|
| Success | 200 | Success | キューを正常に通過し、サービスに進入した。正常なキュー通過。 |
| 300 | Bypass | さまざまな条件により進入がバイパスされた。例: サブスクリプション/ライセンス期限切れ、コンソールでプロジェクト/セグメント無効化、errorBypass=true設定およびエラー発生。 | |
| 303 | Express | エクスプレス進入成功。コンソールホワイトリストに登録されたIPまたはID (管理者バイパス)。 | |
| Error | 500 | Server Error | システムエラーが発生した。例: 開始関数の前にエージェント初期化関数が呼び出されていない、存在しないプロジェクト/セグメントキーを使用、コンソールでセグメント削除、部分応答損失を引き起こすサーバーエラー。 |
| NetworkError | 1001 | Network Not Connected | ネットワーク接続がブロックされた。WiFi/セルラーデータ無効化。 |
| 1002 | Network Timeout | ネットワークタイムアウトが発生した。例: ネットワーク遅延、不正な待合室HTML URL受信、サーバーダウン (502など)。 | |
| Block | 301 | Block | セグメントがブロック状態である。コンソールでセグメントブロック (善意の進入ブロック)。 |
| 302 | Macro Block | ユーザーがブロックされた。例: コンソールブラックリストに登録されたIPまたはID (管理者ブロック)、BotManager Basic有効化 (悪意のある進入ブロック)。 | |
| Close | 495 | Closed PostWaiting Room | 事後待合室が閉じられた。ユーザーが事後待合室で閉じるボタンをクリック。 |
| 496 | Closed PreWaiting Room | 事前待合室が閉じられた。ユーザーが事前待合室で閉じるボタンをクリック。 | |
| 497 | Closed Macro Blocking Room | マクロブロック室が閉じられた。ユーザーがマクロブロック室で閉じるボタンをクリック。 | |
| 498 | Closed Blocking Room | ブロック室が閉じられた。ユーザーがブロック室で閉じるボタンをクリック。 | |
| 499 | Canceled Waiting Room | 基本待合室でキャンセル/閉じるボタンをクリック。ユーザーが基本待合室でキャンセルボタンをクリック。 | |
| Continue | 201 | Continue | カスタムテンプレートのための待合室更新。エージェントuseNetfunnelTemplate=false設定および基本待機中。 |
ユーティリティ関数
getVersion
目的: NetFUNNEL Androidエージェントの現在のバージョンを取得します。
関数シグネチャ:
- Kotlin
- Java
Netfunnel.getVersion(): String
Netfunnel.INSTANCE.getVersion(): String
戻り値: String - NetFUNNEL Androidエージェントのバージョン文字列
例:
- Kotlin
- Java
val version = Netfunnel.getVersion()
Log.d("NetFUNNEL", "Agent version: $version")
String version = Netfunnel.INSTANCE.getVersion();
Log.d("NetFUNNEL", "Agent version: " + version);
関連ドキュメント
- 統合方法概要: 基本コントロール vs 区間コントロールアプローチの比較
- 基本コントロール統合: 例を含む実装ガイド
- 区間コントロール統合: 例を含む実装ガイド
- 初期化オプションリファレンス: すべての初期化パラメータ
- トラブルシューティング: 一般的な問題および解決方法