tencent cloud

Cloud Log Service

Androidネットワークプローブプラグイン使用手順

다운로드
포커스 모드
폰트 크기
마지막 업데이트 시간: 2026-10-12 15:13:57
AI 번역

概要

Tencent CLSはネットワークプローブSDKプラグイン(Android版)を提供します。統合後、HTTP Ping、DNS、Ping、MTR、TCP Pingなどのネットワーク診断プローブを自発的に開始でき、プローブデータは自動的にCLSへ報告されます。これにより、エンドユーザーのネットワーク品質状況をリアルタイムに把握し、ネットワーク問題を迅速に特定できます。

前提条件

TencentCloud APIキー情報であるSecretIdとSecretKeyを作成して取得します。キー情報の取得についてはAPIキー管理にアクセスしてください。
CLSコンソールでモバイルアクセス用Tokenを取得済みです。詳細はキーの取得をご参照ください。

統合手順

ステップ1:依存関係の導入

build.gradleにコアSDKとネットワークプローブプラグインを同時に導入します:
implementation(group: 'com.tencentcloudapi.cls', name: 'tencentcloud-cls-sdk-android', version: '3.0.1')
implementation(group: 'com.tencentcloudapi.cls', name: 'cls-network-diagnosis-reporter-android', version: '3.0.1')
依存パッケージの説明:
依存パッケージ
説明
tencentcloud-cls-sdk-android
コアSDKは、検出結果をCLSに報告する役割を担います。
cls-network-diagnosis-reporter-android
ネットワーク検出プラグインです。HTTP Ping、DNS、Ping、MTR、TCP Pingなどの機能を提供します。

ステップ2:権限設定

AndroidManifest.xmlに追加します:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

ステップ3:ネットワークセキュリティ設定(Android 9.0+)

Android 9.0(API 28)以降ではデフォルトで平文HTTPトラフィックが禁止されているため、ネットワークセキュリティポリシーを設定する必要があります。
1. res/xml/ディレクトリにnetwork_security_config.xmlを作成します。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<!-- 必要に応じて実際のCLSドメインに置き換えてください -->
<domain includeSubdomains="true">ap-guangzhou.cls.tencentcs.com</domain>
</domain-config>
</network-security-config>
2. AndroidManifest.xmlの<application>タグ内で参照します。
完全なAndroidManifest.xmlの例:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tencentcloudapi.cls">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

ステップ4:初期化とプラグイン接続

Application.onCreateまたはActivity.onCreateで初期化を完了します。
private void initCls(Context context) {
// 1. コアSDKを初期化します。
ClsConfigOptions clsConfigOptions = new ClsConfigOptions(
"https://ap-guangzhou-open.cls.tencentcs.com",
「[日志主题 ID]」、
new Credential("[secret_id]", "[secret_key]"));
clsConfigOptions.enableLog(true);
clsConfigOptions.addTag("cls_android", "3.0.1");
ClsDataAPI.startWithConfigOptions(context, clsConfigOptions);

// 2. ネットワークプローブプラグインを作成して設定します。
INetworkDiagnosisPlugin clsNetDiagnosisPlugin = new NetworkDiagnosisPlugin();
clsNetDiagnosisPlugin.addCustomField("env", "production"); // 任意:カスタムフィールドを追加します。
clsNetDiagnosisPlugin.setAppCredentialToken("[移动端接入 Token]"); // CLSコンソールから取得します。

// 3. プラグインを登録して起動します。
ClsDataAPI.sharedInstance(context)
.addPlugin(clsNetDiagnosisPlugin)
.startPlugin(context);
}
INetworkDiagnosisPluginインターフェース説明:
方法
説明
addCustomField(String key, String value)
カスタムフィールドを追加し、検出結果とともに報告します。
setAppCredentialToken(String token)
モバイル端末接続用のトークンを設定します。

ステップ5:難読化設定

プロジェクトでProGuardまたはR8難読化が有効になっている場合は、proguard-rules.proに追加します。
-keep class net.jpountz.lz4.** { *; }

ネットワークプローブAPI

すべてのプローブメソッドはCLSNetworkDiagnosis.getInstance()を通じて呼び出され、プローブ結果は自動的にCLSに報告されます。

HTTP Ping

対象URLのHTTP接続性、応答時間、証明書などの情報を検出します。
public void clsHttpPing(Context context) throws NoSuchAlgorithmException {
INetworkDiagnosis.HttpRequest request = new INetworkDiagnosis.HttpRequest();
request.domain = "https://ap-guangzhou.cls.tencentcs.com"; // 必須:ターゲットURL。
request.ip = "1.2.3.4"; // 任意:ターゲットIPを指定します(DNSをバイパス)。
request.headerOnly = true; // 任意:レスポンスヘッダーのみを取得します(デフォルトはfalse)。
request.downloadBytesLimit = 1024; // 任意:ダウンロードバイト数を制限します(デフォルトは64KB)。
request.timeout = 30 * 1000; // 任意:タイムアウト時間、単位はミリ秒(デフォルトは30000ms)。
request.maxTimes = 3; // 任意:プローブ回数(デフォルトは10)。
request.multiplePortsDetect = false; // 任意:マルチポートプローブを実行するかどうか(デフォルトはtrue)。
// 任意:SSL証明書検証設定。
request.credential = new INetworkDiagnosis.HttpCredential(getSSLContext(context), null);
// 任意:カスタム拡張フィールド。
request.extension = new HashMap<String, String>() {{
put("custom_field", "httpPing");
}};
// コールバックなし。
CLSNetworkDiagnosis.getInstance().http(request);
// コールバック付き。
CLSNetworkDiagnosis.getInstance().http(request, new INetworkDiagnosis.Callback() {
@Override
public void onComplete(INetworkDiagnosis.Response response) {
CLSLog.i("HTTP", response.content);
}
});
}
HttpRequestパラメータの説明:
HttpRequestはPingRequestを継承し、以下のすべてのフィールドを含みます:
フィールド
タイプ
デフォルト値
必須/任意
説明
domain
String
-
必須
目標 URL。プロトコルヘッダー(http:// または https://)を含める必要があります。
ip
String
null
任意
対象IPを指定します。設定後はDNS解決をスキップして直接接続します。
headerOnly
boolean
false
任意
レスポンスヘッダーのみを要求するかどうか
downloadBytesLimit
int
65536(64KB)
任意
ダウンロードバイト数を制限します。0は無制限を表します。
credential
HttpCredential
null
任意
SSL証明書検証設定。SSLContextおよびX509TrustManagerを含みます。
timeout
int
30000(30秒)
任意
リクエストタイムアウト時間。単位はミリ秒です。
maxTimes
int
10
任意
検出回数
size
int(byte)
64
任意
検出パケットサイズ
multiplePortsDetect
boolean
true
任意
マルチポート検出を有効にするかどうか
extension
Map<String, String>
null
任意
カスタム拡張フィールド。検出結果とともに報告されます。

DNS解決

対象ドメインのDNS解決時間と結果を検出します。
public void clsDNSPing() {
INetworkDiagnosis.DnsRequest request = new INetworkDiagnosis.DnsRequest();
request.domain = "ap-guangzhou-open.cls.tencentcs.com"; // 必須:ターゲットドメイン。
request.type = INetworkDiagnosis.DNS_TYPE_IPv4; // 任意:DNSタイプ、「A」(IPv4)または「AAAA」(IPv6)、デフォルトは「A」。
request.nameServer = "8.8.8.8"; // 任意:DNSサーバーアドレスを指定します。
request.timeout = 2000; // 任意:タイムアウト時間、単位はミリ秒(デフォルトは2000ms)。
request.extension = new HashMap<String, String>() {{
put("custom_field", "dns");
}};
// コールバックなし。
CLSNetworkDiagnosis.getInstance().dns(request);
// コールバック付き。
CLSNetworkDiagnosis.getInstance().dns(request, new INetworkDiagnosis.Callback() {
@Override
public void onComplete(INetworkDiagnosis.Response response) {
CLSLog.i("DNS", response.content);
}
});
}
DnsRequestパラメータの説明:
DnsRequestはPingRequestを継承し、以下のすべてのフィールドを含みます:
フィールド
タイプ
デフォルト値
必須/任意
説明
domain
String
-
必須
ターゲットドメイン
type
String
"A"
任意
DNSクエリタイプ:「A」(IPv4)または「AAAA」(IPv6)
nameServer
String
null
任意
DNSサーバーアドレスを指定します。空の場合はシステムデフォルトのDNSを使用します。
timeout
int
2000
任意
クエリタイムアウト時間。単位はミリ秒です。
size
int(byte)
64
任意
検出パケットサイズ
multiplePortsDetect
boolean
true
任意
マルチポート検出を有効にするかどうか
extension
Map<String, String>
null
任意
カスタム拡張フィールド

Ping(ICMP)

対象ドメインのICMP接続性と遅延を検出します。
public void clsPing() {
INetworkDiagnosis.PingRequest request = new INetworkDiagnosis.PingRequest();
request.domain = "ap-guangzhou-open.cls.tencentcs.com"; // 必須:ターゲットドメイン。
request.size = 64; // 任意:プローブパケットサイズ、単位はbyte(デフォルトは64)。
request.maxTimes = 10; // 任意:プローブ回数(デフォルトは10)。
request.timeout = 2000; // 任意:タイムアウト時間、単位はミリ秒(デフォルトは2000ms)。
request.multiplePortsDetect = true; // 任意:マルチポートプローブを実行するかどうか(デフォルトはtrue)。
request.extension = new HashMap<String, String>() {{
put("custom_field", "ping");
}};
// コールバックなし。
CLSNetworkDiagnosis.getInstance().ping(request);
// コールバック付き。
CLSNetworkDiagnosis.getInstance().ping(request, new INetworkDiagnosis.Callback() {
@Override
public void onComplete(INetworkDiagnosis.Response response) {
CLSLog.i("Ping", response.content);
}
});
}
PingRequestパラメータの説明:
フィールド
タイプ
デフォルト値
必須/任意
説明
domain
String
-
必須
ターゲットドメインまたはIP。
size
int(byte)
64
任意
ICMP検出パケットサイズ
maxTimes
int
10
任意
検出回数
timeout
int
2000
任意
単回検出タイムアウト時間。単位はミリ秒です。
multiplePortsDetect
boolean
true
任意
マルチポート検出を有効にするかどうか
extension
Map<String, String>
null
任意
カスタム拡張フィールド

MTR(ルートトレース)

対象ドメインへの完全なネットワークパスを追跡し、ICMPおよびUDPプロトコルをサポートします。
public void clsMTR() {
INetworkDiagnosis.MtrRequest request = new INetworkDiagnosis.MtrRequest();
request.domain = "ap-guangzhou-open.cls.tencentcs.com"; // 必須:ターゲットドメイン。
request.protocol = INetworkDiagnosis.MtrRequest.Protocol.ICMP; // 任意:プローブプロトコル(デフォルトはALL)。
request.maxTTL = 30; // 任意:最大ホップ数(デフォルトは30)。
request.maxPaths = 1; // 任意:最大パス数(デフォルトは1)。
request.maxTimes = 10; // 任意:ホップごとのプローブ回数(デフォルトは10)。
request.timeout = 2000; // 任意:タイムアウト時間、単位はミリ秒(デフォルトは2000ms)。
request.multiplePortsDetect = true; // 任意:マルチポートプローブを実行するかどうか(デフォルトはtrue)。
request.extension = new HashMap<String, String>() {{
put("custom_field", "mtr");
}};
// コールバックなし。
CLSNetworkDiagnosis.getInstance().mtr(request);
// コールバックあり。
CLSNetworkDiagnosis.getInstance().mtr(request, new INetworkDiagnosis.Callback() {
@Override
public void onComplete(INetworkDiagnosis.Response response) {
CLSLog.i("MTR", response.content);
}
});
}
MtrRequestパラメータの説明:
MtrRequestはPingRequestを継承し、以下のすべてのフィールドを含みます:
フィールド
タイプ
デフォルト値
必須/任意
説明
domain
String
-
必須
ターゲットドメインまたはIP。
protocol
Protocol
Protocol.ALL
任意
検出プロトコル:ALL(すべて)、ICMP、UDP
maxTTL
int
30
任意
最大ルートホップ数(TTL)
maxPaths
int
1
任意
最大検出パス数
maxTimes
int
10
任意
ホップごとの検出回数
timeout
int
2000
任意
単回検出タイムアウト時間。単位はミリ秒です。
size
int(byte)
64
任意
検出パケットサイズ
multiplePortsDetect
boolean
true
任意
マルチポート検出を有効にするかどうか
extension
Map<String, String>
null
任意
カスタム拡張フィールド

TCP Ping

対象ドメインの指定ポートにおけるTCP接続性と遅延を検出します。
public void clsTcpPing() {
INetworkDiagnosis.TcpPingRequest request = new INetworkDiagnosis.TcpPingRequest();
request.domain = "ap-guangzhou-open.cls.tencentcs.com"; // 必須:ターゲットドメイン。
request.port = 80; // 必須:ターゲットポート。
request.payload = "hello"; // 任意:送信するプローブデータ。
request.maxTimes = 10; // 任意:プローブ回数(デフォルトは10)。
request.timeout = 2000; // 任意:タイムアウト時間、単位はミリ秒(デフォルトは2000ms)。
request.size = 64; // 任意:プローブパケットサイズ、単位はbyte(デフォルトは64)。
request.multiplePortsDetect = true; // 任意:マルチポート検出を行うかどうか(デフォルトはtrue)。
request.extension = new HashMap<String, String>() {{
put("custom_field", "tcpPing");
}};
// コールバックなし。
CLSNetworkDiagnosis.getInstance().tcpPing(request);
// コールバック付き。
CLSNetworkDiagnosis.getInstance().tcpPing(request, new INetworkDiagnosis.Callback() {
@Override
public void onComplete(INetworkDiagnosis.Response response) {
CLSLog.i("TcpPing", response.content);
}
});
}
TcpPingRequestパラメータの説明:
TcpPingRequestはPingRequestを継承し、以下のすべてのフィールドを含みます:
フィールド
タイプ
デフォルト値
必須/任意
説明
domain
String
-
必須
ターゲットドメインまたはIP。
port
int
-1
必須
ターゲットポート番号。
payload
String
null
任意
プローブ時に送信されるデータ内容。
maxTimes
int
10
任意
検出回数
timeout
int
2000
任意
単回検出タイムアウト時間。単位はミリ秒です。
size
int(byte)
64
任意
検出パケットサイズ
multiplePortsDetect
boolean
true
任意
マルチポート検出を有効にするかどうか
extension
Map<String, String>
null
任意
カスタム拡張フィールド


도움말 및 지원

문제 해결에 도움이 되었나요?

피드백