# dingtalk-auto-punch **Repository Path**: jlnacyp/dingtalk-auto-punch ## Basic Information - **Project Name**: dingtalk-auto-punch - **Description**: 使用auto.js脚本,自动解锁、点击屏幕,实现钉钉自动打卡功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-11-07 - **Last Updated**: 2024-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 钉钉自动打卡 ## 1. 脚本 > 1.1 脚本支持:Auto.js,需要手机安装 Auto.js App,apk文件已上传。 > > 1.2 脚本介绍:Auto.js 可以实现自动点击手机屏幕(根据坐标点或文字)、唤醒屏幕、开启或关闭App。另外,还可以设置定时任务来完成打卡。 ## 2. 代码讲解 ``` js //点击屏幕(x, y)的坐标点 click(x, y) //点击屏幕“文字”的按钮或坐标,两个方法均可实现 click("文字") clickMessage("文字") //滑动屏幕,从坐标点(x1, y1)滑动到(x2, y2) swipe(x1, y1, x2, y2) //程序休眠,单位毫秒 sleep(1000) //唤醒屏幕,两个方法都可以实现 device.wakeUpIfNeeded(); device.wakeUp(); //让屏幕保持唤醒状态5分钟 device.keepScreenDim(5 * 60 * 1000); //关闭屏幕常亮 device.cancelKeepingAwake(); //打开手机应用 launchApp("应用名称"); //打开系统的钉钉强制关闭页面 openAppSetting(getPackageName("应用名称")); //退出程序 exit() //显示弹窗信息 toast("提示信息") ``` ## 3. 代码实现 > 请查看 dingtalk.js 文件。 ## 4. 解决思路 > 1. 唤醒手机屏幕 > 2. 解锁屏幕(使用click方法,可以完成密码解锁) > 3. 强行停止相应的应用(目的是为了每次进入应用时,呈现的界面都是我们脚本开始执行打卡任务的首个页面,如不需要,则忽略这一步骤) > 4. 打开应用 > 5. 执行打卡(自动点击屏幕) > 6. 完成打卡 > 7. 退出程序 ## 5. 注意事项 > 1. 本项目的代码,是根据手机坐标实现自动点击,点击屏幕的坐标位置与手机分辨率有关。 > > 2. 如何获取屏幕的坐标点:进入手机开发人员选项,打开指针位置,点击屏幕是就会显示坐标信息。 > > ![image-20220824210541813.png](img\image-20220824210541813.png)![](img\image-20220824210617733.png![image-20220824210741363](img\image-20220824210741363.png) > > 3. Auto.js 应用需打开无障碍服务(应用内设置可进入,手机设置也可进入),打开音量控制,程序执行时按下音量键可强制退出。 > > ![image-20220824210819982](img\image-20220824210819982.png) > > ![image-20220824210859392](img\image-20220824210859392.png) > > ![image-20220824210929986](img\image-20220824210929986.png) > > ![image-20220824211152278](img\image-20220824211152278.png) > > ![image-20220824211213394](img\image-20220824211213394.png) > > > > 4. Auto.js 与 打卡的目标应用均要设置手动启动、允许后台运行。 > > 5. 等待时间受其他因素影响的点击事件(如打开应用、获取位置信息等),触发这个点击事件后,建议程序休眠时间稍微长一些,避免打卡失败。