搶紅包軟體的技術原理

又到了每逢佳節各個微信大群發紅包之際,喜悅聲或哀嘆聲此起 彼伏,沒搶到紅包的只恨自己不能再快一點。

既然快速搶紅包已經成為需求,那麼紅包助手橫空出世也是意料之中的事情。平台所限,紅包助手只在 Android手機上出現,它的原理是怎樣的呢?雖然不 root 手機也能用,但 是它到底安全嗎?我們一一來分析一下。

首先,我們先從 Android 的視圖相關的一個概念說起:View 樹。我們一般平時看到的Android 應用的界面都是一個大的View 樹構成的。一個大的視圖界面首先有一個根 View 節 點,這個根 View 節點下會有若干個子 View 節點,而每個子View 節點下又有若干個子 View節點,如果一個 View 有子節點,那麼它同時也是一個ViewGroup,如果沒有子節點,那麼它 就是一個葉子 View。就這樣不斷的一層層嵌套,就構成了一個大的 View 樹。

Advertisements

例如常見的聊天列表:

這裡比較明顯的是消息列表是個大的 ViewGoup,裡面嵌套了很多行的消息條目 View,同 時每一個消息條目行同時也是一個ViewGroup,裡面又嵌套了很多小的 View 元素,例如頂頭 的頭像 View,名稱文本 View, 述 View等等。

這個界面可以到手機的設置-開發者選項-顯示 布局邊界,打開這個選項就可以了,每一個完整的 View/ViewGoup都被被藍色的邊角和紅色 的分界線標記出來。

不是講紅包助手的原理嗎,怎麼講起 View 樹了? 別急,我們的前戲還沒完呢,我們再來 看一個 Google應該都沒想到的事情。Google 為有障礙的又想使用手機的人 供了輔助功能,例如幫助視覺有障礙的人讀出他點擊的控制項的名字,幫助肢體有障礙的人點擊指定的按 鈕等等。原理就是利用上面的 View樹,用戶的點擊事件終會落到一個具體的 View 上,這個View 包含了一系列 述信息,點擊 View 時,系統就會將 View 上的述信息讀出來,這樣不 用看到界面也能操作手機了,同時,還能通過需要反向檢索當前 View 樹上各個 View 節點的述信息,只需要知道某個具體 View 上的 述,系統就能代替點擊對應的 View,這樣就可 以不用觸摸,通過聲音就能操作了。

Advertisements

這一輔助功能被國人開發者發揚廣大了,例如很多 APP 有自動裝的功能,只要開啟了自 動裝,不需要root,它就能替你點擊安裝過程中界面上的指定按鈕,我們在批量更新的時候 確實很方便。

我們開始講講紅包助手的技術實 現吧。(感覺好像我不需要再說什麼了,大家也都能猜到了

雖然紅包助手一般都不要求 root 許可權,不過都會引導用戶開啟輔助功能。一旦開啟輔助功能,紅包助手就能夠監聽通知欄的的信息內容了,比如監聽到來自微信的消息裡面有紅包 (當然會對述信息做更精確的匹配),就會自動替用戶點擊通知欄的消息,這樣用戶就進 入到了對應微信群的聊天界面了,整個聊天界面也是一個大的 View樹,紅包助手開始檢索樹 上紅包的 述信息,然後替用戶滾動屏幕,直到紅包消息出現在屏幕中,不必多說,後面還能幫你點紅包,拆紅包了。不過貌似 近的紅包助手都只是做到了滾動到紅包消息這一步,難道是怕替你點了,要是搶少了,會被罵,乾脆你自己點,搶多搶少就不關我的事了?

其實整個原理還是比較簡單的,紅包助手好,不過終究是個外掛程序,至於其安全性,用戶心裡自己得有桿秤,畢竟可以讀取通知欄信息這一條就足以讓整個安全支付體系土崩瓦 解(可以讀用戶支付的后一道屏障-驗證碼)。搶紅包其實也是一種樂趣,有了這種外掛,樂趣會少了許多,畢竟,開著外掛搶一晚上紅包又能搶多少呢?不過如果你加的是土豪群,宗旨是:工作做得好,不如紅包搶得好,那就當我沒說好了...

為啥我的 Android 手機搶不到紅包?

年關將至,每個紅包都能引起不小的騷動。大家也經常將搶不到紅包的責任推給 Android 手機,似乎大家普遍的印象就是Android 手機慢,就 是沒有 IPhone 搶紅包那麼快,准,狠。

Android 手機的發展大家有目共睹,在極短的時間內幹掉了曾經手機界的巨頭諾基亞,如 今和 IPhone 二分天下,現在Android 的旗艦機置配個 8 核 CPU+4G 內存都不算什麼事,IPhone6s 不過就雙核+2G內存。但是實際上手的操作感覺上來講,IPhone 還是比 Android 流 暢。

 無風不起浪,既然很多人都有類似的感覺,那說明這裡肯定有什麼問題。

先從 Android 應用運行的環境說起。Android 應用是用 Java 代碼編寫的,Java 是解釋性語言,編譯生成的文件是位元組碼文件,最終是運行在 Java 虛擬機上的,Java 虛擬機是幹啥的呢?它就是個翻譯,負責將位元組碼文件解釋成對應平台能夠讀懂的語言。Java 應用走到哪,都得帶上這個翻譯,這溝通效率就可想而知了。相比之下 IOS 的應用則沒有這種困擾,它們可以直接和機器溝通。從這個層面上講,Android 應用有先天劣勢,始終會慢一拍。再從系統設計上看看。我們平時感受到的手機快,大部分情況下是覺得手機對我們操作的響應 速度快。

IOS 系統的響應順序依次為 Touch–Media–Service–Core 架構,換句話說當用戶只要觸 摸接觸

了屏幕之後,系統就會最優先去處理屏幕顯示也就是 Touch 這個層級,然後才是媒體(Media),服務(Service)以及Core 架構。而 Android 系統的優先順序響應層級則是Application–Framework–Library–Kernal架構,當你觸摸屏幕之後 Android 系統首先會 激活應用,框架然後才是屏幕最後是核心架構。

簡單點說,你到 IOS 家開的館子吃飯,你喊點菜時,店家遵循客戶是上帝的原則,他會 放下手頭的一切事情,來給你 供服務,但是你到Android 家開的館子吃飯,你喊了點菜, 店家可能不會搭理你,他還在處理他認為對它來說更重要的事情,等處理完了,才有時間為 你供服務。

再者,IOS 是皇室出生,血統純正,從 IPhone 誕生到現在的機型掰著手指都能數過來。 反觀 Android的機型,那就是成千上萬的兄弟姐妹齊聚一堂啊,想做針對性的機型優化?開 發者表示能力有限,只能儘力而為了。

原創文字來自給產品經理講技術pdf 202頁,轉載請註明。

Advertisements

你可能會喜歡