今天在研究 iphone 越獄後的一個非常強大的插件,叫做 Activator
它除了可以連結到各種開關、各種設定頁面、各種現有的功能以外,
更強大的是,它還可以讓使用者自訂 script 指令!
舉例來說,如果要製作一個可以開啟 Wifi 的命令,那就是:
activator send switch-on.com.a3tweaks.switch.wifi
1. 那麼,到底有哪些可以被呼叫的功能呢?(listeners)
最完整的方法,就是在 terminal 打上這一段: activator listeners
不過,前提是你的 iphone 需要先安裝 "Terminal" 或者是類似的東西,
如果你沒有裝 terminal 的話,這裡有整理出來的 listeners 列表:http://junesiphone.com/actions/
不過它可能不是最完整的列表,想要取得最完整的列表,還是需要用 terminal 打 "activator listeners"
2. 如果想要一次執行兩種以上的命令,怎麼辦呢?
複合命令,可以利用 "&&" 來達成,或者是分號 ";" 來達成,舉例來說:
activator send switch-on.com.a3tweaks.switch.wifi ; activator send switch-off.com.a3tweaks.switch.airplane-mode
此行就會是 switch-on Wifi,並且 switch-off Airplane mode。
(注意到,它語法都是 activator send xxx.com.a3tweaks.switch.xxxx )
也可以改成使用 "&&" 來連結,效果跟分號 ";" 大致上是一樣的,
差別只在於使用 "&&" 時,「下一句需要等到上一句成功執行後才會執行」:
activator send switch-on.com.a3tweaks.switch.wifi && activator send switch-off.com.a3tweaks.switch.airplane-mode
"activator send" 後面接的指令,一共分為三種:
switch-on
switch-off
switch-flip
(flip 是會反轉現在的狀態,也就是如果現在是關的,就會打開;如果現在是開的,就會關掉。)
3. 但是,我想要執行一個指令後,等待一段時間,再執行第二個指令欸怎麼辦?
值得注意的一點是,這些複合式指令,都是在極短的時間之內連續執行的,
假設你想要「開啟飛航模式」,然後「開啟Wifi」,使用以上方式是很有可能會失敗的喔!
因為,關閉飛航模式是需要時間的,而當你在還沒跑完飛航模式時,馬上又開啟Wifi,可能之後飛航模式會將Wifi 再度關掉
這時候 time delay 就進來了:
activator send switch-on.com.a3tweaks.switch.airplane-mode && sleep 0.1 && activator send switch-on.com.a3tweaks.switch.wifi
也就是兩個指令中間,夾了一個 sleep 0.1 指令。
另一個值得注意的點是,如果你本來就已經是在飛航模式了,switch-on 指令是不會「成功執行」的,
所以如果你是照著上面這樣寫,那麼後面的兩個 "&&" 就很有可能都不會執行到了!
其中一個解決方法是: 改成用分號 ";" 來連結第一串的 airplane 跟中間的 sleep
4. 但是這樣子我還是不滿足,有沒有更進階的控制方法?
想要更進階的控制權,bash script 就進來啦! (This is where Bash Script comes in)
比方說,你先到 /usr/bin 底下,建立個檔案叫做 "toggleWifi",
然後裡面輸入純文字,非常簡單的兩行文字:
#! /bin/bash
activator send switch-flip.com.a3tweaks.switch.wifi
之後,用 Activator 直接呼叫它,"toggleWifi",這就等同於 wifi 開關的功能了!
(記得要更改權限成 755 喔,預設是 344 的樣子)
(怎麼改請參考這篇:https://iosgods.com/topic/2740-tutorialvideo-how-to-set-permission-to-777-775-755-644-via-ifile/)
(可以這樣直接呼叫是因為,"toggleWifi" 是放在 /usr/bin 資料夾底下,所以可以直接被 terminal 所呼叫)
(第二行也可以直接呼叫 activator send...,是因為 "activator" 也是在 /usr/bin 底下)
(其實 "activator send..." 指令,第二串之後的文字都是 "activator" 執行檔所接收的參數,也就是 $1 $2 ...)
還可以搭配 SimulateTouch (另一個 cydia tweak),讓功能更上一層樓!
貌似是可以實現使用者的觸控螢幕操作喔喔喔~ +_+
可以參考一下這篇:https://github.com/FishPhd/ActivatorScripting
應該是還有更多強大的控制方法,如果有需要 or 有興趣的話,可以在自行查查看 (目前要用英文比較查得到相關文章)