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

相关文章

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

企业安全之WiFi篇

很多的公司都没有安全团队,只有运维来负责整个公司的安全,从而安全问题也大打折扣。我最近一直在给各个公司做安全检测,就把自己的心得写下来,有什么不足之处还望补充。 0×01  无线安全 很多的公司都有不怎么注重公司的无线电安全,有钱的公司买设备,没钱的公司搞人力。但是人的技术在好,没有设备的辅助,人力在牛逼也没有个卵用。一个好的路由器、交换机、IDS就像你装备了 无尽、狂徒、杀人书一

[环境配置]ubuntu20.04安装后wifi有图标但是搜不到热点解决方法

最近刚入手一台主机,暗影精灵8plus电竞主机,安装ubuntu后wifi怎么都搜不到热点,前后重装系统6次才算解决问题。这个心酸历程只有搞技术人才明白。下面介绍我解决过程。 首先主机到手后是个windows10系统,我用无线网连接了一下,可以正常上网,说明主机有无限网卡且正常。然后我就直接开始安装Ubuntu20.04了,安装成功后发现wifi有图标但是搜不到热点,我想是不是无线网卡驱动有没有

基于springboot+vue+uniapp的“共享书角”图书借还管理系统小程序

开发语言:Java框架:springboot+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 后台登录界面 管理员功能界面 出借者管理 图书信息管理 图书归还管理 出租收入管理

uniapp小程序下载缓存服务器上的图片

1. 使用uni.downloadFile,但是注意下载图片的地址里的域名,需要在微信公众平台里面的downloadFile合法域名进行配置。 export default function downloadAndCacheImage(imageUrl, name) {return new Promise((resolve, reject) => {console.log("imageUrl",

代码随想录打卡Day25

今天一整天都在教研室做实验,没时间刷题,就做了一题,剩下的明天补 491.递增子序列 这道题目和之前的子集问题很像,但是有一点要注意的,这个输入的数组不能进行排序,所以就不能沿用之前的去重逻辑,这道题要去重还是得借助额外的变量来维护元素使用情况,但是这题的used为集合,且不能为全局变量,只能为树层遍历前定义的一个局部变量,除了这个改动以外,其他地方都是高度相似的。 class Soluti

uniapp,vite整合windicss

官方文档:https://weapp-tw.icebreaker.top/docs/quick-start/frameworks/hbuilderx 安装: npm i -D tailwindcss postcss autoprefixer# 初始化 tailwind.config.js 文件npx tailwindcss initnpm i -D weapp-tailwindcss# 假

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消