微信自动打卡如何实现?有什么好的方法?
现在很多企业也都使用企业微信,很多企业都使用微信进行签到,但是你知道微信如何实现自动签到吗?很多微信用户问我如何实现微信自动签到?下面小编就带大家了解一下微信如何实现自动打卡。希望我的内容对您有所帮助。
关于使用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后看到点击?
etClickable(true) 这就是原因。
如何知道控件是否能够响应点击?有两种解决方案:
1、编写递归判断节点是否可以点击。如果有则执行,否则向上传递。听起来有点像触摸事件分发的过程。
使用IDE自带的工具,Android设备监视器查看当前Activity的UI级别,用A.S进入步骤
例如:工具-Android-Android 设备监视器。
使用Android Device Monitor分析UI结构的简单介绍:
我们可以知道“Workbench”控件是一个Textview,具有坐标和可点击属性。因为是false,所以无法进行点击。再找找吧!
检查其父容器RelativeLayout,clickable=true。是为父容器统一设置的点击事件吗?再看看!
以同样的方式检查其他标签按钮的结构。它们是完全相同的,因此很可能事件由它们的父容器统一处理。继续我们的开发工作,我们将介绍我们最关心的方法:
以上方法都是用于查找控件、基本循环和判断。
记录所有节点信息
该方法主要用于遍历某个节点下的控件,方便引用。其实和业务关系不大,但是有人会问为什么要加呢?如果你想找到控件来查看UI结构,则不能使用Android设备
查看监控工具。是的,确实如此,但我用它来解决问题。至于什么样的问题,我稍后再介绍。经过上面的代码洗礼,我们来到了如下界面:
重复老把戏,我发现了“签入”控件并将事件设置为父容器。好,我们继续完善我们的代码,如下:
至此,当我们启动服务时,如果一切顺利的话,我们会看到界面自动执行,直到跳转到如下界面:
这时候运行项目,运行微信,发现界面跳转正常,签到成功,非常好!如果你多尝试几次,你可能会发现问题。在签到界面,也就是上图,会出现签到无效的问题。具体效果就是:从工作台到打卡模块一切都可以自动完成,非常优雅。但当到了点击打卡按钮的时候,按钮周围的黄色圆圈有时只会旋转一圈,但打卡业务并不会被执行。简单来说:没有点击。卡片。这个问题到底是什么?当时猜测有三个原因:
1、腾讯对签到有限制,在规定时间内不能连续签到。
2. 单击动作太短,签入控件不认为这是一次有效的单击。
3、代码执行速度太快,还没有找到对应的控件。
在开发过程中,我们会遇到各种不可思议的问题。针对这种情况,我个人的方法是在脑海中过一遍整个流程或者业务执行流程,然后将所有可能出现的问题列举出来。链接一一删除。
#1 我多次尝试手动频繁签入,但没有发现限制,所以初步排除了这种情况。
#2 使用长按事件,情况依旧
#3 还记得前面提到的logAllNode()
方法?这个方法是在这个阶段添加的。主要输出某个节点的控制信息,对于业务没有太大意义。通过打印日志分析,发现在渲染签到界面时,“正在获取管理信息”
Textview A(速度很快,一闪而过,容易忽略),然后会显示签到控件等信息控件,那么可能正在执行findTagToClick
该方法中界面仍然显示Textview A控件,所以没有获取到。那么就推迟执行吧。我用
postDelay,当然这个方法可能不够严谨,但是足以排除问题了。代码如下所示:
再次运行试几次,一切正常,没有出现异常问题。关于延迟后
死亡时间的书写方法不够严谨。你应该写一个回调函数。当获取到管理信息后,执行回调。只有这样,它才会准确。当然,未来会改进。
截至目前,我们已经完成了自动签到插件的制作一半以上。现在要做的就是智能化。
您经常使用微信打卡吗?你知道如何实现微信自动签到吗?通过小编以上的内容,大家应该知道微信如何实现自动签到了吧?希望小编的内容对您有所帮助。