Django中如何判断用户是否连接WiFi以控制视频上传权限
仅允许WiFi下的视频上传实现方案
核心需求:仅当设备连接WiFi时允许视频上传,蜂窝数据网络即使连通也禁止上传,避免蜂窝数据上传性能差引发的负载问题。
iOS 实现
使用苹果官方Network框架(iOS 12+)精准判断当前网络类型:
import Network func isConnectedToWiFi() -> Bool { let monitor = NWPathMonitor() let queue = DispatchQueue(label: "WiFiMonitor") var isWiFi = false monitor.pathUpdateHandler = { path in if path.status == .satisfied { isWiFi = path.usesInterfaceType(.wifi) } else { isWiFi = false } monitor.cancel() } monitor.start(queue: queue) queue.sync {} return isWiFi } // 使用示例 if isConnectedToWiFi() { // 执行视频上传逻辑 } else { // 提示用户切换至WiFi网络后再上传 }
注意事项:
- 无需额外权限,
Network框架会自动处理网络权限请求 - 若需实时监听网络状态变化,可保留
NWPathMonitor实例持续接收回调
Android 实现
通过ConnectivityManager获取当前网络传输类型,精准判断是否为WiFi:
import android.content.Context import android.net.ConnectivityManager import android.net.NetworkCapabilities fun isConnectedToWiFi(context: Context): Boolean { val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val network = connectivityManager.activeNetwork ?: return false val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } // 使用示例 if (isConnectedToWiFi(applicationContext)) { // 启动视频上传任务 } else { // 提示用户仅支持WiFi上传 }
注意事项:
- 需在
AndroidManifest.xml中添加权限:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - Android 10+ 后台获取网络状态需额外适配,建议在前台完成网络检查后再启动上传
内容的提问来源于stack exchange,提问作者Marcus
相关产品推荐
相关产品推荐

