接入原生壳网络状态能力

新增 network.status 与 network.statusChanged HostBridge 能力

Expo 壳通过 expo-network 查询并订阅真实网络状态

Tauri 壳通过主站可达性查询和 WebView online/offline 事件同步网络状态

更新壳能力检查、测试和架构文档
This commit is contained in:
2026-06-18 02:35:48 +08:00
parent 346368f0e7
commit 586e46fa63
19 changed files with 551 additions and 5 deletions
@@ -0,0 +1,40 @@
import * as Network from 'expo-network';
import {
type NetworkStatusResult,
normalizeHostBridgeConnectionType,
} from '../../../packages/shared/src/contracts/hostBridge';
export function normalizeMobileNetworkStatus(
state: Network.NetworkState,
): NetworkStatusResult {
const nativeType = state.type;
const connectionType = normalizeHostBridgeConnectionType(nativeType);
return {
isConnected:
typeof state.isConnected === 'boolean'
? state.isConnected
: connectionType !== 'none' && connectionType !== 'unknown',
isInternetReachable:
typeof state.isInternetReachable === 'boolean'
? state.isInternetReachable
: null,
connectionType,
...(nativeType ? { nativeType } : {}),
};
}
export async function getMobileNetworkStatus() {
return normalizeMobileNetworkStatus(await Network.getNetworkStateAsync());
}
export function subscribeMobileNetworkStatus(
listener: (status: NetworkStatusResult) => void,
) {
const subscription = Network.addNetworkStateListener((state) => {
listener(normalizeMobileNetworkStatus(state));
});
return () => subscription.remove();
}