コンテンツにスキップ

はじめに

GitHub

インストール

インストール

AI-Assisted セットアップを使用してプラグインをインストールできます。次のコマンドを使用して、AI ツールに Capgo スキルを追加します。

ターミナル
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

次のプロンプトを使用してください。

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-network-diagnostics` plugin in my project.

Manual セットアップを使用する場合は、以下のコマンドを実行して、プラットフォーム固有の指示に従ってください。

ターミナル
npm install @capgo/capacitor-network-diagnostics
npx cap sync

インポート

インポート
import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';

制限されたネットワーク上のユーザーに対してサポートレポートを収集する最速の方法は、完全な診断レポートを実行することです。

制限されたネットワーク上のユーザーに対してサポートレポートを収集する最速の方法は、完全な診断レポートを実行することです。

runDiagnostics 制限されたネットワーク上のユーザーに対してサポートレポートを収集する最速の方法は、完全な診断レポートを実行することです。

const report = await NetworkDiagnostics.runDiagnostics({
urls: [{ url: 'https://api.example.com/health', method: 'HEAD' }],
ports: [{ host: 'api.example.com', port: 443 }],
websockets: [{ url: 'wss://ws.example.com/socket' }],
download: {
url: 'https://speed.example.com/5mb.bin',
maxBytes: 5 * 1024 * 1024,
},
packetLoss: {
mode: 'tcp',
host: 'api.example.com',
port: 443,
count: 10,
},
});
console.log(report.status.connectionType);
console.log(report.issues);

現在のネットワーク状態を確認

現在のネットワーク状態を確認
const status = await NetworkDiagnostics.getNetworkStatus();
console.log(status.connected);
console.log(status.connectionType);
console.log(status.internetReachable);
console.log(status.captivePortal);

プラットフォームによっては、正しいフラグが異なります。Androidは、有効なインターネットとキャプティブポータル状態を報告できます。iOSは、パス状態、インターフェイスタイプ、コストのかかるパス、および制約されたパスを通じて Network.framework.

API の到達可能性をテスト

API の到達可能性をテスト
const result = await NetworkDiagnostics.testUrl({
url: 'https://api.example.com/health',
method: 'HEAD',
timeoutMs: 5000,
followRedirects: true,
});
if (!result.reachable) {
console.warn(result.errorCode, result.errorMessage);
}

実際のヘルスエンドポイントからバックエンドを使用します。ブラウザのみのチェックは、WebView、CORS、プロキシ、またはキャプティブポータル動作によって隠れます。 しかし、このプラグインはネイティブネットワーキングを使用します。

const port = await NetworkDiagnostics.testPort({
host: 'api.example.com',
port: 443,
timeoutMs: 3000,
});
console.log(port.open, port.durationMs);

Wi-Fiアクセスポイントが標準以外のポート、MQTT、カスタムゲートウェイ、またはプライベートバックエンドをブロックしながら通常のブラウジングを許可している場合に便利です。

const socket = await NetworkDiagnostics.testWebSocket({
url: 'wss://ws.example.com/socket',
timeoutMs: 5000,
});
console.log(socket.open, socket.statusCode);

プロキシまたはキャプティブポータルがHTTPSページを許可している場合に、WebSocketアップグレード要求をブロックする場合に使用してください。

const speed = await NetworkDiagnostics.testDownloadSpeed({
url: 'https://speed.example.com/5mb.bin',
maxBytes: 5 * 1024 * 1024,
timeoutMs: 30000,
});
console.log(speed.mbps);

独自の静的ファイルエンドポイントを使用して、結果はアプリが必要とするネットワークパスを反映します。

const loss = await NetworkDiagnostics.testPacketLoss({
mode: 'tcp',
host: 'api.example.com',
port: 443,
count: 10,
timeoutMs: 3000,
intervalMs: 250,
});
console.log(loss.lossPercent);

「Raw ICMP ping」はApp StoreおよびPlay Storeアプリでは移植性が低く、実行可能なファイルでは実行できません。この方法では、TCPまたはHTTPプローブを繰り返して、実行可能ファイルレベルのパケット損失を測定します。

Web実装は開発用に設計されています。ブラウザでは、RAW TCPソケットを開くことはできず、URLチェックはCORSによって制限される可能性があります。iOSまたはAndroidビルドを使用して、実際のサポート診断にアクセスしてください。