文档中心>日志服务>操作指南>应用中心>网络探测分析>网络探测各插件所需权限说明

网络探测各插件所需权限说明

最近更新时间:2026-04-29 15:54:32

我的收藏
本文档详细说明了网络探测器在 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
普通权限
获取 WiFi 连接信息
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 权限。以下按探测场景分为两套配置。

公网探测版(仅探测互联网域名/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>

局域网探测版(扫描/访问同网段设备)

权限/能力清单

来源
必需性
说明
NSLocalNetworkUsageDescription
Info.plist
必需
iOS 14+ 本地网络访问用途说明,触发系统弹窗
NSBonjourServices
Info.plist
仅 Bonjour 发现时必需
声明要使用的 Bonjour 服务类型
NSAppTransportSecurity
Info.plist
视情况
若走 HTTP 或弱 TLS,仍需 ATS 例外

Info.plist 示例

<key>NSLocalNetworkUsageDescription</key>
<string>用于发现和探测局域网设备的网络连通性与时延。</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
是(局域网)
局域网探测
网络探测插件
Info.plist
NSBonjourServices
否(Bonjour)
局域网服务发现
网络探测插件
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
默认联网能力
⚠️ 管理员权限
局域网探测
ACCESS_NETWORK_STATE
NSLocalNetworkUsageDescription
✅ 普通用户(需防火墙放行)
网络状态获取
ACCESS_NETWORK_STATE / ACCESS_WIFI_STATE
无需额外权限
无需额外权限
数据上报(CLS)
INTERNET / ACCESS_NETWORK_STATE
默认联网能力
✅ 普通用户