美文网首页HTML 5 之 疑难杂症 篇web前后端Web开发
在 WebView 中获取当前网络状态(Wi-Fi 3G 4G)

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

作者: PonyCui | 来源:发表于2016-12-30 09:52 被阅读287次

    原生的 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)

        本文链接:https://www.haomeiwen.com/subject/agqmvttx.html