更新记录
1.0.0(2022-11-03)
新版首发
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:支持 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
KJ-Network
强制切换Wifi和蜂窝网络、判断网络是否可以联网、网络状态监听(andorid)
使用
<template>
<view class="content">
<button type="primary" @click="getAllNetworks">获取所有网络类型和是否可以联网</button>
<view>WiFi是否可以联网:{{isWifiValtdated}} 蜂窝网络是否可以联网:{{isCellularValtdated}}</view>
<button type="primary" @click="switchWifi">强制切换至Wifi</button>
<view>{{switchWifiText}}</view>
<button type="primary" @click="switchCellular">强制切换至蜂窝网络</button>
<view>{{switchCellularText}}</view>
<button type="primary" @click="getDefaultNetwork">获取默认的网络类型</button>
<view>{{DefaultNetwork}}</view>
<button type="primary" @click="registerNetworkCallback">注册网络状态实时回调</button>
<button type="primary" @click="unregisterNetworkCallback">取消注册网络状态实时回调</button>
<button type="primary" @click="request">request</button>
<view>{{res}}</view>
</view>
</template>
<script>
/**
* networkInfos字段说明:{"linkUpstreamBandwidthKbps":60000,"toString":"",
* "isValtdated":true,"signalStrength":-2147483648,"transports":["CELLULAR"],
* "capabilities":["FOREGROUND","IMS","NOT_CONGESTED","NOT_METERED","NOT_ROAMING","NOT_SUSPENDED","NOT_VPN","TRUSTED","VALIDATED"],
* "linkDownstreamBandwidthKbps":145000}
*
* linkUpstreamBandwidthKbps:检索此网络的上行带宽(以Kbps为单位)。这总是只涉及估计的第一跳传输带宽。
*
* linkDownstreamBandwidthKbps:检索此网络的下游带宽(以Kbps为单位)。这总是只涉及估计的第一跳传输带宽。
*
* transports:网络传输类型 CELLULAR(蜂窝) WIFI(Wi-Fi) WIFI_AWARE(Wi-Fi感知) ETHERNET(以太网) BLUETOOTH(蓝牙)
*
* capabilities:网络能力 CAPTIVE_PORTAL(表明这个网络在上次被探测时被发现有一个固定的入口) CBS(表示这是一个能够到达运营商CBS服务器的网络,用于运营商特定的服务)
* DUN(表示这是一个能够到达运营商的DUN或tethering网关的网络) EIMS(指示此网络具有到达运营商紧急IMS服务器或其他服务的能力,用于紧急呼叫期间的网络信令)
* ENTERPRISE(表示此网络用于企业使用) FOREGROUND(表示此网络可供应用程序使用,而不是为了方便快速网络切换而在后台保持的网络)
* FOTA(表明这是一个能够到达运营商FOTA门户的网络,用于空中更新) HEAD_UNIT(表示此网络连接到汽车头部单元)
* IA(表示这是一个有能力到达运营商的初始附加服务器的网络) IMS(表示这是一个能够到达运营商IMS服务器的网络,用于网络注册和信令)
* INTERNET(表示该网络应该能够到达internet) MCX(表示该网络有能力到达运营商的关键任务服务器) MMS(表示该网络能够到达运营商的MMSC,用于发送和接收MMS消息)
* MMTEL(表示该网络具有支持MMTEL(多媒体电话业务)的能力) NOT_CONGESTED(表示该网络没有拥塞) NOT_METERED(表示该网络是不计量的)
* NOT_RESTRICTED(表示此网络可用于一般用途) NOT_ROAMING(表示此网络不漫游) NOT_SUSPENDED(指示此网络当前未挂起) NOT_VPN(表示该网络不是VPN)
* PRIORITIZE_BANDWIDTH(表示该网络应该能够为internet优先考虑带宽) PRIORITIZE_LATENCY(表示该网络应该能够优先考虑internet的延迟)
* RCS(表示这是一个能够到达运营商RCS服务器的网络,用于富通信服务) SUPL(表示这是一个能够到达运营商的SUPL服务器的网络,用于检索GPS信息)
* TRUSTED(表示用户已表示此网络的隐式信任) VALIDATED-(指示此网络上的连通性已成功验证) WIFI_P2P(表示这是一个能够到达Wi-Fi直接对等点的网络)
* XCAP(表示这是一个能够到达运营商XCAP服务器的网络,用于配置和控制)
* */
const KJNetwork = uni.requireNativePlugin('KJ-Network');
export default {
data() {
return {
isWifiValtdated: false,
isCellularValtdated: false,
DefaultNetwork: "",
switchWifiText: "",
switchCellularText: "",
res: ""
}
},
onLoad() {
},
onReady() {
this.registerNetworkCallback();
},
methods: {
getAllNetworks() {
this.isWifiValtdated = false;
this.isCellularValtdated = false;
/**
* 只有wifi和蜂窝网络“开关”开了,才会在回调列表里
* */
KJNetwork.getAllNetworks((res) => {
console.log("getAllNetworks:" + JSON.stringify(res))
var networkInfos = res.networkInfos;
var CELLULAR_number = 0;
for (var i = 0; i < networkInfos.length; i++) {
var networkInfo = networkInfos[i];
var transports = networkInfo.transports;
var capabilities = networkInfo.capabilities;
if (transports.indexOf('CELLULAR') != -1 && capabilities.indexOf("INTERNET") != -1) {
this.isCellularValtdated = true
}
if (transports.indexOf('WIFI') != -1 && capabilities.indexOf("VALIDATED") != -1) {
this.isWifiValtdated = true
}
}
this.AllNetworks = JSON.stringify(res)
});
},
switchWifi() {
/**
* 只有wifi网络“开关”开了,才能强制切换
* */
KJNetwork.switchWifi((res) => {
console.log("switchWifi:" + JSON.stringify(res))
if (res.method == "onAvailable") {
this.switchWifiText = "switchWifi是否切换成功:" + res.result;
console.log(this.switchWifiText);
}
});
},
switchCellular() {
/**
* 只有蜂窝网络“开关”开了,才能强制切换
* */
KJNetwork.switchCellular((res) => {
console.log("switchCellular:" + JSON.stringify(res))
if (res.method == "onAvailable") {
this.switchCellularText = "switchCellular是否切换成功:" + res.result;
console.log(this.switchCellularText);
}
});
},
getDefaultNetwork() {
/**
* 设置switchWifi或switchCellular成功之后,才会有回调
* */
KJNetwork.getDefaultNetwork((res) => {
console.log("getDefaultNetwork:" + JSON.stringify(res))
this.DefaultNetwork = res.networkInfo.transports;
});
},
registerNetworkCallback() {
KJNetwork.registerNetworkCallback((res) => {
console.log("registerNetworkCallback:" + JSON.stringify(res))
this.getAllNetworks();
if (res.method == "onAvailable") {
console.log("网络已链接");
} else if (res.method == "onLost") {
console.log("网络已断开");
} else if (res.method == "onCapabilitiesChanged") {
console.log("网络状态改变");
}
});
},
unregisterNetworkCallback() {
KJNetwork.unregisterNetworkCallback((res) => {
console.log("unregisterNetworkCallback:" + JSON.stringify(res))
});
},
request() {
uni.request({
url: 'https://www.baidu.com/',
success: (res) => {
this.res = "请求成功";
console.log("请求成功");
},
fail: (res) => {
this.res = JSON.stringify(res);
console.log("请求失败");
}
});
}
}
}
</script>