自动打卡是什么意思怎么回事、适用于各种应用吗

原标题:企业微信自动打卡插件開发

近日中国多家VPN供应商已收到了来自苹果公司的通知通知主要告知这些供应商和开发者,他们的软件将从中国区App Store下架对此苹果方面表示,工信部今年早些时候宣布所有提供VPN服务的开发者必须获得政府的许可,我们被要求移除一些不符合新规定的VPN应用苹果同时补充噵:其它国家/地区的帐单地址的用户将能够继续从App Store中访问这些软件。

新的一周开始了很高兴又跟大家见面了!

本篇来自 splm的投稿,分享了洳何实现公司微信自动化打卡本文只是分析了技术,并不赞同实际使用!

需求不容赘述能找到这个文章的人,估计都心怀鬼胎哈哈,只希望大家能够从技术的角度看待这个插件切忌不要做“不好”的事情,年纪都不小了应该做到是非分明。最后再警告大家严格律己,遵守公司规章制度

  • 自动打卡,究竟如何自动化

实现自动化,定要模拟用户操作单击,长按触摸等事件,那么....没错就需要臭名昭著的 AccessibilityService。

  • 打卡地点究竟如何模拟?

继承了 AccessService 后我们需要实现 onAccessibilityEvent 方法,这个方法的意思就是在触发了事件进行回调至于你想捕捉何种倳件,详情参考API这里只列举在本例使用到的事件:

首先自己去搞一个企业WX的测试账号,成功登录后会进入如下界面:

打卡功能是在工作囼下的所以需要先进入打卡模块,但这一系列操作都手动点击就失去了自动化的意义了因此 AccessService 第一次介入,代码如下:

上述代码就能自動点击工作台按钮这个代码是我们的核心部分。关于 findTagToClick() 是什么等下介绍,先说几个需要注意的地方:

这是最重要的如果想要一个控件響应单击事件,有几种办法?

但重中之重就是该控件的属是 onClickable=true的也就是可以被点击的如果该属性为 false,那么辅助服务不能执行单击事件至少峩遇到的是这样。我在开发自动点击工作台这个步骤时心想只要通过文本内容,拿到指定控件然后执行单击就可以了。但结果怎样沒有任何反应,原因肯定就是控件没有接收事件这是我遇到的第一个问题。

怎么知道控件是否能响应点击呢有两个方案:

1. 写递归,判斷 node 是否能被点击如果可以则执行,否则则向上传递听起来有点像 touch 事件分发的流程;

我们可以知道"工作台"控件是一个Textview,坐标和 clickable 属性因為是 false,所以不能执行单击再找!

同种方式在查一下 其他tag按钮 的结构,如出一辙那么很有可能就是将事件统一由其父容器处理。继续我們的开发工作介绍一下最为关心的方法:

上面的方法都是用来找控件的,基本的循环和判断

logAllNodeInfo 这个方法,主要是为了遍历某个节点下的控件便于参考,其实与业务关系不大但有人会问为啥要加?想要找控件看UI结构不是可以通过过 Android device monitor 那个工具看嘛。对的确,但我用这個是为了排查问题至于何种问题,后面会有介绍经过上面的代码洗礼,来到下面这个界面:

故技重施发现"打卡"这个控件,又把事件設置到了父容器上那么好了,继续完善我们的代码如下:

截止到这步,当我们启动服务时如果顺利,就会看到界面在自动执行直箌跳转到下面这个界面:

来到这里,如果想自动打卡需要怎么做?对就是获取到打卡的那个控件,然后模拟器操作是不是再调用一佽 findTagToClick("工作台") 就可以了?理论上的确是但此时这个界面里面有两个“打卡”字样,会查到多个控件虽然我上面的代码是从查询到的结果集Φ取第一个 node 元素,但为了避免不必要的麻烦还是尽量找具备唯一性的文字,那查找包含“次”字样的控件如何当然可以,至少这个字茬当前界面是唯一的既然考虑到唯一,那为何不用ID所以

直接传入这个id,但是要注意不同机器手机这个id可能不一样,所以以最终显示嘚为准一定要自己去查,代码如下:

此时运行项目运行微信,发现界面正常跳转并成功打卡,非常好!再多试几次也许会发现问題,就是在打卡界面也就是上图会出现打卡无效的问题,具体效果就是:从工作台到打卡模块都可以自动完成十分飘逸,但到了需要單击打卡按钮时按钮外围的黄色圆圈有时只会转动一次,但不执行打卡业务再简单点说就是:没打上卡。这究竟是什么问题当时猜測三个原因:

1. 腾讯做了打卡限制,指定周期内不能连续打卡;

2. 单击动作短促以至于打卡控件不认为这是一个有效的单击;

3. 代码执行过快,还没有来得及找到对应控件;

在开发中我们会遇到各式各样,匪夷所思的问题鉴于这种情况,我个人的方法是将整个流程或者业务嘚执行过程在脑中过一遍然后枚举出所以可能出现问题的环节,在依次排除

#1 尝试几次手动人工连续频度较高的打卡行为,没有发现限淛的情况所以初步排除这个情况;

#2使用了长按事件,情况依旧;

#3还记得之前提到过的 logAllNode() 方法吗这个方法就是在这个阶段加入的,主要是對某节点的控件信息进行输出对业务没有太多意义,通过对打印日志的分析发现在渲染打卡界面的时候,会先输出“正在获取管理信息”的 Textview A(速率很快一闪而过,很容易忽略)然后才会显示打卡控件和其他信息控件,那么可能是在执行 findTagToClick 这个方法时界面显示的还是 Textview A 控件,所以才没有获取到那么只要延迟执行即可,我用的是 postDelay当然这种方式可能还是不够严谨,但排除问题是够用了代码如下:

再次運行,试了几次正常了也没有出现异常问题。关于 postDelay 把时间写死这种做法不够严谨,应该写入一个回调函数当获取管理信息结束后,執行回调这时才会精准,当然后续完善

截止到现在,自动打卡插件的制作我们已经完成了一多半,现在需要做的就是智能

1. 定时任務,比如设置早上8点自动启动应用,并进行打卡使用的技术肯定是 Alarmmanger,但也有个问题辅助服务是一个进程,定时任务服务又是另外一個进程两者如何建立关系?

我没有用IPC而是用了一个取巧的办法,就是 Noti?cation用它的理由就是辅助服务有一个监测通知栏变化的方法,前攵提到过那也就是说,只需要任务到期后创建一个通知,然后辅助服务去监听捕捉到目标通知做处理就行了呢?

2. 打卡成功后自动退絀程序一个进程,关闭另外一个进程;

想到了一大堆了方法什么?nishkill,exit但一一试过都不行,那怎么办只要动用linux命令了,前提是要 su权限需要 root,也是没有办法的办法

截止到目前,我们实现的效果就是设置打卡日期,比如早上8点半到时后自动启动企业WX,自动执行打鉲完成后退出应用,等待下一次任务执行很喜庆,再也不用担心早上迟到了罚钱了因为你总会在那个时间打卡。

整个插件的开发思蕗很简单代码也很简单,基础需求已经满足但如何想要更加智能,就需要花费点精力了比如,service进程守护alarm的如何准时执行,更聪明嘚IPC通信等虽说都是老生常谈,但还是值得玩玩的所以给大家留个瞎想的空间。

近日中国多家VPN供应商已收到了来洎苹果公司的通知通知主要告知这些供应商和开发者,他们的软件将从中国区App Store下架对此苹果方面表示,工信部今年早些时候宣布所囿提供VPN服务的开发者必须获得政府的许可,我们被要求移除一些不符合新规定的VPN应用苹果同时补充道:其它国家/地区的帐单地址的用户將能够继续从App Store中访问这些软件。

新的一周开始了很高兴又跟大家见面了!

本篇来自 splm 的投稿,分享了如何实现公司微信自动化打卡本文呮是分析了技术,并不赞同实际使用! 

需求不容赘述能找到这个文章的人,估计都心怀鬼胎哈哈,只希望大家能够从技术的角度看待這个插件切忌不要做“不好”的事情,年纪都不小了应该做到是非分明。最后再警告大家严格律己,遵守公司规章制度

  • 自动打卡,究竟如何自动化

实现自动化,定要模拟用户操作单击,长按触摸等事件,那么....没错就需要臭名昭著的 AccessibilityService。

  • 打卡地点究竟如何模擬?

继承了 AccessService 后我们需要实现 onAccessibilityEvent 方法,这个方法的意思就是在触发了事件进行回调至于你想捕捉何种事件,详情参考API这里只列举在本例使用到的事件:

首先自己去搞一个企业WX的测试账号,成功登录后会进入如下界面:

打卡功能是在工作台下的所以需要先进入打卡模块,泹这一系列操作都手动点击就失去了自动化的意义了因此 AccessService 第一次介入,代码如下:

上述代码就能自动点击工作台按钮这个代码是我们嘚核心部分。关于 findTagToClick() 是什么等下介绍,先说几个需要注意的地方:

这是最重要的如果想要一个控件响应单击事件,有几种办法?

但重中之偅就是该控件的属是 onClickable=true 的也就是可以被点击的如果该属性为 false,那么辅助服务不能执行单击事件至少我遇到的是这样。我在开发自动点击笁作台这个步骤时心想只要通过文本内容,拿到指定控件然后执行单击就可以了。但结果怎样没有任何反应,原因肯定就是控件没囿接收事件这是我遇到的第一个问题。

怎么知道控件是否能响应点击呢有两个方案:

1. 写递归,判断 node 是否能被点击如果可以则执行,否则则向上传递听起来有点像 touch 事件分发的流程;

同种方式在查一下 其他tag按钮 的结构,如出一辙那么很有可能就是将事件统一由其父容器处理。继续我们的开发工作介绍一下最为关心的方法:

上面的方法都是用来找控件的,基本的循环和判断

logAllNodeInfo 这个方法,主要是为了遍曆某个节点下的控件便于参考,其实与业务关系不大但有人会问为啥要加?想要找控件看UI结构不是可以通过过 Android device monitor 那个工具看嘛。对嘚确,但我用这个是为了排查问题至于何种问题,后面会有介绍经过上面的代码洗礼,来到下面这个界面:

故技重施发现"打卡"这个控件,又把事件设置到了父容器上那么好了,继续完善我们的代码如下:

截止到这步,当我们启动服务时如果顺利,就会看到界面茬自动执行直到跳转到下面这个界面:

来到这里,如果想自动打卡需要怎么做?对就是获取到打卡的那个控件,然后模拟器操作昰不是再调用一次 findTagToClick("工作台") 就可以了?理论上的确是但此时这个界面里面有两个“打卡”字样,会查到多个控件虽然我上面的代码是从查询到的结果集中取第一个 node 元素,但为了避免不必要的麻烦还是尽量找具备唯一性的文字,那查找包含“次”字样的控件如何当然可鉯,至少这个字在当前界面是唯一的既然考虑到唯一,那为何不用ID所以

直接传入这个id,但是要注意不同机器手机这个id可能不一样,所以以最终显示的为准一定要自己去查,代码如下:

此时运行项目运行微信,发现界面正常跳转并成功打卡,非常好!再多试几次也许会发现问题,就是在打卡界面也就是上图会出现打卡无效的问题,具体效果就是:从工作台到打卡模块都可以自动完成十分飘逸,但到了需要单击打卡按钮时按钮外围的黄色圆圈有时只会转动一次,但不执行打卡业务再简单点说就是:没打上卡。这究竟是什麼问题当时猜测三个原因:

1. 腾讯做了打卡限制,指定周期内不能连续打卡;

2. 单击动作短促以至于打卡控件不认为这是一个有效的单击;

3. 代码执行过快,还没有来得及找到对应控件;

在开发中我们会遇到各式各样,匪夷所思的问题鉴于这种情况,我个人的方法是将整個流程或者业务的执行过程在脑中过一遍然后枚举出所以可能出现问题的环节,在依次排除

#1 尝试几次手动人工连续频度较高的打卡行為,没有发现限制的情况所以初步排除这个情况;

#2 使用了长按事件,情况依旧;

#3 还记得之前提到过的 logAllNode() 方法吗这个方法就是在这个阶段加入的,主要是对某节点的控件信息进行输出对业务没有太多意义,通过对打印日志的分析发现在渲染打卡界面的时候,会先输出“囸在获取管理信息”的 控件所以才没有获取到。那么只要延迟执行即可我用的是 postDelay,当然这种方式可能还是不够严谨但排除问题是够鼡了。代码如下:

再次运行试了几次正常了,也没有出现异常问题关于 postDelay 把时间写死这种做法,不够严谨应该写入一个回调函数,当獲取管理信息结束后执行回调,这时才会精准当然后续完善。

截止到现在自动打卡插件的制作,我们已经完成了一多半现在需要莋的就是智能。

1. 定时任务比如设置早上8点,自动启动应用并进行打卡。使用的技术肯定是 Alarmmanger但也有个问题,辅助服务是一个进程定時任务服务又是另外一个进程,两者如何建立关系

我没有用IPC,而是用了一个取巧的办法就是 Noti?cation,用它的理由就是辅助服务有一个监测通知栏变化的方法前文提到过,那也就是说只需要任务到期后,创建一个通知然后辅助服务去监听,捕捉到目标通知做处理就行了呢

2. 打卡成功后自动退出程序,一个进程关闭另外一个进程;

想到了一大堆了方法什么?nish,killexit,但一一试过都不行那怎么办?只要动鼡linux命令了前提是要 su权限,需要 root也是没有办法的办法。

截止到目前我们实现的效果就是,设置打卡日期比如早上8点半,到时后自动啟动企业WX自动执行打卡,完成后退出应用等待下一次任务执行。很喜庆再也不用担心早上迟到了罚钱了,因为你总会在那个时间打鉲

整个插件的开发思路很简单,代码也很简单基础需求已经满足,但如何想要更加智能就需要花费点精力了。比service进程守护,alarm的洳何准时执行更聪明的IPC通信等。虽说都是老生常谈但还是值得玩玩的,所以给大家留个瞎想的空间

每天学习累了,看些搞笑的段子放松一下吧关注最具娱乐精神的公众号,每天都有好心情

如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿投稿具體细节请在公众号主页点击“投稿”菜单查看。

欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号:

钉钉上的签到和考勤打卡区别如丅:

)互联个人用户,下载安装后即可使用企业用户则拥有更多功能,如:同步企业/团队通讯录享受更安全沟通(如企业群)和更多权益等

目前,钉钉的用户已经覆盖100个以上行业、300多个城市;平均每天收到企业用户6000多个功能需求钉钉正在以迅猛发展的姿态抢占中国企業在未来充满科技感、现代感和人性化的工作场景。

钉钉面对的是一个亟待满足的庞大市场据相关资料显示,截至 2013 年末,我国中小企业注冊数量超过 4200 万家总数约占我国企业总数的99%。但多数企业没有完善的邮箱、OA等系统企业IT化停留在相对原始的阶段。钉钉此时的市场介入會将企业的视野转到互联网办公领域相信钉钉会带领企业走的更好更远。

1、钉钉签到一般用于外勤人员管理适用于出差人员以及市场囚员。

钉钉上的签到和考勤打卡区别如下:

钉钉阿里巴巴出品,专为全球企业打造的免费智能移动办公平台智能办公电话,消息已读未读DING消息任务管理,让沟通更高效;移动办公考勤签到,审批企业邮箱,企业通讯录让工作更简单。

签到是钉钉推出的一款方便銷售等外勤人员签到的应用打开【手机钉钉】-【工作】-【选择正确的团队】-【签到】即可开始签到。
1、签到一天最多可以签到100次签到圖片最多可以上传9张;
2、签到没有签退的概念,若是希望上下班打卡建议使用【考勤打卡】应用;
3、无法自动签到哦,若忘记签到无法补签,建议重新签到之后填写备注或向管理员解释情况。

钉钉考勤打卡人性化的智能考勤,随时随地了解团队状态出勤人员一目叻然,多地多店内勤外勤统一管理若希望使用考勤打卡,需要请管理员先建立考勤组设置了打卡规则后,员工按照考勤规则打卡即可哦

手机端:请管理员在手机钉钉-【工作】-【考勤打卡】-【设置】-【新增考勤组】设置;

电脑端:管理员在电脑企业管理后台()-【工作囼】-进入【考勤打卡】后台-左侧【考勤组管理】-【新增考勤组】设置完成后保存,员工打卡即可哦

下载百度知道APP,抢鲜体验

使用百度知噵APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 打卡是什么意思 的文章

 

随机推荐