You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KMM中使用actual/expect机制实现网络可用性检查

KMM跨平台网络可用性检测(iOS层实现)

完整iOS层实现代码

import platform.Network.NWPathMonitor
import platform.Network.NWPathStatus
import platform.Network.nwPathMonitorCreate
import platform.darwin.dispatch_main_queue

actual class NetworkUtils actual constructor() {
    private val pathMonitor = nwPathMonitorCreate()
    
    actual fun isNetworkAvailable(): Boolean {
        // 获取当前网络状态(同步方式)
        val currentPath = pathMonitor.currentPath
        val isConnected = currentPath.status == NWPathStatus.NWPathStatusSatisfied
        
        // 若需要持续监听网络变化,可保留以下逻辑并持有pathMonitor实例
        /*
        pathMonitor.setPathUpdateHandler { path ->
            val newStatus = path.status == NWPathStatus.NWPathStatusSatisfied
            // 这里可回调通知网络状态变化
        }
        pathMonitor.start(queue = dispatch_main_queue())
        */
        
        return isConnected
    }
}

实现说明

  • 采用苹果官方推荐的NWPathMonitor(iOS 12+支持)替代旧版Reachability框架,适配现代iOS系统
  • NWPathStatusSatisfied枚举值代表当前存在可用网络连接
  • 如果仅需单次检测网络状态,直接通过currentPath获取同步结果即可;若需要监听网络状态变化,需将pathMonitor作为类成员持有,在合适时机启动/停止监测,避免重复创建实例浪费资源

完整跨平台代码参考

COMMON层

expect class NetworkUtils() {
    fun isNetworkAvailable(): Boolean
}

ANDROID层

import android.content.Context
import android.net.ConnectivityManager
import android.app.Application

actual class NetworkUtils actual constructor(private val application: Application) {
    actual fun isNetworkAvailable(): Boolean {
        val connectivityManager =
            application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val network = connectivityManager.activeNetwork
        val networkCapabilities = connectivityManager.getNetworkCapabilities(network)
        return networkCapabilities != null && networkCapabilities.hasCapability(android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET)
    }
}

(注:Android层优化为使用NetworkCapabilities替代已废弃的activeNetworkInfo,适配Android 10+系统)

内容的提问来源于stack exchange,提问作者kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:22:43