ライブラリの追加
ライブラリをダウンロードし、以下のようにGradleに追加する。
implementation files('libs/netfunnel-android-agent_latest.aar')
設定の初期化
エージェントを適用するには、別途提供される初期化関数を使用してNetfunnelエージェントの設定を初期化する必要があります。
NetFUNNELを使用する前にInitNetFUNNEL、InitEum関数を使用して初期化してください。
public void Init() {
Netfunnel.InitNetfunnel(
"MyAppName", // MyAppName: Name of the application
"{tenant API URL}", // API Server URL
"{tenant NF URL}", // NetFUNNEL Server URL
"{nf-setting URL}", // NetFUNNEL Setting File URL
"{network Timeout}" // Max timeout for the NetFUNNEL request
this // Activity for Creating a Waiting/Blocking room
);
/*
* 1. Eum Server URL (Same As Netfunnel Server URL), 2. activity(to collect device info)
*/
Netfunnel.InitEum(
"{EUM Server URL}", // EUM Server URL: Server URL for EUM
"{timeout}" // Max timeout for EUM request
this // Activity
);
Netfunnel.getInstance().InitEum(tenantAPINFURL, 2000,this) // EUM Settings
Netfunnel.getInstance().EUMCollectYN(true) // Whether to collect EUMs
}
トラフィック制御の設定
待機後のコールバック機能の実装
仮想待合室では、待合終了時の状況に応じてコールバック関数が呼び出されます。コールバック関数の種類によって、入室が成功した場合とブロックされた場合を処理し、入室がブロックされた場合と待機がキャンセルされた場合に発生するさまざまなユーザーシナリオを実装するために、待機がキャンセルされた場合のコールバック関数を実装することができます。
コールバック関数は、AgentInterface クラスで定義されます。AgentInterface クラスは、NetFUNNEL コントロールレスポンスに応答して動作が定義されるインターフェイスです。別のクラスから AgentInterface クラスを継承し、内部コールバック関数を実装することも、以下に示すように AgentInterface クラスのコンストラクタから内部コールバック関数を実装することもできます。
AgentInterface クラスのコンストラクタを使用したコールバック関数の実装
AgentInterface agentInterface = new AgentInterface() {
@Override
public void onSuccess() {
/*
* Called when the wait is over and entry is successful,
or when the request fails due to a problem with the netfunnel server itself.
*/
}
@Override
public void onCancel() {
/*
* Called when the Cancel Wait button is clicked on the waiting room.
*/
}
@Override
public void nfLog(String _message) {
/*
* The logs written by the Netfunnel library are called.
* like DLog.d(_message)
*/
}
@Override
public void onNetworkDisconnect() {
/*
* Called when a request to the NetFunnel server fails,
but the reason is that the device's network is blocked.
*/
}
@Override
public void onKeyError() {
/*
* Called when a request is made with a key that has already expired, does not exist, or is invalid.
*/
}
@Override
public void onBlock() {
/*
* Called when the project access mode is set to Disabled in the Admin Console.
*/
}
@Override
public void onIpBlock() {
/*
* Called if blocked by the macro blocking feature due to frequent requests from the admin console.
*/
}
};
エントリー成功時に呼び出されるコールバックの実装
エントリーに成功した場合の実装は2つある。
- 対象ページに入るコード
- 発行されたキーをNetFUNNELサーバーに返す処理を行う完了処理関数を呼び出す
完了処理関数
Function type | Name | Argument | Description |
Completion function | NFStop | projectKey |
The project key can be found in the NetFUNNEL console. ex) service_1 |
segmentKey |
The segment key can be found in the NetFUNNEL console when creating a segment. ex) segKey_1234 |
以下は、onSuccess()コールバック関数を実装したコード例です。
AgentInterface agentInterface = new AgentInterface() {
@Override
public void onSuccess() {
// Execute the completion function for basic control
Netfunnel.NFStop(projectKey, segmentKey);
// Perform an activity conversion
runOnUiThread(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(CurrentActivity.this, NewActivity.class);
startActivity(intent);
}
});
}
};
エントリーがブロックされたときに呼び出されるコールバックを実装する
エントリーがブロックされる場合、たいていは頻繁なマクロリクエストや不正なキーによる悪意のあるリクエストが原因です。このような場合、次のようなロジックを実装することで、訪問者のユーザーエクスペリエンスを向上させることができます。
- 現在のページに留まりたい場合:ロジックの実装は不要です。
- エントリーがブロックされていることを示す別のモーダルウィンドウを表示するロジックを実装する。
- エントリーがブロックされていることを示す特定のページにナビゲートするロジックを実装する。
- ロギングロジックの実装
エントリーがブロックされた場合や失敗した場合も、上記と同じロジックを実装することができ、エントリーが成功した場合とは異なり、別の完了処理関数を呼び出す必要はありません。
以下は、onBlock() コールバック関数を実装したコード例です。
AgentInterface agentInterface = new AgentInterface() {
@Override
public void onBlock() {
/*
1. If they want to stay on the current page: no logic implementation required
2. Implement logic to show a separate modal window indicating that entry is blocked.
3. Implement logic to navigate to a specific page that indicates entry is blocked.
4. Implement logging logic
*/
}
};
待ちがキャンセルされたときに呼び出されるコールバックを実装する
バーチャル待合室で待っている間にエンドユーザーがキャンセルボタンを押した場合、キャンセル待ちコールバックを呼び出すことができます。この場合、以下のようなロジックを実装することで、訪問者のユーザーエクスペリエンスを向上させることができます。
- 現在のページに留まりたい場合は、ロジックを実装する必要はありません。
- 待ちがキャンセルされたことを示す別のモーダルウィンドウを表示するロジックを実装する。
- 待ちがキャンセルされたことを示す特定のページに誘導するロジックを実装する。
- ロギングロジックの実装
キャンセル待ちの場合、上記のロジックを実装することができ、エントリー成功の場合とは異なり、別途完了処理関数を呼び出す必要はありません。
以下は、キャンセル待ちボタンが押されたときに呼び出されるonCancelコールバック関数を実装したコード例です。
AgentInterface agentInterface = new AgentInterface() {
@Override
public void onCancel() {
/*
1. No logic needs to be implemented if they want to stay on the current page.
2. Implement logic to show a separate modal window indicating that the wait has been canceled.
3. Implement logic to take you to a specific page that shows that the wait has been canceled.
4. Implement logging logic
*/
}
};
Tip. キャンセル待ちボタンが押されたときに、別のモーダルウィンドウで待ちを再開する方法
public class NetfunnelTestJava {
private static AgentInterface agentInterface;
public static void NetfunnelSample(MainActivity activity, String projectKey, String segmentKey, int type) {
agentInterface = new AgentInterface() {
// Example code to request re-entry to the dialog or exit the app when calling onCancel.
@Override
public void onCancel() {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Notice");
builder.setMessage("Do you want to exit the app or try to re-enter?");
builder.setPositiveButton("Exit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
activity.finish();
}
});
builder.setNegativeButton("Attempt to re-enter", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Netfunnel.getInstance().NFStart(projectKey, segmentKey, agentInterface);
}
});
builder.show();
}
@Override
public void onCancel() {
/*
* Called when the Cancel Wait button is clicked on the waiting screen.
*/
}
@Override
public void nfLog(String _message) {
/*
* The logs written by the Netfunnel library are called.
* like DLog.d(_message)
*/
}
@Override
public void onNetworkDisconnect() {
/*
* Called when a request to the netfunnel server fails,
but the reason is that the device's network is blocked.
*/
}
@Override
public void onKeyError() {
/*
* Called when a request is made with a key that has already expired, does not exist, or is invalid.
*/
}
@Override
public void onBlock() {
/*
* Called when the project access mode is set to Disabled in the Admin Console.
*/
}
@Override
public void onIpBlock() {
/*
* Called if blocked by the macro blocking feature due to frequent requests from the admin console.
*/
}
};
}
}
待機開始
トラフィックを待機させたいページ(ビューまたはアクティビティ)の特定の部分に仮想待合室を適用したい場合、Wait-Start関数を使用して仮想待合室を適用することができます。
訪問者をNetFUNNEL仮想待合室で待機させたいコード部分でNFStart()関数を呼び出してください。
Netfunnel.NFStart("{project Key}", "{segment Key}", agentInterface);
Tip. バーチャル待合室の露出を確実にする方法
仮想待合室が常に露出しているようにするには、管理コンソールで流入制限を0に設定する必要があります。0は「トラフィックを一切流入させない」ことを意味します。流入制限を0に設定したプロジェクトキーとセグメントキーを確認し、そのキー値でWait-Start関数を呼び出すと、すぐに仮想待合室が公開されるはずです。
コメント
0件のコメント
記事コメントは受け付けていません。