企业微信应该怎么才能自动打卡?自动打卡,究竟如何自动化?

9158APP 0

企业微信应该怎么才能自动打卡?自动打卡,究竟如何自动化?

很多大公司都开始用微信来打卡了,因为这样可以节省很多成本和其他问题,而且还可以准确的了解更多的内容,因为这样作弊是做不到的,那么很多公司怎么用微信呢?自动值机怎么样?这里小编就给大家介绍一下关于微信签到的很多内容。

我相信没有哪个上班族喜欢上班打卡。不说麻烦,最重要的是有一种被人监视的感觉。于是就产生了开发微信自动签到的想法,但是想法虽然好,但是如何实现呢?一时间,这个话题引起了很多程序员的套路,甚至很多上班族也参与其中,热闹非凡。

企业微信

近期,国内多家VPN提供商均收到了苹果公司的通知。该通知主要告知这些提供商和开发者,他们的软件将从中国的App Store中下架。

存储已删除。对此,苹果表示,工信部今年早些时候宣布,所有提供VPN 服务的开发者都必须获得政府许可,并要求我们下架一些不符合新规定的VPN 应用。苹果还补充说:帐单地址位于其他国家/地区的用户将能够继续通过该应用程序付款

在商店中访问这些软件。

思考

无需赘述。任何人能找到这篇文章,很可能是别有用心。哈哈,只是希望大家能够从技术的角度来看待这个插件。不要做“坏”事。你已经不年轻了,该做对的事,该做错的事。清楚的。最后,告诫大家要严格自律,遵守公司的规章制度。

自动打卡究竟如何自动化?

要实现自动化,就需要模拟用户操作,点击、长按、触摸等事件,那么……是的,你需要臭名昭著的AccessibilityService。

如何模拟打卡地点?

1. Xpose框架,有三种定位方式,网络、基站和GPS。三者也有优先级,但同样可以简单粗暴地拦截系统GPS定位。至于网络,给出了基站定位

无效的。

2.模拟器。主流模拟器可以模拟地理位置。开发时建议使用模拟器进行调试;

关于使用Xpose 的说明

该框架功能极其强大,但调试起来比较麻烦。虽然自带日志,但时不时需要重启,确实很烦人。因此,在开发过程中,模拟地理位置只是其中的一部分。因此,为了不影响开发,可以先用模拟器模拟一下地理位置,等打卡功能完善后再考虑定位。毕竟这涉及到

Xpose插件开发。

发展

了解API

至于如何配置AccessService,我不会详细介绍其结构和配置,因为这不是本文的重点。如果没有的话可以参考这个:

微信抢红包插件

http://blog.csdn.net/dd864140130/article/details/51794318

继承AccessService后,我们需要实现onAccessibilityEvent

方法,这个方法的意思是当事件触发时回调。至于你想捕获什么样的事件,请参考API了解详情。这里仅列出本例中使用的事件:

AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:通知栏发生变化时触发,即通知栏显示新通知时触发;

AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:表单变化时触发,Activity、Fragment

所有开关都会被触发;

另外,我们还需要关注AccessibilityNodeInfo实例的重要方法:

findAccessibilityNodeInfosByText:根据文本查找控件,可能得到一个集合;

findAccessibilityNodeInfosByViewId:根据ID查找控件,会更准确;

了解WXUI的结构

首先,自己创建一个企业WX测试账户。登录成功后,您将进入以下界面:

理解代码

签到功能在工作台下,所以需要先进入签到模块。但如果这一系列操作都是手动点击,就失去了自动化的意义。因此,访问服务

第一次介入,代码如下:

上面的代码可以自动点击工作台按钮。这段代码是我们的核心部分。什么是findTagToClick()?让我们一起期待小编的介绍吧。首先我们来说一下需要注意的几个事项:

这是最重要的。如果想让一个控件响应点击事件,有多少种方法呢?

1.点击监听器

2. OnTouch() 处理ActionDown 和ActionUp 事件。

但最重要的是,该控件的属性是onClickable=true,即可以点击。如果属性是

false,那么辅助服务无法执行点击事件,至少我遇到的是这样的。我在开发自动点击工作台这一步的时候,以为只需要通过文本内容获取指定的控件,然后执行点击即可。但结果如何呢?什么都没发生。原因肯定是控件没有接收到事件。这是我遇到的第一个问题。

还有一件事,为什么我在设置OnClickListener后看到点击?

setClickable(true) 的原因就在这里。

如何知道控件是否能够响应点击?有两种解决方案:

1、编写递归判断节点是否可以点击。如果有则执行,否则向上传递。听起来有点像触摸事件分发的过程;

2.使用IDE自带的工具,Android设备监视器查看当前Activity的UI级别,用A.S进入步骤

例如:工具-Android-Android 设备监视器。

使用Android Device Monitor分析UI结构的简单介绍:

我们可以知道“Workbench”控件是一个Textview,具有坐标和可点击属性。因为是false,所以无法进行点击。再找找吧!

检查其父容器RelativeLayout,clickable=true。是为父容器统一设置的点击事件吗?再看看!

以同样的方式检查其他标签按钮的结构。它们是完全相同的,因此很可能事件由它们的父容器统一处理。继续我们的开发工作,我们将介绍我们最关心的方法:

以上方法都是用于查找控件、基本循环和判断。

记录所有节点信息

该方法主要用于遍历某个节点下的控件,方便引用。其实和业务关系不大,但是有人会问为什么要加呢?如果你想找到控件来查看UI结构,则不能使用Android设备

查看监控工具。是的,确实如此,但我用它来解决问题。至于什么样的问题,我稍后再介绍。经过上面的代码洗礼,我们来到了如下界面:

重复老把戏,我发现了“签入”控件并将事件设置为父容器。好,我们继续完善我们的代码,如下:

至此,当我们启动服务时,如果一切顺利的话,我们会看到界面自动执行,直到跳转到如下界面:

来到这里,如果你想自动打卡,你需要做什么?是的,就是获取打卡的控制权,然后操作模拟器,再次调用findTagToClick('Workbench')

够了吗?理论上确实如此,但此时界面中出现了“签到”两个字,并且会发现多个控件。虽然上面的代码是从查询结果集中获取第一个节点

元素,但为了避免不必要的麻烦,尽量寻找独特的文字。搜索包含单词“times”的控件怎么样?当然,至少这个词在当前界面中是独一无二的。既然考虑唯一性,为什么呢?没有使用ID,所以

直接传入ID,但注意不同机器和手机上ID可能不同,以最终显示为准。你必须亲自检查一下。代码如下:

这时候运行项目,运行微信,发现界面跳转正常,签到成功,非常好!如果你多尝试几次,你可能会发现问题。在签到界面,也就是上图,会出现签到无效的问题。具体效果就是:从工作台到打卡模块一切都可以自动完成,非常优雅。但当到了点击打卡按钮的时候,按钮周围的黄色圆圈有时只会旋转一圈,但打卡业务并不会被执行。简单来说:没有点击。卡片。这个问题到底是什么?当时猜测有三个原因:

1、腾讯对签到有限制,在规定时间内不能连续签到;

2、点击动作太短,签入控件不认为是有效点击;

3、代码执行速度太快,还没有找到对应的控件;

在开发过程中,我们会遇到各种不可思议的问题。针对这种情况,我个人的方法是在脑海中过一遍整个流程或者业务执行流程,然后将所有可能出现的问题列举出来。链接一一删除。

#1 我尝试了几种高频的手动签到行为,但没有发现限制,所以初步排除了这种情况;

#2 使用长按事件,情况不变;

#3 还记得之前提到的logAllNode()吗

方法?这个方法是在这个阶段添加的。主要输出某个节点的控制信息,对于业务没有太大意义。通过打印日志分析,发现在渲染签到界面时,“正在获取管理信息”

Textview A(速度非常快,一闪而过,非常容易

关于企业问题,微信打卡的内容确实很多,大家都很关心。毕竟薇薇峰是来给大家介绍更多的问题的,希望大家都能找到更适合自己公司的问题。