网络
免费插件
此插件免费开源,采用 MIT 许可证。
概述
Network API 提供跨平台的网络连接状态检测,包括连接类型和计量状态。
安装
shell
composer require nativephp/mobile-network使用
PHP (Livewire/Blade)
php
use Native\Mobile\Facades\Network;
// 获取当前网络状态
$status = Network::status();
if ($status->connected) {
echo "已连接:" . $status->type;
if ($status->isExpensive) {
echo " (计量连接)";
}
} else {
echo "无网络连接";
}JavaScript (Vue/React/Inertia)
js
import { network } from '#nativephp';
// 获取当前网络状态
const status = await network.status();
if (status.connected) {
console.log(`已连接:${status.type}`);
if (status.isExpensive) {
console.log('警告:计量连接');
}
} else {
console.log('无网络连接');
}响应对象
status() 方法返回包含以下属性的对象:
| 属性 | 类型 | 描述 |
|---|---|---|
connected | boolean | 设备是否有网络连接 |
type | string | 连接类型:wifi、cellular、ethernet 或 unknown |
isExpensive | boolean | 连接是否计量(如蜂窝数据) |
isConstrained | boolean | 是否启用低数据模式(仅 iOS) |
示例
条件数据同步
php
use Native\Mobile\Facades\Network;
public function syncData()
{
$status = Network::status();
if (!$status->connected) {
Dialog::toast('无网络连接');
return;
}
if ($status->isExpensive) {
// 蜂窝网络 - 仅同步必要数据
$this->syncEssentialData();
} else {
// WiFi - 完整同步
$this->syncAllData();
}
}JavaScript 连接检查
js
import { network, dialog } from '#nativephp';
async function downloadLargeFile() {
const status = await network.status();
if (!status.connected) {
dialog.toast('无网络连接');
return;
}
if (status.isExpensive && status.type === 'cellular') {
// 警告用户蜂窝网络下载大文件
dialog.alert(
'大文件下载',
'此文件为 50MB。是否在蜂窝数据下下载?',
['取消', '下载']
);
return;
}
// 继续下载
startDownload();
}平台行为
Android
- 使用
ConnectivityManager和NetworkCapabilities isConstrained始终为false(不适用)- 需要
ACCESS_NETWORK_STATE权限(自动添加)
iOS
- 使用 Network 框架的
NWPathMonitor isConstrained反映低数据模式设置- 无需特殊权限