メインコンテンツまでスキップ
バージョン: 4.6.2-saas

統合共通質問

Q. NetworkErrorをどのように処理すべきですか?

A. ユーザーに通知し、再試行するか元のロジックを進行してください:

Web Javascript統合の場合

function handleNetworkError(response) {
if (confirm('ネットワークエラーが発生しました。再度試行しますか?')) {
nfStart(keys, callback); // 再試行
} else {
performOriginalLogic(); // 続行
}
}

Android統合の場合

private val callback = object : NetfunnelCallback() {
override fun onNetworkError(statusCode: Int, message: String) {
when (statusCode) {
1001 -> {
// ネットワーク接続されない
showNetworkErrorDialog()
}
1002 -> {
// ネットワークタイムアウト - 再試行
retryWithDelay()
}
}
}
}

private fun retryWithDelay() {
Handler(Looper.getMainLooper()).postDelayed({
Netfunnel.nfStart(projectKey, segmentKey, callback, this)
}, 2000)
}

Q. キーを返却することを忘れたらどうなりますか?

A. キーはサーバータイムアウトによって自動的に返却される可能性がありますが、これによりボトルネックが発生する可能性があります。常に明示的に返却してください:

Web Javascript統合の場合

// 推奨: 常にキー返却
nfStart(keys, function(response) {
if (response.status === 'Success') {
performAction()
.then(() => nfStop(keys))
.catch(() => nfStop(keys)); // エラー発生時にも返却
}
});

Android統合の場合

// 推奨: 常にキーを返却
private val callback = object : NetfunnelCallback() {
override fun onSuccess(statusCode: Int, message: String) {
performAction()
.onSuccess {
Netfunnel.nfStop(projectKey, segmentKey, completeCallback)
}
.onFailure {
Netfunnel.nfStop(projectKey, segmentKey, completeCallback) // エラーが発生しても返却
}
}
}

Q. NetFUNNEL統合をどのようにデバッグしますか?

A. ロギングを有効化し、コンソールを確認してください:

Web Javascript統合の場合

<script
src="https://agent-lib.stclab.com/agents/client/javascript/netfunnel-javascript-agent.js"
data-nf-client-id="your-client-id"
data-nf-print-log="true"
></script>

その後、DevToolsコンソールでNetFUNNELログメッセージを確認してください。

Android統合の場合

Netfunnel.initialize(
clientId = "{{CLIENT_ID}}",
printLog = true // ロギングを有効化
)

その後、LogcatでNetFUNNELログメッセージを確認してください。

Q. URLトリガーとコードベース方法を両方使用できますか?

A. はい、単一サービス内で両方の方法を一緒に使用できます:

  • URLトリガーをページ進入速度制御に使用
  • コードベースをビジネス同時ユーザー数制御に使用
// ランディングページ保護のためのURLトリガー
// (コンソールで構成)

// ログインのための基本制御
function handleLogin() {
Netfunnel.nfStart("login_project", "login_segment", loginCallback);
}

// 決済のための区間制御
function startCheckout() {
Netfunnel.nfStartSection("checkout_project", "checkout_segment", checkoutCallback);
}

一般的なパターン:

  • ページ進入保護のために URLトリガー統合 を使用
  • 進入点(ログイン、主要機能)に 基本制御 (コードベース統合) を使用 - 画面ロード後 迅速なキー返却
  • 重要なプロセス(決済、決済処理)に 区間制御 (コードベース統合) を使用 - プロセス全体が完了するまでキー保持

ただし、運用の複雑さを減らすために、1つの方法を優先的に使用することが推奨されます。

Q. 同じアプリで基本制御と区間制御の両方を使用できますか?

A. はい、同じアプリケーションで両方の方法を使用できます:

iOS

// ログインのための基本制御
func handleLogin() {
Netfunnel.shared.nfStart(projectKey: "login_project", segmentKey: "login_segment")
}

// チェックアウトのための区間制御
func startCheckout() {
Netfunnel.shared.nfStartSection(projectKey: "checkout_project", segmentKey: "checkout_segment")
}

一般的なパターン:

  • 進入点(ログイン、主要機能)には 基本制御 (コードベース統合) を使用 - ビューコントローラーロード後 迅速なキー返却
  • 重要なプロセス(チェックアウト、決済)には 区間制御 (コードベース統合) を使用 - プロセス全体が完了するまでキー保持

Android

// ログインのための基本制御
fun handleLogin() {
Netfunnel.nfStart("login_project", "login_segment", loginCallback, this)
}

// チェックアウトのための区間制御
fun startCheckout() {
Netfunnel.nfStartSection("checkout_project", "checkout_segment", checkoutCallback, this)
}

一般的なパターン:

  • 進入ポイント(ログイン、主要機能)には 基本制御 (コードベース統合) を使用 - Activityロード後 迅速なキー返却
  • 重要なプロセス(チェックアウト、決済)には 区間制御 (コードベース統合) を使用 - プロセス全体が完了するまでキー保持

Q. NetFUNNELを複数回初期化できますか?

A. いいえ、NetFUNNELはApplicationクラスで一度だけ初期化する必要があります。複数回初期化すると予期しない動作が発生する可能性があります。