uniapp WIFI上下班打卡

2023-10-11 13:10
文章标签 uniapp wifi 打卡 上下班

本文主要是介绍uniapp WIFI上下班打卡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大纲


 🥙  uniapp官网:uni-app官网  

 🥙  WIFI功能模块:

        1、下载 wifi 插件 uni-WiFi

        2、在 manifest.json 中 App权限配置中 配置权限

                1. ACCESS_WIFI_STATE (访问权限状态)

                2. CHANGE_WIFI_STATE(更改wifi状态)

                3. ACCESS_FINE_LOCATION(访问线路位置)

                4. ACCESS_COARSE_LOCATION(访问文件位置)

        3、编写方法来获取WiFi的名称

        4、后台设定好 wifi mac 名称。前端通过调用获取网络的方法 获取当前连接WIFI的信息从而拿到 mac 进行比对,验证是否是公司WIFI。

需要使用到的一些方法:

        1、uni.getConnectedWifi(OBJECT)

        2、uni.connectWifi(OBJECT)

 代码展示: 

<template><view class="content"><u-cell-group><u-cell icon="account-fill" title="员工姓名" :value="staffName"></u-cell><u-cell icon="calendar-fill" title="打卡日期" :value="$moment().format('YYYY-MM-DD')"></u-cell><u-cell icon="clock-fill" title="上班时间" :value="currentTime"></u-cell></u-cell-group><view><view style="margin-top: 16px">网络MAC为:{{mac}}</view></view><view><u-button type="primary" :loading='loadingForm' @click="clockIn">{{currentTime}}上班打卡</u-button></view></view>
</template><script>import * as api from '@/request';export default {data() {return {mac: '未获取',loadingForm: false,moveClock: '移动打卡',networkIp: '',currentTime: '', //当前时间}},onLoad() {this.mac = options.mac},mounted() {// 在组件挂载时获取当前时间this.currentTime = this.getCurrentTime()// 每隔一秒更新当前时间setInterval(() => {this.currentTime = this.getCurrentTime()}, 1000)},methods: {//获取网络状态getNetworkType() { let MainActivity = plus.android.runtimeMainActivity();let Context = plus.android.importClass('android.content.Context');// 导入WIFI管理 和 WIFI 信息 的class  plus.android.importClass("android.net.wifi.WifiManager");plus.android.importClass("android.net.wifi.WifiInfo");plus.android.importClass("android.net.wifi.ScanResult");plus.android.importClass("java.util.ArrayList");// 获取 WIFI 管理实例  let wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);//打开wifi,false为关闭wifiManager.setWifiEnabled(true); // 获取当前连接WIFI的信息let info = wifiManager.getConnectionInfo()// 获取当前 WIFI 连接的 SSID (WIFI 名称)this.mac = info.getBSSID()},//获取当前时间getCurrentTime() {const date = new Date()//获取时间的小时部分,例如当前时间为2023-05-16 10:30:00,则 date.getHours() 的返回值为 10。const hours = date.getHours().toString().padStart(2, '0')//.toString() 方法是将获取到的小时数转换成字符串类型的方法const minutes = date.getMinutes().toString().padStart(2, '0')const seconds = date.getSeconds().toString().padStart(2, '0')return `${hours}:${minutes}:${seconds}`},//上班打卡clockIn() {this.form.moveClock = '移动打卡',this.form.networkIp = this.macthis.loadingForm = trueconsole.log('打卡信息:', this.form)api.Commuting(this.form).then(res => {if (res.code == 0) {uni.showToast({icon: 'none',title: res.msg});setTimeout(() => {uni.navigateBack({delta: 1});}, 2000);} else if (res.code == 1) {uni.showToast({icon: 'error',title: res.msg});}}).finally(() => {this.loadingForm = false});},},}
</script>
<style>
</style>

以上代码片段是通过 Native API(本地API) 与 Android Wi-Fi (安卓Wi-Fi) 系统服务进行交互的案例。以下是重点代码的详解:

       🥪 1、获取主 Activity(活动/窗体) 的引用,这对于访问 Android 系统服务是必需的

   let MainActivity = plus.android.runtimeMainActivity();

  🥪 2、从 Android 框架导入 Context 类,它提供了访问应用程序特定资源和服务的能力

           let Context = plus.android.importClass('android.content.Context');

       🥪 3、从 Android 框架导入 WifiManager 类,它允许管理 Wi-Fi 连接

           plus.android.importClass("android.net.wifi.WifiManager");

       🥪 4、导入其他与 Wi-Fi 操作相关的类

           plus.android.importClass("android.net.wifi.WifiInfo");

    plus.android.importClass("android.net.wifi.ScanResult");

    plus.android.importClass("java.util.ArrayList");

       🥪 5、使用主 Activity 的 getSystemService() 方法获取 WifiManager 类的实例

          let wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);

       🥪 6、调用 WifiManager 实例的 setWifiEnabled() 方法将 Wi-Fi 启用,false为关闭

          wifiManager.setWifiEnabled(true);

        🥪 7、调用 WifiManager 实例的 getConnectionInfo() 方法获取当前连接信息

          let info = wifiManager.getConnectionInfo(); 

          获取当前 WIFI 连接的 SSID (WIFI 名称)
          this.mac = info.getBSSID()

    uni.navigateBack() 函数用于关闭当前页面并返回上一个页面或多个页面 ( 我这边了设置等待1秒钟,再跳转到上一个页面)

    setTimeout(() => { uni.navigateBack({ delta: 1 }); }, 1000);

效果展示:

 

 

这篇关于uniapp WIFI上下班打卡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/188262

相关文章

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

uniapp H5打开地图

manifest.json文件,源码视图找到H5添加下面内容 "h5" : {"sdkConfigs" : {"maps" : {"amap" : {"key" : "**********************","securityJsCode" : "****************************","serviceHost" : ""}}}} 高德开放平台 申请时选择(W

uniapp 低功耗蓝牙BLE分包

ble.js // 分包写入蓝牙async sendWriteBLECharacteristicValue(deviceId,serviceId,writeCharacteristicId,readCharacteristicId,buffer,success, // 成功回调failure, // 失败回调) {const offset = 500; // 偏移量let pos = 0;

uniapp 使用uview 插件

看创建项目版本vue2 、 vue3 Button 按钮 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 1.  npm install uview-ui@2.0.36 2. // main.js,注意要在use方法之后执行import uView from 'uview-ui'Vue.use(uView)// 如此

Day59 代码随想录打卡|二叉树篇---把二叉搜索树转换为累加树

题目(leecode T538): 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。 方法:本题

昇思25天学习打卡营第5天|网络构建

一、简介: 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类(这个类和pytorch中的modul类是一样的作用),也是网络的基本单元。一个神经网络模型表示为一个Cell,它由不同的子Cell构成。使用这样的嵌套结构,可以简单地使用面向对象编程的思维,对神经网络结构进行构建和管理。

【昇思初学入门】第五天打卡

网络构建 学习心得 定义神经网络时,可以继承nn.Cell类,在__init__方法中进行子Cell的实例化和状态管理,在construct方法中实现Tensor操作MindSpore默认情况下是以动态图模式运行,但也支持通过设置set_context手工切换为静态图模式,也jit装饰器开启 案例 import mindspore as msfrom mindspore import n

代码随想录第四十六天打卡

股票问题是一个动态规划的系列问题,前两题并不难,第三题有难度。 121. 买卖股票的最佳时机 视频讲解:动态规划之 LeetCode:121.买卖股票的最佳时机1_哔哩哔哩_bilibili 代码随想录 class Solution {public:int maxProfit(vector<int>& prices) {int mi=INT_MAX;int res=0;for (int

昇思25天学习打卡营第5天 | 网络构建

内容介绍:神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个`Cell`,它由不同的子`Cell`构成。使用这样的嵌套结构,可以简单地使用面向对象编程的思维,对神经网络结构进行构建和管理。 具体内容: 1. 导包 import minds

投票多功能小程序(ThinkPHP+Uniapp+FastAdmin)

🎉你的决策小助手! 支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署,Uniapp提供全部无加密源码。​ 一、引言:为什么我们需要多功能投票小程序? 在快节奏的现代生活中,我们经常面临各种选择和决策。无论是团队活动的选择、家庭出游的目的地,还是朋友间的意见征集,都需要一个高效、便捷的投票工具来辅助我们。而“多功能