您的位置:首页 > 移动开发 > 微信开发

微信批量添加好友

2017-11-03 14:22 225 查看
叶孤城原创

小白:叶城主,你为什么老是拿微信来说事呢?

叶孤城:因为能博眼球。

小白:……那这一次要实现什么效果?

叶孤城:在群里面,批量而且自动地向所有人发出添加好友的请求。

小白:这个是连招啊,先上视频让我看看是不是天外飞仙!

本文解决一个问题:如何让第三方程序自动化的运作。

(一)批量添加好友的效果

小编用奇哥的账号,在某个群里面向所有人请求加好友,程序运作的效果是这样的:



同样,如果是附近的人,也是可以自动批量的:



小白:这样也行?那我不是可以在每个群里面都批量自动地添加好友了?我最喜欢加好友了!

叶孤城:但是,微信对群里面添加好友的数量是有上限的,一般一天只能添加30个左右。如果你超过了这个上限,你发送的请求是不会去到别人那里的!而且,你这个账号还会被限制,比如要过一个星期或更长时间,才能正常发送添加请求。

小白:哦!那奇哥的账号不是给你玩坏了?!

叶孤城:号不坏,女不爱嘛,不要太在意嘛。

注意,由于微信限制发送添加好友的请求数量,并对违规者作出处罚,所以要慎用批量添加的功能。

(二)如何实现

办法上没有特别的地方,还是class-dump/lldb/theos之类工具的使用,但有一些技巧,或注意点还是值得提一下的。

(1)群成员列表的界面类是什么?



由此可见,ChatRoomInfoViewController是一个目标,它的结构是这样的:



注意m_arrMemberList这个变量,它就是所有群成员数组,每一个成员是一个CContact。

(2)点击每一个群成员

点击成员,就是调用- (void)openContactInfo:(id)arg1 这个函数,传入的就是成员。

可以想像,只要循环调用这个函数,并传入不同的成员,就可以达到批量点击成员的目的。

(3)触发添加成员

到了兴奋的环节了,但先要知道触发的函数是什么。先看一下,成员详细资料所在类:



再作一些猜测与调试分析,就可以知道,点击“添加到通讯录”,触发的函数是ContactInfoViewController::onSendVerifyMsg。

(4)发送请求

到了这一步,就是填写打招呼的内容了。一个好的招呼应该是带上对方昵称的,而这个昵称可以从成员信息中取得。如果微信的UITextField有长度限制(有些版本作了限制),我们还可以重写文本框的回调以取消限制。

发送请求的类:



(三)总结

这里面给出一个批量自动化的思路,仅供学习:

* 手动进到群成员列表,然后进入自动化流程。
* 在ChatRoomInfoViewController::viewDidLoad完成时,取得m_arrMemberList即成员列表,循环打开每个成员。
* 使用CContact::isMyContact,判断成员是否已经添加过了,如果是则下一个成员。
* 每点击一个成员时,设置一个变量的状态,然后进入等待,直到这个变量的状态变化,再进入下一个成员的点击。
* 点击成员,进入到“详细资料”界面,同时,UINavigationController进入等待若干秒(比如4秒),若干秒后执行返回操作(不管最终是否添加成功)。
* 进入验证界面,在SendVerifyMsgViewController::viewDidLoad时,设置好UITextField的内容,再触发onSendVerifyMsg的调用。
* 验证如果成功,则验证界面会自动消失,如果失败(失败有回调)则需要主动调用一下成功时的调用使得验证界面消失。这时即使有alertview弹框也不影响后续的操作。
* UINavigationController执行返回操作,并设置可以下一个成员。
* ChatRoomInfoViewController执行下一个成员。


小白:叶城主,你讲了一大堆,我还是不知道你说什么呢!而且,你似乎没有讲,怎么主动触发一个按钮的点击,怎么主动切到下一个页面,难道这些不重要吗?

叶孤城:这些都是细节,不重要!如果你真要了解,那么……

小白:stop!我知道你想说什么!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息