よくある質問
待合室管理
Q. 待合室に適用可能な画像のサイズが知りたいです。
A. 画像の解像度や縦横比に関する制限はありませんが、アップロード可能な最大容量は 2MB です。 画像領域の比率や形状は変更できないため、編集時はクロップボックスの形状が固定されます。
待機システム
Q. 進入許容数が制限するのは同時接続者と総接続者のどちらですか?
A. 同時接続者数です。詳細については、基本制御セグメントの進入許容数の設定を参照してください。
Q. 1人の待機者が複数のブラウザやタブでアクセスした場合、異なる待機番号が割り当てられますか?
A. 同じ順番が割り当てられます。
Q. 待機列が動く基準は何ですか?
A. 前の待機者の作業完了または待機列離脱です。
セグメント設定
Q. リアルタイムで待機順維持設定を変更できますか?
A. はい!待機順維持設定はリアルタイムで適用されます - 変更はセグメント再起動やサービス中断なしに即座に適用されます。
リアルタイム更新例:
- 一時的に保持を無効化: トラフィックが多い中で待機順維持をオフにして、すべてのユーザーが待機列を再度通過するように強制
- 保持期間の調整: 現在待機中の訪問者に影響を与えずに保持時間を60秒から10分に変更
- 緊急待機列のリセット: 保持を無効化してすべての待機順をリセットして新しく開始
- 条件付き有効化: 必要に応じてオン/オフしながら特定の時間のみ保持を有効化
この柔軟性により、ダウンタイムなしでリアルタイム条件に基づいて待機列管理戦略を調整できます。
Q. リアルタイムで進入パス設定を変更できますか?
A. はい!進入パス設定はリアルタイムで適用されます - 変更はセグメント再起動やサービス中断なしに即座に適用されます。
リアルタイム更新例:
- パス期間の調整: より長いセッションに対応するために進入パス有効性を30分から2時間に変更
- 進入パスの無効化: すべてのアクセスですべてのユーザーが待合室を通過するように強制するために進入パスをオフ
- イベント中に進入パスを有効化: 進行中のイベント中に進入パスを有効化して戻る訪問者のユーザー体験を向上
- 条件付きパス制御: トラフィックパターンまたはイベント段階に基づいて進入パスを有効化/無効化
この柔軟性により、ダウンタイムなしでリアルタイムに変化する条件に対応してアクセス制御戦略を動的に調整できます。
Q. 待機順維持または進入パスなしで無効化を使用できますか?
A. はい、無効化は独立しています。しかし、無効化は待機順維持および進入パスと一緒に使用するときに最大の効果を発揮します。これらの保護をいつ迂回するかについての細かい制御を提供するためです。
Q. 無効化を複数回トリガーするとどうなりますか?
A. 無効化はイベントベースです:キーが確認され、無効化条件を満たすたびに無効化されます。複雑なシナリオのために、複数の無効化条件(URL + タイマー)を結合できます。
Q. 有効化した後、無効化を無効化できますか?
A. はい!進入キー無効化を無効化することは、即座に適用されるリアルタイム変更です。無効化されたキーは無効状態で維持されますが、無効化を無効化した後に発行された新しいキーは正常動作します。
Q. 無効化はすべての統合タイプで動作しますか?
A. URLベースの無効化はUTI(URLトリガー統合)で動作します。タイマーベースの無効化はすべての統合タイプ(UTIおよびCBI)で動作します。
Q. 待機キーと進入キーを別々に無効化できますか?
A. タイマーベースの無効化では、ユーザー範囲の指定設定を通じて選択できます:
- 進入済みのユーザーのみ: サービスに進入したユーザーの進入キーを無効化(再発行)します。待機中のユーザーの待機キーは影響を受けません。
- 待機中のユーザーから: サービスに進入した、または進入のために待機中のユーザーの待機キーと進入キーの両方を無効化(再発行)します。
URLベースの無効化の場合、進入キーのみが無効化されます(URLにアクセスしたユーザーの進入キーのみが無効化)。
Q. 作成後に担当者指定を変更できますか?
A. はい。セグメント設定を編集して、いつでも担当者指定を変更できます。
Q. 複数の実務者を指定できますか?
A. はい。1つのセグメントに複数の実務者を指定できます。指定されたすべての実務者がセグメントを修正できます。
統合共通質問
Q. NetworkErrorをどのように処理すべきですか?
A. ユーザーに通知し、再試行するか元のロジックを進行してください:
Web Javascript統合の場合
function handleNetworkError(response) {
if (confirm('ネットワークエラーが発生しました。再度試行しますか?')) {
nfStart(keys, callback); // 再試行
} else {
performOriginalLogic(); // 続行
}
}
Android統合の場合
- Kotlin
- Java
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)
}
private final NetfunnelCallback callback = new NetfunnelCallback() {
@Override
public void onNetworkError(int statusCode, @NonNull String message) {
switch (statusCode) {
case 1001:
// ネットワーク接続されない
showNetworkErrorDialog();
break;
case 1002:
// ネットワークタイムアウト - 再試行
retryWithDelay();
break;
}
}
};
private void retryWithDelay() {
new Handler(Looper.getMainLooper()).postDelayed(() -> {
Netfunnel.INSTANCE.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統合の場合
- Kotlin
- Java
// 推奨: 常にキーを返却
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) // エラーが発生しても返却
}
}
}
// 推奨: 常にキーを返却
private final NetfunnelCallback callback = new NetfunnelCallback() {
@Override
public void onSuccess(int statusCode, @NonNull String message) {
performAction()
.onSuccess(() -> {
Netfunnel.INSTANCE.nfStop(projectKey, segmentKey, completeCallback);
})
.onFailure(() -> {
Netfunnel.INSTANCE.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統合の場合
- Kotlin
- Java
Netfunnel.initialize(
clientId = "{{CLIENT_ID}}",
printLog = true // ロギングを有効化
)
Netfunnel.INSTANCE.initialize(
"{{CLIENT_ID}}"
);
その後、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.
- 基本制御: 進入速度を制限します (ユーザーがどれだけ速く進入できるか)
- 区間制御: 固定された同時ユーザー数を維持します (同時にアクティブにできるユーザー数)
簡単な進入制限には基本制御を使用し、特定の同時実行レベルを維持するには区間制御を使用してください。
詳細については制御タイプ比較を参照してください。
Q. 同じアプリで基本制御と区間制御の両方を使用できますか?
A. はい、同じアプリケーションで両方の方法を使用できます:
iOS
- Swift
- Objective-C
// ログインのための基本制御
func handleLogin() {
Netfunnel.shared.nfStart(projectKey: "login_project", segmentKey: "login_segment")
}
// チェックアウトのための区間制御
func startCheckout() {
Netfunnel.shared.nfStartSection(projectKey: "checkout_project", segmentKey: "checkout_segment")
}
// ログインのための基本制御
- (void)handleLogin {
[[Netfunnel shared] nfStartWithProjectKey:@"login_project" segmentKey:@"login_segment"];
}
// チェックアウトのための区間制御
- (void)startCheckout {
[[Netfunnel shared] nfStartSectionWithProjectKey:@"checkout_project" segmentKey:@"checkout_segment"];
}
一般的なパターン:
- 進入点(ログイン、主要機能)には 基本制御 (コードベース統合) を使用 - ビューコントローラーロード後 迅速なキー返却
- 重要なプロセス(チェックアウト、決済)には 区間制御 (コードベース統合) を使用 - プロセス全体が完了するまでキー保持
Android
- Kotlin
- Java
// ログインのための基本制御
fun handleLogin() {
Netfunnel.nfStart("login_project", "login_segment", loginCallback, this)
}
// チェックアウトのための区間制御
fun startCheckout() {
Netfunnel.nfStartSection("checkout_project", "checkout_segment", checkoutCallback, this)
}
// ログインのための基本制御
public void handleLogin() {
Netfunnel.INSTANCE.nfStart("login_project", "login_segment", loginCallback, this);
}
// チェックアウトのための区間制御
public void startCheckout() {
Netfunnel.INSTANCE.nfStartSection("checkout_project", "checkout_segment", checkoutCallback, this);
}
一般的なパターン:
- 進入ポイント(ログイン、主要機能)には 基本制御 (コードベース統合) を使用 - Activityロード後 迅速なキー返却
- 重要なプロセス(チェックアウト、決済)には 区間制御 (コードベース統合) を使用 - プロセス全体が完了するまでキー保持
Q. NetFUNNELを複数回初期化できますか?
A. いいえ、NetFUNNELはApplicationクラスで一度だけ初期化する必要があります。複数回初期化すると予期しない動作が発生する可能性があります。
JavaScript統合
Q. スクリプトを共通JSファイルに入れることができますか?
A. はい、スクリプトを動的に挿入できます:
<script src="./netfunnel.js" defer></script>
// netfunnel.js
var scriptNF = document.createElement("script");
scriptNF.setAttribute("data-nf-client-id", "your-client-id");
scriptNF.src = "https://agent-lib.stclab.com/agents/client/javascript/netfunnel-javascript-agent.js";
document.head.appendChild(scriptNF);
ご質問の答えが見つからない場合は、Javascriptトラブルシューティングを参照するか、STCLab技術サポートチームにお問い合わせください。
Android統合
Q. FragmentでNetFUNNELを使用できますか?
A. はい、ただしActivityコンテキストを渡す必要があります:
- Kotlin
- Java
class MyFragment : Fragment() {
fun startNetFUNNEL() {
activity?.let { activity ->
Netfunnel.nfStart(projectKey, segmentKey, callback, activity)
}
}
}
public class MyFragment extends Fragment {
public void startNetFUNNEL() {
Activity activity = getActivity();
if (activity != null) {
Netfunnel.INSTANCE.nfStart(projectKey, segmentKey, callback, activity);
}
}
}
ご質問の答えが見つからない場合は、Androidトラブルシューティングを参照するか、STCLab技術サポートチームにお問い合わせください。
iOS統合
Q. エージェントがビルドされない問題が発生しました (無効なプライバシーマニフェスト)
A. バージョン4.3.2-onpremから、Appleポリシー変更によりエージェントのprivacyinfoが更新されました。最新のエージェントバージョンを使用していることを確認してください。
Q. デリゲートコールバックでアプリがクラッシュする問題が発生しました
A. デリゲートコールバック内部でUIを操作する場合、DispatchQueue.main.asyncを使用してコードがメインスレッドで実行されるようにしてください。
Q. デバッグログを見たいです
A. initialize関数でprintLog: trueを設定してログを有効化してください。デバッグ中のみ使用し、プロダクションビルドではfalseに設定してください。
Q. 待合室が表示されない問題が発生しました
A. 進入許容数が0の場合、待合室が表示され、ユーザーは進入できません。コンソール → セグメント設定 → 基本設定 → 進入許容数を0に設定して待合室が表示されるように強制してください。
Q. デリゲートコールバックでUIを更新したいです
A. NetFUNNELコールバックは非同期です。これらのコールバック内部でUI要素を直接呼び出すと、アプリが予期しない動作をしたりクラッシュしたりする可能性があります。UI更新のために常にメインキューにディスパッチしてください。
Q. エージェントバージョンを確認する方法が知りたいです
A. getVersion()を使用してNetFUNNEL iOSエージェントのバージョンを取得します。
ご質問の答えが見つからない場合は、iOSトラブルシューティングを参照するか、STCLab技術サポートチームにお問い合わせください。