2019年10月13日 星期日

以 iOS 13 捷徑自動化達成限制式多工


哎呀~幾日不見,甚是想念,我是 Chris~(有人知道這是哪個科技媒體的開場白嗎?科科) 前幾週忙著論文口試、上傳論文及準備工作的面試資料。坦白說一直很想好好休個假,但可惜的是直到昨天下午都還有一場面試 (是的,某些地方週六也在上班),所以就聊點輕鬆的東西吧!

"捷徑" (Shortcut) 對我來說是 iOS 豈今為止最有用且最好玩的 App,我不只一次在本站分享我寫的捷徑,對於捷徑功能的探索也花了不少時間。我在 "如何將捷徑 (Shortcut) 備份匯入至舊版 Workflow 裡?" 一文中提到捷徑缺乏背景執行 (多工) 的能力,而 iOS 13 實現的多工可分為三種情況,我在這篇文章中不會分享我寫的新捷徑,就單純講一些我在測試時發現的功能特性。


時間地點開啟


這個是最直覺、用戶也期待已久的功能,之前還有個網友在舊版的捷徑中利用種種方法讓捷徑不在背景死掉,以達到類似的效果,詳情請見 Cronios (Crontab on iOS)。不過我個人是絕對不建議任何人去用這種東西,因為它太臃腫了 (上千個動作),而且效能低又特別耗電。我個人是用捷徑 App 的 URL scheme 去執行任意我想要排程的捷徑,並丟入 "提醒事項" 排程,除了不能自動執行,其他的一切都比 Cronios 的暴力背景常駐要好得多。

iOS 12: Shortcut URL + Reminder

iOS 13: Automation

如今,在 iOS 13 的系統支援下,已經不需要上述的方法了,而且還比 "提醒事項" 支援的觸發條件多了一點。比如說鬧鐘的自動化觸發就很有意思,是因為老美也常賴床,所以做了一個賴床結束後才會觸發的自動化條件嗎?呵呵。


特定條件開啟


這部份就是全新的功能了,以前的 "提醒事項" 並不支援時間地點以外的觸發條件,而事實證明只有時間地點是遠遠不夠的。iOS 13 捷徑的自動化條件新增了諸如飛航模式、WiFi、藍芽等觸發方式 (iPhone XR 以上機種還支援 NFC,我的 6s 沒有此選項),這讓捷徑的應用範圍有了非常大的增長,而且由於介面設計得非常清楚又有範例,所以就算是電腦小白都能輕易使用。

簡單舉幾個我認為很實際的應用:1. 設定連上某名稱的 WiFi 就觸發,由於 WiFi 的地域特性,依照網路配置的範圍大小,對於地點的觸發更有彈性;2. 連上某藍芽裝置就觸發,iPad OS 可以用此快速開啟滑鼠的輔助圓點;3. 設定開啟飛航模式、勿擾模式或低電量模式後觸發更改其他的設定,比如說調音量、調亮度、關 WiFi 等等。更好玩的是,這些觸發條件是可以串連的,例如我可以在開啟勿擾模式後觸發一些動作,其中包含開啟飛航模式,然後經由開啟飛航模式會被觸發的捷徑動作也會被觸發,等到觸發條件越來越多之後,捷徑自動化的彈性可以大到難以想像。


在這裡我要特別提一下 "Open App" 的觸發條件,這個排在末位的選項看似不起眼,但實則解決了很多舊版捷徑不能實現的功能。上圖是一個例子,過去如果我要把多個網頁在 Firefox 中開啟,基本上是做不到的 (網上傳言 Firefox 支援 x-callback-url,但我真的找不到其說明文件),因為 Firefox 的 URL scheme 一次只能開啟一個網頁,而一旦跳轉到 Firefox 內,捷徑就停止了,必須要切換回捷徑 App,下一個網頁才會繼續載入 (也就是再自動跳去 Firefox 一次)。同樣的情況在 Chrome 裡也一樣,Chrome 支援的捷徑動作有兩個,其中開啟網頁的是 "Open URLs in Chrome",搞笑的是雖然名字內的 "URLs" 是複數形,但是它不會批量開啟,而是跳出一個選單問我們要連哪一個網站,所以要多開還是沒辦法,只能用 repeat 一個一個輸入,但就面臨跟 Firefox 一樣的狀況 (Safari?直接餵給它一個 list,它就會批次全部開啟了)。

現在有了 "Open App" 的觸發條件,捷徑可以在任一個 App 的背景執行,並且由於當前的 App 可以是你要驅動的第三方 App,所以就能一次執行好幾個動作囉!(當然,如果在第三方 App 中你又 "用捷徑" 跳到另一個 App,後續的動作還是不會執行,但自己手動切換 App 就沒關係) 我這裡只用第三方瀏覽器舉例,如果你想操控的第三方 App 有支援別種捷徑動作或 URL scheme,而過去每執行一種都會跳出捷徑 App 而使得動作不能連續,"Open App" 的觸發條件應該能讓你愛不釋手。

對了,三個溫馨提示:1. 記得勾選 "Ask Before Running" 的選項,不然每次啟動該 App 都會自動執行捷徑是很煩人的;2. 勿擾模式會讓執行捷徑的推播出不來,要到鎖屏畫面才看得到,但若開啟 "Don't Ask Before Running" 就沒差。坦白說這是很蠢的設計,難道蘋果每次都在吹噓的深度學習 AI 分辨不出使用者當時是否在使用手機嗎?3. 這類自動化的捷徑有容量限制,下面我會聊到。


多捷徑背景執行

啊哈!這個很簡單,答案就是不行。一般來說捷徑都不會執行太久,所以沒有 "真正" 的捷徑多工其實也沒什麼關係。我很無聊地試著讓捷徑在背景做加法,每次加一、一次一秒、連續加一百次,捷徑能很好的完成任務 (過去的捷徑及一般 iOS App,在背景大概只能活三十秒左右),但是此時若要以自動化觸發其他捷徑則不會執行,而手動在前景執行的捷徑是沒問題的。



新版捷徑的一些缺點

捷徑的自動化設定及對第三方 App 動作的改進 (現在第三方 App 的捷徑動作在運行完後可以回傳數據給捷徑 App,以當作其他動作的輸入值) 是本次改版的重點,也是非常有誠意的升級,但捷徑 App 依然還是有著最多 bug 的 iOS 內建 App,而且由於設計上的缺失,新的功能也挖了新的坑,以下我來列舉幾個我遇到但無解的問題:

1. 不能自行備份
自動化的捷徑完全沒有自行備份的方法 [1],連分享也不行,所以只能自己用了,並靠著 iCloud 備份。我承認自動化的捷徑是非常個人化的東西,但不能保證沒人想用我的自動化方案啊!可能有人想說:「那我就把寫好的捷徑放在 My Shortcuts 裡,然後設定自動化時用 Run Shortcut 去跑該捷徑就好啦!」呵呵,理想很豐滿,現實很骨感,請繼續往下看。

2. 自動化捷徑與捷徑 App 之間的溝通 (communication) 問題


如果你捷徑用得多了,可能會看到這些錯誤訊息,以前沒發生過,僅有自動化捷徑會遇到。簡單地說都是溝通問題,我猜蘋果對於自動化捷徑的資源分配是有限制的,所以捷徑的 "限制式" 多工不僅在功能上有限制,連資源調用都有限制。有興趣的人可以試試看,給一個比較複雜的捷徑設定自動化,不管是用 Run Shortcut 去跑或是直接放入一堆動作,結果大多是看到 XPC connection 錯誤,這個錯誤訊息不限於捷徑,很多 macOS 及 iOS 的開發者都有看過,總而言之對於捷徑用戶就是無解的問題,只能盡量精簡自動化捷徑來避開了。我猜是蘋果不想讓捷徑佔用太多背景資源,所以才做了這些限制。蘋果一直致力於讓捷徑 "簡單化",除了更容易使用,也希望用戶做的捷徑都 "很簡單",這樣才不會傷害到 App store 的收益啊!說白一點,蘋果為捷徑做的更新都是為了小白用戶,只在特定條件下觸發個簡單動作,讓生活方便一點即可,要做更多事請用 App,別深挖捷徑的功能去氣自己。所以,我在前幾段提到的多重開啟 Firefox 網頁的捷徑 (Moring News) 其實不能直接用 Run Shortcut 去跑,因為裡面包含一個簡短的爬蟲腳本 (已經簡單到不像爬蟲了還是 XPC connection 錯誤),所以最後我是分開來寫:


先跑個一般的捷徑,並將得到的連結 list (上圖的變數 "Links") 存在剪貼板中,之後以捷徑開啟 Firefox,在其內觸發一個 "簡單" 的捷徑讀出剪貼板裡的連結且依序開啟,這樣就可以達到網頁多開的效果。以上給大家作個參考,如果遇到 XPC conncetion 問題也可以用這類方法去分擔自動化捷徑的工作。


至於 communication timeout 是怎麼回事?其實就是捷徑在運行時因為某種原因卡住跑不了,所以到了等待時間的上限後就跳出這樣的錯誤訊息。我遇到此問題的場景大多是使用 Run Shortcut 動作的時候,有些捷徑可以關閉 Show While Running 來跑,有的則不行,各位可以自己試試看。

3. 捷徑不能任意地 "Add to Siri"


去年開始蘋果一直努力地拉攏第三方 App 支援捷徑 (其實也算是威脅,不支援不給上架),又利用機器學習不斷地收集大數據以推送 "Siri Suggestion" 的捷徑。我不知道有多少人會用那些捷徑,各位可以回想一下,那些捷徑是不是都是一些功能單一且沒有輸入輸出的簡單動作?比如說我常跟賴小姐用 LINE 打電話,所以 Siri 就推 LINE "Call 賴 XX" 的捷徑給我。我承認這確實能補足一些第三方 App 的捷徑支援,但是這些捷徑基本上跟其他動作都沒有交互能力,所以只像一個開關而已,那我打開 App 直接用不就好了?至於第三方 App 會認真把功能細分出來以支援捷徑的更是鳳毛麟角 (我知道有,但大多是付費軟體),而所謂的第三方 App 裡的 "Add to Siri" 按鈕大多提供的也是像 Siri Suggestion 搞出來的低能開關,看來蘋果真的很致力於讓捷徑的使用場景簡單化。此外,蘋果還以安全性為由,在捷徑的設定頁面中偷偷地加了一個選項,如果不手動開啟就不能安裝非 Shortcut Gallery 的捷徑唷~要不要臉?你那 Gallery 裡的簡單捷徑根本都沒啥用啊!


那麼,為何我說 "不能任意 Add to Siri"?因為除了以 Siri Suggestion 新增捷徑及第三方 App 上提供的 "Add to Siri" 按鈕之外,沒有其他的方法可以 "Add to Siri",也就是說自己寫的捷徑已經找不到 "Add to Siri" 的錄音管道了。所以要怎麼用 Siri 啟動自己寫的捷徑?很簡單,直接說捷徑的名字!拜託一下,我用英文命名捷徑不代表我也要用英文去喚醒它啊!Siri 對於口音是很敏感的,所以除非我將我的捷徑改成中文名,不然就很難以 Siri 執行了,真是好棒棒。這種智障行為果然也引來老外的不滿,真不知道是哪個傢伙拍板決定的。

4. 一堆以前沒有的 Bug
iOS 13 的新版捷徑不僅有新 bug,還有一些舊功能被做爛了。比如說穩定度不佳,有時對操作無響應;捷徑設定中的 Show in Widget 關掉了還會再自動開啟,即使它確實關了。


另外,現在 Widget 裡不能使用打開 URL 的動作,因為它會傻傻地在 Widget 裡面載入,不會跳到瀏覽器,然後就失敗了,以前可沒有這種 bug。總而言之,除非真的很需要捷徑自動化的功能,不然目前的新版捷徑真是一場災難,我感覺我失去的比得到的還多 ....

以上是我目前對 iOS 13 捷徑的使用心得,有問題或意見請在下面留言,謝謝各位~



附註
1. 我寫的 Shortcut Backup 在匯入 (import) 功能方面與 iOS 13 捷徑 App 不相容,我會儘快更新 (無法更新,這是新版捷徑的限制,已不支援非 iCloud link 的匯入,所以未上傳到 iCloud 的捷徑備份檔都已經成為廢物,這在測試版時已經如此,華語圈鮮少有人提及,但老外很不爽。砍掉匯入功能也不增加軟體內部的管理能力,連個資料夾都沒有,腐敗及鴨霸就是現在的蘋果)。

沒有留言:

張貼留言