在實現(xiàn)上,Clips 和原生的 app 使用一樣的方式。在 UI 框架上同時支持 UIKit 和 SwiftUI,有些開發(fā)者認為只能使用 SwiftUI 開發(fā),這點是錯誤的。Clips 的定位和 watch app、app extension 類似,和 app 在同一個 project 里,是一個單獨的 target。只是 Clips 并沒有自己的專屬 framework(其實有一個,但是主要包含的是一些特色 api),使用的框架和 app 一致,可以認為是一個精簡版的原生 App。
Clips 不能單獨發(fā)布,必須關(guān)聯(lián)一個 app。因此發(fā)布的流程和 app 和一樣的,在 apple connect 上創(chuàng)建一個版本,和 app 一起提交審核。和 app 在技術(shù)上的最大區(qū)別只是大小限制在 10MB 以內(nèi),因為 Clips 的基礎就是希望用戶可以最迅速的被用戶使用,如果體積大了就失去了產(chǎn)品的根本。
蘋果對 Clips 的使用場景非常明確:在一個特定的情境里,用戶可以快速的使用 app 的核心服務。是小程序內(nèi)味了!
坦率的說,很難說 Clips 的理念是蘋果原創(chuàng)的,在產(chǎn)品的定位上和微信小程序如出一轍。尤其是微信小程序在國內(nèi)已經(jīng)完全普及了,微信小程序初始發(fā)布的時候也被蘋果加了多條限制。其中一條就是小程序不能有虛擬商品支付功能?,F(xiàn)在回頭看蘋果自己的 Clips 可以完美支持 apple pay,很難說蘋果沒有私心。
Clips 使用一段 URL 標識自己,格式遵從 universal link。因為蘋果對 Clips 的使用場景非常明確,所以在 Clips 的調(diào)起方式做了嚴格限制。Clips 的調(diào)用只能是用戶主動要發(fā)起才能訪問,所以不存在用戶在某個 app 里不小心點了一個按鈕,就跳轉(zhuǎn)下載了 Clips。
Clips 的發(fā)起入口有以下幾種:
NFC 和二維碼的入口很容易理解,必須用戶主動拿出手機靠近 NFC、打開相機掃描。蘋果專屬的 Clips 碼生成工具在年底才會開放。
Safari 中發(fā)起和之前的 universal link 類似,在網(wǎng)站配置了關(guān)聯(lián)的 Clips 信息后,會有一個 banner 提示打開應用。
因為 Clips 提交 app store 審核的信息里也會配置好相關(guān)的 url,因此如果在 message 里發(fā)了 Clips 的鏈接,操作系統(tǒng)也會在應用里生成一個 Clips 的卡片,用戶如果需要可以主動點擊。
Siri 附近建議和蘋果地圖(在 connect 中可以配置 Clips 的地理位置)。場景和前面的二維碼類似,如果我在地圖上看到一個商家,商家有提供服務的 Clips,我可以在地圖或者 Siri 建議里直接打開 Clips。
再次總結(jié)一下 Clips 的入口限制:只能是用戶主動發(fā)起才能訪問。雖然 Clips 的入口是一段 universal link,在代碼里的處理方式也和 universal link 一致,但是為了 Clips 不被濫用,Clips 的調(diào)起只能是操作系統(tǒng)調(diào)起。App 沒有能力主動調(diào)起一個 Clips 程序。
因為 Clips 的大小被限制在了 10MB 以下,在當下的網(wǎng)絡狀態(tài)下,可以實現(xiàn)快速的打開。為了給用戶使用非常輕松的感覺,在 UI 上不會體現(xiàn)“安裝”這樣的字眼,而是直接“打開”。預期的場景下用戶打開 Clips 和打開一個網(wǎng)頁類似。因此在用戶的視角里就不存在軟件的安裝、卸載。
Clips 的生命周期由操作系統(tǒng)全權(quán)接管。如果 Clips 用戶一段時間后沒有使用,操作系統(tǒng)就會自動清除掉 Clips,Clips 里存儲的數(shù)據(jù)也會被一并清除。因此雖然 Clips 提供了存儲的能力,但是程序不應該依賴存儲的數(shù)據(jù),只能把存儲當做 cache 來使用,操作系統(tǒng)可能自動清除緩存的數(shù)據(jù)。
18 年正式發(fā)布的 Android Instant apps 和 Clips 在技術(shù)上是最接近的。Instant apps 中文被翻成“免安裝應用”,在體驗上也是希望用戶能夠最低成本的使用上 app,讓用戶感受不到安裝這個步驟。Instant apps 也可以通過 url 標識(deep link),如果在 chrome 里搜索到應用的網(wǎng)站,chrome 如果識別到域名下有關(guān)聯(lián)應用,可以直接“打開”。消息中的鏈接也可以被識別。只是 Instant apps 發(fā)布的早,國外用戶也沒有使用二維碼的習慣,所以入口上不支持二維碼、NFC。
兩者的根本區(qū)別還是在定位上,Instant apps 提出的場景是提供一個 app 的試用版。因此場景是你已經(jīng)到了 app 的下載頁面,這個時候如果一個 app 幾百兆你可能就放棄下載了,但是有一個極簡的試用版,就會提高你使用 app 的可能。這個場景在游戲 app 里尤其明顯,一方面高質(zhì)量的游戲 app 體積比較大。另一方面,如果是一個付費下載的應用,如果有一個免費的試用版,也可以增加用戶的下載可能。在蘋果生態(tài)里很多應用會提供一個受限的免費 lite 版本也是一樣的需求。
但是 Instant apps 在國內(nèi)沒有產(chǎn)生任何影響。因為政策的原因,Google Play 不支持在國內(nèi)市場使用。國內(nèi)的安卓應用市場也是魚龍混雜,對于 Instant apps 也估計也沒有統(tǒng)一支持。另外國內(nèi)的安卓生態(tài)也和歐美地區(qū)區(qū)別比較大,早期安卓市場上收費的應用很少,對于用戶而言需要試用免費 app 的場景很少。另外大廠也可能會推出專門的急速版應用,安裝后利用動態(tài)化技術(shù)下發(fā)代碼,應用體積也可以控制在 10 MB 以內(nèi)。
Clips 則是非常明確的面向線下提供服務的場景,在應用能力上可以接入 sign in with apple,apple pay。這樣一個全新的用戶,可以很快速的使用線下服務并且進行注冊、支付。用戶體驗會好的多。安卓因為國內(nèi)生態(tài)的原因,各個安卓廠商沒有統(tǒng)一的新用戶可以快速注冊的接口,也沒有統(tǒng)一的支付接口,很難提供相匹敵的體驗。如果開發(fā)者針對各個廠商單獨開發(fā),那成本上就不是“小程序”了。
Progressive Web App 是基于 web 的技術(shù)。在移動互聯(lián)網(wǎng)興起之后,大家的流量都轉(zhuǎn)移到了移動設備上。然而在移動上的 web 體驗并不好。于是 W3C 和谷歌就基于瀏覽器的能力,制定了一套協(xié)議,讓 web app 可以擁有更多的 native 能力。
PWA 不是特指某一項技術(shù),而是應用了多項技術(shù)的 Web App。其核心技術(shù)包括 App Manifest、Service Worker、Web Push。
PWA 相當于把小程序里的代碼直接下載到了本地,有了獨立的 app 入口。運行的時候基于瀏覽器的能力。但是對于用戶感受和原生 app 一樣。
我個人對 PWA 技術(shù)很有好感,它的初衷有著初代互聯(lián)網(wǎng)般的美好。希望底層有一套協(xié)議后,用戶體驗還是沒有邊界的互聯(lián)網(wǎng)。然而時代已經(jīng)變了。PWA 在中國基本上是涼了。
PWA 從出生就帶了硬傷,雖然谷歌希望有一套 web 標準可以運行在移動設備上,但是對于蘋果的商業(yè)策略而言,這并不重要。因此 PWA 的一個協(xié)議,從制定出來,再到移動設備(iOS)上支持這個特性,幾年就過去了。而且對于移動用戶而言,可以擁有一個美好的 web app 并不是他們的痛點。
總結(jié)起來 PWA 看著美好,但似乎更多是對于 web 開發(fā)者心中的美好愿景。在落實中遇到了很多現(xiàn)實的問題,技術(shù)支持的不好,開發(fā)者就更沒有動力在這個技術(shù)上做軟件生態(tài)了。
前面提過在產(chǎn)品理念上小程序和 Clips 很相似,甚至說不定 Clips 是受了小程序的啟發(fā)。在市場上,小程序是 Clips 的真正對手。
小程序基于微信的 app,Clips 基于操作系統(tǒng),因此在能力上 Clips 有優(yōu)勢。小程序的入口需要先打開微信,而 Clips 可以通過 NFC 靠近直接激活應用。對于開發(fā)者而言,Clips 可以直接獲得很多原生的能力(比如 push),如果用戶喜歡可以關(guān)聯(lián)下載自己的原生應用。在小程序中,微信出于商業(yè)原因開發(fā)者不能直接跳轉(zhuǎn)到自有 app,小程序的能力也依賴于微信提供的接口。
對于從 Clips 關(guān)聯(lián)主 app 蘋果還挺重視的,提供了幾個入口展示關(guān)聯(lián) app。
首先在 Clips 的展示頁就會顯示:
每次使用 Clips 時也會有一個短暫的浮層展示:
開發(fā)者也可以自己通過 SKOverlay 來展示:
不過如果開發(fā)者沒有自己的獨立 app,那么也就只能選擇小程序了。小程序發(fā)展到現(xiàn)在場景也比最早提出的線下服務更加多了,反而類似 Instant apps,更像一個輕量級的 app。
考慮到國內(nèi)很多小程序的廠商都沒有自己的獨立 app,因此 Clips 對于這部分群體也并沒有什么吸引力。不過對于線下服務類,尤其有支付場景的,Clips 在用戶體驗上會比小程序好一些。
總結(jié),Clips 的業(yè)務場景和小程序有一小部分是重疊的,小程序覆蓋的場景還是更多一些。兩者在大部分時候并不是互斥式的競爭關(guān)系,即便在一些場景下 Clips 有技術(shù)優(yōu)勢,商家也不會放棄小程序,因為還有安卓用戶嘛。還是看商家在某些場景里,是否愿意為用戶多提供一種更好的交互方式。
雖然 Clips 可以直接使用 iOS framework,但是因為 Clips 的使用場景是新用戶的初次、簡短、當下(in-the-moment experience)的使用,相比原生 app 蘋果還是進行了一些限制。
App 不能訪問用戶的隱私信息:
不過為了能夠提供給用戶更加輕便的體驗,通過專門為 Clips 設計了免申請的通知、定位權(quán)限。不過也有限制:免申請的通知只在 8 個小時內(nèi)有效。位置只能獲取一次。如果 app 需要重度使用這兩類權(quán)限就還是和原來一樣,可以彈窗申請。
某些高級應用能力也會受限,需要在完整的應用中才能使用:
總的而言雖然有一些限制,但是這些限制的出發(fā)點是希望開發(fā)者關(guān)注 Clips 的正確使用場景。對于 Clips 所提倡的使用場景里,蘋果提供的能力是完全夠用的。
可以建立一個共享 targets 的 Asset catalog 來共用圖片資源。
在 Clips 中申請的授權(quán),在下載完整應用后會被同步到應用中。
通過 App Group Container 來共享 Clips 和 app 的數(shù)據(jù)。
Clips 的 url 可以配置參數(shù):
在 App Store Connect 中還可以針對指定的參數(shù)配置不一樣的標題和圖片。比如一家連鎖咖啡店,可能不同的店你希望彈出的標題圖片是不一樣的,可以進行單獨的配置。
蘋果給定義的 Clips 的關(guān)鍵詞是:lightweight、native、fast、focused、in-the-moment experience。
Clips 在特定的線下場景里有著相當好的用戶體驗。對于已經(jīng)擁有獨立 app 的公司來說,開發(fā)一個 Clips 應用的成本并不高。我個人還是期待這樣一個好的技術(shù)可以被更多開發(fā)者接納,可以提供給用戶更好的體驗。對于小程序,Clips 的場景窄的多,兩者并不是直接競爭關(guān)系。我更愿意看做是特定場景下,對于小程序原生能力不足的一種補充。
本文轉(zhuǎn)載自《蘋果 App Clip 技術(shù)詳解 | 蘋果?App Clip 技術(shù)詳解》,版權(quán)歸原創(chuàng)者所有。
]]>萬事達(MasterCard)新型支付服務部門負責人Ed McLaughlin坐客Fast Company?與大家展望了未來信用卡服務的發(fā)展方向,在談及近場通訊技術(shù)時,他認為目前Android設備的NFC功能還不足以帶動用戶使用手機支付的熱潮,能夠擔此大任的還得靠iPhone。
他強調(diào):“目前所有手機生產(chǎn)商都在考慮為其產(chǎn)品搭配手機支付功能”,當問及蘋果什么時候會推出相應的iPhone時,Ed回答很含蓄,他只是說合作伙伴不允許他們泄露任何消息,所以不出意外,手機支付這塊肉蘋果是吃定的了。
]]>