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などの機能を提供します。 |
<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" />
<?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>
<application>タグ内で参照します。<?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" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:networkSecurityConfig="@xml/network_security_config"><activityandroid: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>
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);}
方法 | 説明 |
addCustomField(String key, String value) | カスタムフィールドを追加し、検出結果とともに報告します。 |
setAppCredentialToken(String token) | モバイル端末接続用のトークンを設定します。 |
-keep class net.jpountz.lz4.** { *; }
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() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("HTTP", response.content);}});}
フィールド | タイプ | デフォルト値 | 必須/任意 | 説明 |
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 | 任意 | カスタム拡張フィールド。検出結果とともに報告されます。 |
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() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("DNS", response.content);}});}
フィールド | タイプ | デフォルト値 | 必須/任意 | 説明 |
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 | 任意 | カスタム拡張フィールド |
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() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("Ping", response.content);}});}
フィールド | タイプ | デフォルト値 | 必須/任意 | 説明 |
domain | String | - | 必須 | ターゲットドメインまたはIP。 |
size | int(byte) | 64 | 任意 | ICMP検出パケットサイズ |
maxTimes | int | 10 | 任意 | 検出回数 |
timeout | int | 2000 | 任意 | 単回検出タイムアウト時間。単位はミリ秒です。 |
multiplePortsDetect | boolean | true | 任意 | マルチポート検出を有効にするかどうか |
extension | Map<String, String> | null | 任意 | カスタム拡張フィールド |
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() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("MTR", response.content);}});}
フィールド | タイプ | デフォルト値 | 必須/任意 | 説明 |
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 | 任意 | カスタム拡張フィールド |
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() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("TcpPing", response.content);}});}
フィールド | タイプ | デフォルト値 | 必須/任意 | 説明 |
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 | 任意 | カスタム拡張フィールド |
피드백