2013年5月1日 星期三

水土不服的 Google Now for iOS


老實說 .... 我並不喜歡對同一個技術寫兩篇以上的文章,除非在兩篇文章期間它真的有很大的進步,不然我不認為花這種時間是值得的。不過,Google Now 昨天登陸 iOS (依附在原先的 Google Search App 裡),立刻吸引不少人的目光,加上 Apple 最近股價的低迷,所以類似 "Siri 殺手" 的言論又跑出來了 ..... @#$% 我建議搞不清楚 Google Now 在幹麼的人可以先看我這篇舊文 -- "Siri v.s. ...? Don't miss the point !",看完之後再接下去看這篇文章。


Google Now 是什麼?


既然要談一門技術服務,還是再重複簡介一下吧~簡單地說,Google Now 的中文譯名是 "Google 即時資訊",它的目標是 "自動化",依照你的習慣、你設定的行事曆、你常去的地方 .... 等等,"自動地" 提供給你適當的資訊,比如說該地天氣、路況或提醒你即將有場約會等等,非常方便且貼心。

不過,由於這一切都是自動化的,反而讓我有些疑問:"如何直接要它幫我做事?" 我並不是故意要拿它跟 Siri 比,而是 "給它指示" 本來就是最符合人性的,不然它所標榜的 "自動化" 要經過一段時間的學習,他 X 的是要等多久?"直接下指令" 及 "智慧型學習" 本身是不互斥的,但 Google Now 只做了後者,而且 ..... 我還看不出它有多 "智慧",或許也沒有機會看到,這個我後面再說。


如上圖,我點擊左邊的輸入框,發現 Google Now 還是只會搜尋 .....@#$%.... 根本沒有跟 Google Calender 整合地很好,我不能直接透過它用語音加入行程,就連設定選單也只是隱私設定,根本做不了什麼有用的事,再加上目前本地端的支援度本來就不夠好,說實話,真的很弱,做事做一半可能比沒做還糟。


"iOS 平台" 的 Google Now


如果上一段已經讓你打消了使用 Google Now for iOS 的念頭,那這一段更會讓你覺得這一切都是 Google 的陰謀。

大家應該都知道 iOS 不是一般的作業系統,它是 "行動設備" 專用的系統,那行動設備最在意的是什麼呢?就是效能及續航力!前者是見仁見智,所以我們來討論後者吧!iOS 的多工策略非常龜毛舉世聞名,但一切的一切都是為了續航力,故只讓某些特定的服務可以在背景執行,並且嚴格不允許開發者濫用。顯而易見地,Google Now 正是一種 "不在背景運行就是垃圾" 的功能,我相信只有白癡才會整天開著 Google Search App,然後等著它的卡片推送進來,一定都是邊用其他的 App 做事,或是鎖屏擺在一旁,等著 Google Now 的卡片自動推送進來,此時採用何種多工策略就很重要了。


講到 "推送",大家一定會想到 "推播" (Push Notification) 服務,然後每個 Google Now for iOS 的報導都說它不支援推播,這是怎麼回事呢?很簡單,因為 Google Now 根本不能用推播,在推播底下的它不是半殘,而是全殘!

大致解釋一下 iOS "Push Notification" 的運作原理,在 iOS 中,由於續航力的考量,App 只要被退到背景或是被關閉,預設是完全凍結的,不僅停止運作,任何對外的連線 (像是 WiFi、Cellular 網路、Bluetooth、GPS 定位) 也都暫停下來,只有少數系統預裝的 App 及使用多工 API 的特定第三方 App 能夠倖免。所謂的 "推播",就是該 App 跟 iOS 系統登記一下,如果該 App 的遠端伺服器有傳送訊息給 Apple 的推播服務伺服器,記得要 "通知" 一下它,而這個 "通知" 就是你收到的推播訊息。

看到這裡明眼人應該都懂了,支援推播的 App 並不需要在背景運行,甚至沒有被開啟也無所謂,故它們只能被動地接受外來的訊息,比如說某人 "用 Line 傳訊息給你" 就是用推播,而此舉必須要傳送的一方 "主動地" 指定 "目標",這個推播動作才會成立。可是 Google Now 不能這樣搞,因為它必須要知道你身在何處,並以此資訊去推送適當的訊息 (卡片) 給你;換言之,Google Now 本身欠缺 "主動的傳送方",必須時時刻刻收取你位置資訊的反饋,以此作為傳訊的開端,沒有開端就沒有後續的傳送,所以它根本不能用推播。

那麼,Google Now 是怎麼克服這一點的呢?很簡單,就用 "Background location API" 時時刻刻維持 GPS 位置的連線即可,看到這裡有沒有想罵髒話?因為 GPS 定位可是手機續航力殺手的第一名呢~不過,儘管如此,如果 Google Now 在背景運作時,能持續透過文字訊息提供有用的資訊給我,或是引導我去 App 裡看卡片,就像 Skype 那樣 [1],那我還是會接受它,但很遺憾也很詭異地是 ..... 它只要一退到背景就完全 "死" 了,什麼都不會推送出來,留下的只有持續耗電的 GPS 定位。


Apple 的解決之道


當然,像 Google Now 這樣必須 "持續定位" 的需求,Apple 也不是沒有遇到,比如說 iOS 5 的 Reminder 就有一個功能 -- "在我離開 / 到達時通知我",這豈不是要時時刻刻關注你的地理位置?而 Apple 的解決方法是 -- 運用 "地理柵欄" (Geo-fence) 來解決。

"地理柵欄" 是什麼呢?簡單的說就是運用地理定位功能定出一個虛擬的邊界,以便查閱邊界以內的相關資訊,很多旅遊 App 都有用到此功能,相信大家都用過;另外一點是,當 "離開或進入" 該邊界時,觸發某些事件的發生。不過,若僅只於此,其實沒有解決任何事情,因為你還是要時時刻刻追蹤地理位置啊,耗電量根本沒有改變。但 Apple 厲害的地方就在於,同樣的技術,它就是設計得很巧妙!


如上圖,這是我今天下午有事出門,並順便測試 Reminder 的通知設定,當時完全沒連上網路,單單倚靠 iPhone 的 GPS 給了我一個不知正確與否的地理定位 (上圖左),然後有趣的事情來了,只要將 Reminder 擺著不動幾分鐘,或是將它退到背景,右上角的定位記號就會變成空心的 (上圖右),這是什麼意思呢?就是此時 GPS 完全不運作了,故不會多耗電。

GPS 不運作?!那怎麼知道你現在的位置呢?很簡單,就用 WiFi 啊!瞧瞧上上一張圖,iOS 的 "定位服務" 裡清清楚楚地寫著,iOS 的定位是來自於兩個部分 -- GPS 及 WiFi,既然 GPS 太耗電,那就用 WiFi 來定位。使用 WiFi 有什麼好處呢?
  1. 本身的耗電量比較低
  2. 就算沒有可用的基地台,也不會瘋狂搜尋連線,一直連不上就會停下來
  3. 不需連上可用的基地台,也可藉由讀取該基地台的 Mac 位置或 IP 位置,得知大概的地理位置 
乍看之下,使用 WiFi 只能算是 "奇招",因為 WiFi 的定位根本就不準,可是這個方法就是巧妙在這裡 -- 它根本不需要準,它只要知道你 "離開" 或 "進入" 某地即可!也就是說,我管你的位置在哪,反正有改變就行了!因此兼顧續航力的位置服務就此誕生,酷吧?[2] 而且更厲害的是,就算完全沒連上任何一個可用的 WiFi 基地台 (因為不知道密碼),也沒開 Cellular 電信網路 (如 3G),整個機子都不能上網也沒關係,這個服務是自身觸發的,用的是完全不用網路連線的 "Local Notification",因此時常沒網路用的 WiFi only 版 iPad 也可以用得很開心。


Google Now for iOS 還是有救的


然而,看完 Apple 的解決方法,對 Google Now 還是沒用,因為它確實需要用戶精確的地理位置,因此在背景持續 GPS 定位是免不了的,而 Google 也知道 GPS 定位很耗電,故特別聲明他們有最佳化地理定位的效率 (如上圖)。

的確,在我實際試用的時候,相較於用地圖導航 "一分鐘就減少 1% 電量" 的囧境,Google Now 的確不是非常耗電,真要說的話大概跟純開 3G 網路差不多,可是根本問題還是沒解決,退到背景是掛點是怎樣?Google 若想在 iOS 上推廣 Google Now,首要任務就是做好 "文字訊息" 與 "Google Now 卡片" 之間的連結與互換,因為 iOS 只接受文字訊息的背景推送,若不做好推播 (其實這也算推播,只是 App 有即時在運作),在 iOS 上就是死路一條。希望 Google 能趕快修正目前的荒唐行為,不然就算 Google Now 再聰明、再貼心,沒人用它也學不到東西,永遠都是一樣笨。

老實說,我還是覺得 Google Now 太過理想化了,未來會不會被 Google 收掉也很難說。

============

題外話,對於沒使用桌面版 Chrome 的人,好像越來越沒理由使用 Chrome for iOS 了,因為同步書籤的功能用不到,而且骨子裡都是 Webkit,直接用 Google Search App 不就好了?



附註
1. 是的,Skype for iOS 是不支援推播的,我也是近期跟網友討論時才發現。Skype 會在背景持續連線,若有人傳訊給你則會以推播的方式呈現,所以很多人都不知道這個事實,但大家可以試試看,如果你將它完全關閉,就再也收不到別人傳來的訊息了~
2. 不過 iOS 的定位完全跟 Cellular 電信網路無關喔,如果關閉 WiFi,Cellular 數據網路開再久也是沒用的。其中的原因我並不清楚,或許是 Cellular 網路太耗電?還是電信商不願提供牽涉隱私問題的位置資料?總之,iOS 不用 Cellular 網路作地理定位,頂多只是輔助。

4 則留言:

  1. 你對ios運作很了解 這樣又讓我上了一課

    回覆刪除
  2. 不管是WLM或SKYPE在iOS都不支援推播...
    所以漏訊息一直發生...我就放棄使用它了

    回覆刪除
  3. 請問ios下 要如何使用google+好友定位?
    我有開位置分享 但始終停在好幾天前的位置.該如何解決?

    回覆刪除
    回覆
    1. 不好意思,我幾乎不使用 Google+,根本沒裝過它的 App,所以無法回答喔 ~

      刪除