tencent cloud

Cloud Log Service

ネットワーク検出の各プラグインに必要な権限の説明

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-12 15:13:57
AI翻訳
本文書では、ネットワークプローブがAndroid、iOS、Windows、Unityなどのプラットフォームで必要とする権限宣言について詳しく説明し、開発者に包括的な権限設定のリファレンスを提供します。

Android権限宣言

ネットワーク検出プラグイン自体に必要な権限

権限
説明
android.permission.ACCESS_NETWORK_STATE
ネットワーク状態情報を取得します(現在のネットワークタイプ、接続状態など)。
android.permission.READ_PHONE_STATE
携帯電話の状態情報を読み取ります(デバイス識別子、通信事業者情報など)。
android.permission.INTERNET
インターネットにアクセスします(ネットワーク検出リクエストを実行します)。
android.permission.CHANGE_NETWORK_STATE
ネットワーク接続状態を変更します。
android.permission.WRITE_SETTINGS
システム設定に書き込みます。

App層で追加宣言された権限

権限
説明
android.permission.ACCESS_WIFI_STATE
Wi-Fiネットワーク状態情報を取得します。

CLS Producer SDKに必要な権限

権限
説明
android.permission.ACCESS_NETWORK_STATE
ネットワーク状態情報を取得します(探测プラグインと重複)。

Android権限一覧表

ネットワークプローブ機能を完全に利用するには、合計6つの権限が必要です。
番号
権限
権限タイプ
説明
特殊要件
1
INTERNET
一般権限
コア権限です。ネットワーク検出(Ping、Tracerouteなど)の実行とデータ報告に使用されます。
無
2
ACCESS_NETWORK_STATE
一般権限
現在のネットワーク接続状態とタイプを取得します。
無
3
ACCESS_WIFI_STATE
一般権限
Wi-Fi接続情報を取得します。
無
4
READ_PHONE_STATE
危険な権限
デバイスと通信事業者情報を読み取ります。
Android 6.0以降では、実行時に動的な権限申請が必要です。
5
CHANGE_NETWORK_STATE
一般権限
ネットワーク接続状態を変更します。
無
6
WRITE_SETTINGS
危険な権限
システム設定に書き込みます。
Android 6.0以降では、ユーザーをシステム設定画面に誘導し、手動で権限を付与する必要があります。
AndroidManifest.xml 宣言例
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- コアネットワーク権限 -->
<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" />
<!-- デバイス情報の読み取り(危険な権限、実行時に申請が必要) -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- ネットワーク状態の変更 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<!-- システム設定の書き込み(危険な権限、ユーザーを手動で認証に導く必要があります) -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
</manifest>
注意:
READ_PHONE_STATE と WRITE_SETTINGS は危険な権限に属し、Android 6.0(API 23)以降のバージョンでは、実行時にユーザー認証を動的に申請する必要があります。

iOS権限宣言

iOSではデフォルトでアプリのネットワーク接続が許可されているため、AndroidのようにINTERNET権限を明示的に宣言する必要はありません。以下では、検出シナリオに応じて2つの構成に分けて説明します。

公衆網プローブ版(インターネットドメイン/IPのみをプローブ)

権限/機能一覧

キー
ソース
必須性
説明
NSAppTransportSecurity
Info.plist
状況に応じて
HTTP平文または非標準TLSのターゲットがある場合のみ設定します。純粋なHTTPSの場合は設定しなくても構いません。

Info.plist 例

ATS例外が必要な場合にのみ追加します。
<key>NSAppTransportSecurity</key>
<dict>
<!-- グローバルな解放は推奨されません。ドメイン名ごとのきめ細かい設定を推奨します -->
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
</dict>
</dict>
</dict>

LANプローブ版(同一セグメントのデバイスをスキャン/アクセス)

権限/機能一覧

キー
ソース
必須性
説明
NSLocalNetworkUsageDescription
Info.plist
必須
iOS 14以降のローカルネットワークアクセスの用途説明で、システムポップアップが表示されます。
NSBonjourServices
Info.plist
Bonjour検出時のみ必須です。
使用するBonjourサービスタイプを宣言します。
NSAppTransportSecurity
Info.plist
状況に応じて
HTTPまたは弱いTLSを使用する場合でも、ATS例外が必要です。

Info.plist 例

<key>NSLocalNetworkUsageDescription</key>
<string>LAN内のデバイスのネットワーク接続性と遅延を検出および測定するために使用されます。</string>

<!-- Bonjour シナリオでのみ必要です -->
<key>NSBonjourServices</key>
<array>
<string>_http._tcp</string>
<string>_https._tcp</string>
<!-- 実際のプロトコルに応じて補足 -->
</array>

オプション:Wi-Fi情報の読み取りシーン(SSID / BSSID)

もし検出ロジックがWi-Fi名などの情報に依存する場合、位置情報権限を追加する必要があります。
<key>NSLocationWhenInUseUsageDescription</key>
<string>現在のネットワーク環境情報を取得してネットワーク検出を支援するために使用されます。</string>
注意:
このシナリオでは位置情報の認証とシステム機能の制約が関係するため、実際の実装に基づいて確認する必要があります。

iOS権限一覧表

モジュール
ソースファイル
キー/能力
必須かどうか
ポップアップをトリガー
用途説明
ネットワーク検出プラグイン
Info.plist
NSLocalNetworkUsageDescription
はい(ローカルネットワーク)
はい
LAN検出
ネットワーク検出プラグイン
Info.plist
NSBonjourServices
いいえ(Bonjour)
いいえ
LANサービス検出
ネットワーク検出プラグイン
Info.plist
NSAppTransportSecurity
状況に応じて
いいえ
HTTP/弱TLS互換性
App層
Info.plist
NSLocationWhenInUseUsageDescription
いいえ
はい
Wi-Fi情報読み取りの補助
CLS SDK
追加の宣言はありません。
デフォルトのネットワーク接続機能
はい
いいえ
ログ報告/接続性リクエスト

Windows権限宣言

Windowsプラットフォームではマニフェスト式の権限宣言を使用せず、権限は主に実行時のユーザー権限レベルとシステム構成によって決まります。

各モジュールの権限要件

検出モジュール
権限要件
Socketタイプ
説明
Ping(ICMP)
管理者権限が必要です。
SOCK_RAW
RAW Socketの作成には管理者権限が必要です。
TCPPing
一般ユーザーで問題ありません。
SOCK_STREAM
標準TCP接続を使用します。
HTTP検出
一般ユーザーで問題ありません。
標準HTTP接続
特別な権限要件はありません。
DNS検出
一般ユーザーで問題ありません。
UDP標準接続
特別な権限要件はありません。
MTR(ICMP)
管理者権限が必要です。
SOCK_RAW
RAW Socketの作成には管理者権限が必要です。
MTR(TCP/UDP)
管理者権限が必要です。
SOCK_RAW + SIO_RCVALL
RAW IP SocketおよびSIO_RCVALL権限が必要です。
管理者権限の詳細説明
機能
権限要件
説明
RAW Socketを作成します。
管理者権限
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
RAW IP Socketを作成します。
管理者権限
socket(AF_INET, SOCK_RAW, IPPROTO_IP)
SIO_RCVALLを有効にします。
管理者権限
すべてのIPパケットを受信するために使用されます(ICMP Time Exceededを含む)。
権限不足時のエラー表示
シナリオ
エラーコード
説明
PingによるRAW Socketの作成に失敗しました。
PERMISSION_DENIED = -4
権限拒否エラーコードを返します。
MTRでSIO_RCVALLを有効にできませんでした。
error=10013(WSAEACCES)
ログには「[mtr] FAILED: SIO_RCVALL failed, error=10013」と表示されます。

その他の注意事項

注意事項
説明
ファイアウォール設定
一部のファイアウォール(特にサードパーティ製ファイアウォール)はRAW Socketをブロックする可能性があります。管理者権限があっても、手動で許可ルールを設定する必要があります。
SQLiteストレージ
データベースファイルが配置されているディレクトリに書き込み権限があることを確認する必要があります。Windows環境でのUAC権限の問題に注意してください。
DLLの配置
cls_network_detect.dll、cls_log_sdk.dll、sqlite3.dll が検索可能なパスに配置されていること、およびプログラムアーキテクチャが一致していることを確認する必要があります(x64への統一を推奨します)。

管理者権限がない場合の代替案

アプリケーションシナリオで管理者権限を取得できない場合、以下の代替案を採用できます:
代替案
説明
TCPPingを使用してPingを代替します。
TCPPingは通常のSOCK_STREAM接続を使用し、管理者権限は必要ありません。
HTTP検出を使用します。
標準HTTP接続であり、一般ユーザーでも実行できます。
DNS検出を使用します。
UDP標準接続であり、一般ユーザーでも実行できます。
MTRルート追跡を放棄します。
MTR機能はRAW Socketに強く依存しており、通常の権限では実行できません。

Unity権限宣言

Unityネットワークプローブに必要な権限は、実際に動作する対象プラットフォームに関連します。Unity自体は追加の独立した権限体系を導入しません。具体的な説明は以下の通りです:
Androidプラットフォーム:UnityプロジェクトをAndroidアプリとしてビルドする場合、権限宣言はネイティブAndroidと同様です。Android権限宣言を参照してください。
iOSプラットフォーム:UnityプロジェクトをiOSアプリとしてビルドする場合、権限宣言はネイティブiOSと同様です。iOS権限宣言を参照してください。
Windowsプラットフォーム:UnityプロジェクトをWindowsデスクトップアプリとしてビルドする場合、権限要件はネイティブWindowsと同様です。Windows権限宣言を参照してください。
まとめ:Unityネットワークプローブの権限設定は個別に宣言する必要はなく、対象実行環境に対応するプラットフォームの権限設定を直接参照してください。

付録:クロスプラットフォーム権限比較概要

プローブ機能
Android
iOS
Windows
Ping(ICMP)
INTERNET
デフォルトのネットワーク接続機能
⚠️ 管理者権限
TCPPing
INTERNET
デフォルトのネットワーク接続機能
✅ 一般ユーザー
HTTP検出
INTERNET
ATS設定(状況に応じる)
✅ 一般ユーザー
DNS検出
INTERNET
デフォルトのネットワーク接続機能
✅ 一般ユーザー
MTRルート追跡
INTERNET
デフォルトのネットワーク接続機能
⚠️ 管理者権限
LAN検出
ACCESS_NETWORK_STATE
NSLocalNetworkUsageDescription
✅ 一般ユーザー(ファイアウォールの解放が必要)
ネットワーク状態取得
ACCESS_NETWORK_STATE / ACCESS_WIFI_STATE
追加の権限は不要です。
追加の権限は不要です。
データ報告(CLS)
INTERNET / ACCESS_NETWORK_STATE
デフォルトのネットワーク接続機能
✅ 一般ユーザー


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック