在 WebView 中获取当前网络状态(Wi-Fi 3G 4G)

原生的 WebView,无论是 iOS 或是 Android 都没有直接提供网络信息的 API,于是,我们需要使用 LEGO-SDK 辅助获取。

原生应用准备工作

iOS

使用 CocoaPods,在 Podfile 中添加以下依赖, 再执行 pod update 即可。

pod 'LEGO-SDK/Core'
pod 'LEGO-SDK/AutoInject'
pod 'LEGO-SDK/API/Native/Device'

Android

使用 Gradle,在 gradle 文件中添加以下依赖, Sync 即可。

compile 'com.github.LEGO-SDK.LEGO-SDK-Android:core:0.3.0'
compile 'com.github.LEGO-SDK.LEGO-SDK-Android:mod_native_device:0.3.0'

你还需要在 build.gradle 文件中添加 JitPack 仓库

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
} 

在 WebView 加载网页前执行下面的代码

LGORuntime.attach(webView);

Web 调用

在原生应用集成对应 API 后,Web 应用就拥有 Native API 能力了,使用以下的方式获得网络状态。

window.JSBridge && eval(window.JSBridge.bridgeScript());
JSMessage.newMessage("Native.Device").call(function(meta, result) {
    if (meta.error){ return console.error(error); }
    if (result.network.usingWIFI) {
        // 正在使用 Wi-Fi 网络
    }
    else if (result.network.cellularType == 4) {
        // 正在使用 4G 网络
    }
    else if (result.network.cellularType == 3) {
        // 正在使用 3G 网络
    }
    else if (result.network.cellularType == 2) {
        // 正在使用 2G 网络
    }
    else if (result.network.cellularType == 0) {
        // 无网络
    }
})

更多的 LEGO-SDK 集成、使用以及文档信息,请进入 https://lego-sdk.github.io/index.html。

你可能感兴趣的:(在 WebView 中获取当前网络状态(Wi-Fi 3G 4G))