更新记录

1.0.0(2022-11-03)

新版首发


平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

获取网络状态:android.permission.ACCESS_NETWORK_STATE

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问