用于 KMM 中互联网检查的 NetworkUtil

kum*_*mar 7 kotlin-multiplatform

如何检查 KMM 中的互联网可用性(实际/预期)

安卓

actual class NetworkUtils actual constructor() {
    actual fun isNetworkAvailable(): Boolean {
        val connectivityManager =
            application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkInfo = connectivityManager.activeNetworkInfo
        return networkInfo != null && networkInfo.isConnected
    }
}
Run Code Online (Sandbox Code Playgroud)

常见的

expect class NetworkUtils() {
    fun isNetworkAvailable(): Boolean
}
Run Code Online (Sandbox Code Playgroud)

IOS


actual class NetworkUtils {
    actual fun isNetworkAvailable(): Boolean {
      //todo ?
        }
Run Code Online (Sandbox Code Playgroud)

}

kum*_*mar 0

在IOS中

actual fun isNetworkAvailable(): Boolean {
        return runBlocking { isConnected() }
    }

    private suspend fun isConnected(): Boolean {
        return suspendCoroutine { continuation ->
            val url = NSURL(string = "https://www.google.com")
            val request = NSURLRequest.requestWithURL(url)

            val task = NSURLSession.sharedSession.dataTaskWithRequest(
                request = request,
                completionHandler = { _, _, error ->
                    val connected = error == null
                    continuation.resume(connected)
                }
            )

            task.resume()
        }
    }
Run Code Online (Sandbox Code Playgroud)