這一次,小程演示怎么讓一個(gè)APP自動(dòng)地運(yùn)行,從而代替手工的操作。同樣以“微信”以例,實(shí)現(xiàn)在一個(gè)微信群里面,對所有的成員,自動(dòng)地一個(gè)一個(gè)地發(fā)出添加好友的請求。
創(chuàng)新互聯(lián)公司是一家專業(yè)的網(wǎng)站制作公司,提供的服務(wù)包括:高端網(wǎng)站設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),我們是一家專業(yè)的建站公司,做網(wǎng)站,我們是認(rèn)真的。我們是成都網(wǎng)站制作,成都網(wǎng)站建設(shè)的先行者,一切以客戶的利益為設(shè)計(jì)方向,能夠?yàn)椴煌袠I(yè)的客戶提供全面、長期、深入的網(wǎng)絡(luò)解決方案。 創(chuàng)新互聯(lián)公司根據(jù)客戶的具體需求,提供從策劃、創(chuàng)意、制作、執(zhí)行等服務(wù)。
知識點(diǎn)還是之前介紹的東西,流程方面還是跟蹤與最終注入。因?yàn)檫@是一個(gè)系列的文章講解(微信公眾號“廣州小程” -> 逆向開發(fā)),所以讀者可以聯(lián)系前面的文章來理解,用自己的話“翻譯”成自己的知識與經(jīng)驗(yàn)。
本文解決一個(gè)問題:如何讓第三方程序自動(dòng)化地運(yùn)行。
(一)批量添加好友的效果
小程使用“奇哥”的賬號,在某個(gè)群里面向所有人請求加好友,程序運(yùn)行的效果是這樣的:
同樣,如果是附近的人,也可以做到自動(dòng)批量地發(fā)出請求:
需要解釋一下,這種批量加好友的行為是被微信限制的,并且會對違規(guī)者作出處罰。那加人的限制是怎么樣的?小程在網(wǎng)上找了一個(gè)說法,讀者可以了解一下:
2017+微信加人限制規(guī)則:
微信群:最多每天30~50個(gè),保險(xiǎn)是20人,超過對方收不到驗(yàn)證信息。
附近的人:15個(gè)每次,每天最多3次,每次之間最少間隔×分鐘;
搖一搖:15個(gè)每次,每天最多3次,每次之間最少間隔×分鐘;
搜索微信號:6個(gè)每次,每天最多5次,每次之間最少間隔×分鐘;
手機(jī)通訊錄:8個(gè)每次,每天最多6次,每次之間最少間隔×分鐘;
漂流瓶:5個(gè)每次,每天最多3次,每次之間最少間隔×分鐘;
主動(dòng)加好友:每天每個(gè)微信號,最多30個(gè);
被動(dòng)加好友:每天每個(gè)微信號,最多180個(gè)。
如果被限制了,會有什么表現(xiàn)呢?首先,不會有特別的通知告訴你,但你發(fā)送的請求不會去到別人那里(如果是在“附近的人”,那就是你可以看到別人,而別人看不到你;你打呼,別人不會收到。),而且,需要過一個(gè)星期或更長時(shí)間,才能正常“交流”。
所以,應(yīng)該慎用批量加好友的功能。
小程在這里只是演示“如何自動(dòng)化”,目的并非加好友。
(二)如何實(shí)現(xiàn)
先是跟蹤目標(biāo)函數(shù)。
(1)群成員列表的界面類是什么?
由此可見,ChatRoomInfoViewController
是一個(gè)目標(biāo),它的結(jié)構(gòu)是這樣的:
注意m_arrMemberList這個(gè)變量,它就是所有群成員的數(shù)組,每一個(gè)成員是一個(gè)CContact。
(2)點(diǎn)擊每一個(gè)群成員
點(diǎn)擊一個(gè)成員,就是調(diào)用- (void)openContactInfo:(id)arg1
這個(gè)函數(shù),傳入的就是成員。
可以想像,只要循環(huán)調(diào)用這個(gè)函數(shù),并傳入不同的成員,就可以達(dá)到批量點(diǎn)擊成員的目的。
(3)觸發(fā)添加成員
點(diǎn)擊成員后,進(jìn)到“成員詳細(xì)資料”頁面,這個(gè)頁面所在類是這樣的:
再作一些猜測與跟蹤,就可以知道,點(diǎn)擊“添加到通訊錄”,觸發(fā)的函數(shù)是
ContactInfoViewController::onSendVerifyMsg。
(4)發(fā)送請求
到了這一步,就是填寫打招呼的內(nèi)容了。一個(gè)好的招呼應(yīng)該是帶上對方昵稱的,而這個(gè)昵稱可以從成員信息中取得。如果微信的UITextField有長度限制(有些版本作了限制)的話,還可以重寫文本框的回調(diào)以取消限制。
發(fā)送請求的類:
(三)總結(jié)
小程在這里給出一個(gè)批量自動(dòng)化的思路:
手動(dòng)進(jìn)到群成員列表,然后進(jìn)入自動(dòng)化流程。
在ChatRoomInfoViewController::viewDidLoad完成時(shí),取得m_arrMemberList即成員列表,循環(huán)打開每個(gè)成員。
使用CContact::isMyContact,判斷成員是否已經(jīng)添加過了,如果是則下一個(gè)成員。
每點(diǎn)擊一個(gè)成員時(shí),設(shè)置一個(gè)變量的狀態(tài),然后進(jìn)入等待,直到這個(gè)變量的狀態(tài)變化,再進(jìn)入下一個(gè)成員的點(diǎn)擊。
點(diǎn)擊成員,進(jìn)入到“詳細(xì)資料”界面,同時(shí),UINavigationController進(jìn)入等待若干秒(比如4秒),若干秒后執(zhí)行返回操作(不管最終是否添加成功)。
進(jìn)入驗(yàn)證界面,在SendVerifyMsgViewController::viewDidLoad時(shí),設(shè)置好UITextField的內(nèi)容,再觸發(fā)onSendVerifyMsg的調(diào)用。
驗(yàn)證如果成功,則驗(yàn)證界面會自動(dòng)消失,如果失敗(失敗有回調(diào))則需要主動(dòng)調(diào)用一下成功時(shí)的調(diào)用使得驗(yàn)證界面消失。這時(shí)即使有alertview彈框也不影響后續(xù)的操作。
UINavigationController執(zhí)行返回操作,并設(shè)置可以下一個(gè)成員。
ChatRoomInfoViewController執(zhí)行下一個(gè)成員。
總結(jié)
以上所述是小編給大家介紹的iOS逆向開發(fā)之微信自動(dòng)添加好友功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的!