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