自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS+PWA已來(lái),你來(lái)嗎?

移動(dòng)開發(fā)
隨著 iOS 11.3 的發(fā)布,蘋果悄悄的支持了 PWA 理念背后的幾種新技術(shù):Service Worker, Web App Manifest,那么讓我們來(lái)看一下它們是如何工作的,它們能做到什么,它們的挑戰(zhàn)是什么,以及如果你已經(jīng)發(fā)布過 PWA 應(yīng)用,那你還應(yīng)該知道什么。

隨著 iOS 11.3 的發(fā)布,蘋果悄悄的支持了 PWA 理念背后的幾種新技術(shù):Service Worker, Web App Manifest,那么讓我們來(lái)看一下它們是如何工作的,它們能做到什么,它們的挑戰(zhàn)是什么,以及如果你已經(jīng)發(fā)布過 PWA 應(yīng)用,那你還應(yīng)該知道什么。 

iOS+PWA已來(lái),你來(lái)嗎?

這是一個(gè)在 iPad 上的 PWA,它能全屏,能離線使用,還可以像 App Store 中其他原生應(yīng)用一樣固定在 Dock 中

 

如果你看到這篇文章之前還不知道什么是 PWA,我可以告訴你,它沒有一個(gè)唯一且準(zhǔn)確的定義,但我可以告訴你的是,它是一個(gè)用 Web 技術(shù)創(chuàng)建的 App,不用打包,不用簽名,可以離線工作,如果你愿意,還可以添加到桌面上,看起來(lái)就和其他應(yīng)用一樣。

在大多數(shù)平臺(tái)上,都不要求 PWA 必須從 App Store 中安裝,除了 Edge 瀏覽器和 Windows 10,它們要求 PWA 必須在它們的應(yīng)用商店中。

所以,你猜對(duì)了,你現(xiàn)在可以不用通過 App Store 在 iOS 上安裝應(yīng)用了。這可能就是為什么蘋果沒有直接提到這項(xiàng)新能力的原因之一,他們可能不想換休用戶,甚至在 Safari 的發(fā)布說明中都沒有提到這項(xiàng)技術(shù)。 

iOS+PWA已來(lái),你來(lái)嗎?

你可以看出它們的區(qū)別嗎?一個(gè)是原生 Google 地圖,一個(gè)是 PWA 版本

 

難道蘋果不是 PWA 的創(chuàng)造者嗎?

說實(shí)話,Google Chrome 團(tuán)隊(duì)創(chuàng)造了 PWA 這個(gè)屬于,但是這個(gè)項(xiàng)目最初是在原始 iPhone OS 的 Safari 上提出的,2007 年,史蒂夫喬布斯在 WWDC 上宣布 “one more thing”:如何在 原始 iPhone 上開發(fā)應(yīng)用程序,令人驚訝的是居然是 Web App。App Store 那時(shí)候根本不在最初的計(jì)劃中,并且在 iPhone 發(fā)布的***年,原生 SDK 還不能用。從蘋果的角度來(lái)看,即使在今天,PWA 也只是 “主屏幕上的 webapp”,圖標(biāo)也被成為 WebClip。

  • 如果你愿意,可以看一下我去年在 Fluent Conference 上的演講視頻,我在 10 分 50 秒的時(shí)候提到了這個(gè)事情。視頻鏈接地址:

https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Ftime_continue%3D651%26v%3DEFGltzFSK-c

11年前,這個(gè)想法并沒有得到太多的關(guān)注,蘋果也忘記了更新這個(gè)能力,所以有 10+ 年的時(shí)間,這個(gè)功能一直有缺陷并且不穩(wěn)定。隨后,幾年后,其他的平臺(tái)實(shí)現(xiàn)了這個(gè)想法,包括諾基亞 N9 上的 MeeGo 瀏覽器和 Android Chrome。

Chrome 幫助改善和實(shí)現(xiàn)這些技術(shù)來(lái)提供一個(gè)更好的體驗(yàn)給用戶,主要體現(xiàn)在 Service Worker 和 Web App Manifest 規(guī)范上。從今天(2018 年 3 月 30 日) iOS 11.3 版本,蘋果跟進(jìn) Chrome, Firefox, Samsung Internet, UC 瀏覽器 和 Opera 支持了這兩個(gè)奇數(shù)規(guī)范,Mac 版 Safari 也已經(jīng)支持了 Service Worker,并且 Web App Manifest 的支持今年也在進(jìn)行中。 

iOS+PWA已來(lái),你來(lái)嗎?

史蒂夫喬布斯正在 WWDC 2007 年的***款 iPhone 上演示 PWA(那個(gè)時(shí)候還不叫 PWA)

 

等等,所以這些應(yīng)用沒有通過 App Store 的質(zhì)量測(cè)試,對(duì)吧?

是的,你又猜對(duì)了。但是 PWA 目前只能在瀏覽器或其他 Web 平臺(tái)安全策略下運(yùn)行,這意味著你可以“發(fā)布”未在 App Store 中獲得批準(zhǔn)的應(yīng)用,例如貴公司員工的內(nèi)部應(yīng)用(也包括承認(rèn)內(nèi)容),但無(wú)法使用一些 Native 的 API,如 iPhone X 上的 Face ID,或者 ARKit 增強(qiáng)現(xiàn)實(shí),或者至少,你需要等待 Web 平臺(tái)支持這些新的 API。

PWA 可以在作為一個(gè)普通網(wǎng)站,或者 standalone 模式(沒有地址欄和 Safari 的其他功能)在Safari 中運(yùn)行,就像系統(tǒng)中的其他應(yīng)用程序一樣。

iOS 中 PWA 的能力

在 iOS 的 Web 平臺(tái)上您可以調(diào)用以下 API:

  • 地理信息定位
  • 傳感器(陀螺儀,加速度計(jì),磁力儀)
  • 相機(jī)
  • 音頻輸出
  • 語(yǔ)音合成(僅連接耳機(jī))
  • Apple Pay
  • WebAssembly, WebRTC, Web GL 以及許多實(shí)驗(yàn)性的特性

iOS+PWA已來(lái),你來(lái)嗎?

你能區(qū)分哪些是 PWA,哪些是原生應(yīng)用嗎?

 

和 iOS 原生應(yīng)用相比有哪些限制

PWA 只能存儲(chǔ)最多 50Mb 的離線數(shù)據(jù)和文件

  • 如果用戶幾周不使用 PWA,iOS 將釋放這些 PWA 緩存的文件,桌面圖標(biāo)當(dāng)然還在,用戶下次訪問的時(shí)候,會(huì)重新緩存文件
  • 無(wú)法應(yīng)用一些 Native API,如:藍(lán)牙、Touch ID、Face ID、ARKit、電池信息等
  • 無(wú)法在后臺(tái)執(zhí)行代碼
  • 無(wú)法訪問一些私密數(shù)據(jù),如:聯(lián)系人等,也無(wú)法訪問本地社交應(yīng)用
  • 無(wú)法訪問 In App Payments 和其他許多基于 Apple 的服務(wù)
  • 在 iPad 上,無(wú)法使用分屏和其他應(yīng)用程序共享屏幕,PWA 始終占滿整個(gè)屏幕
  • 沒有消息推送,沒有 Siri 集成 

iOS+PWA已來(lái),你來(lái)嗎?

如果你安裝了一個(gè)叫 Tinder 的 PWA,Siri 并不能找到它

 

哪些 在 Android 上可以,iOS 上不行的呢?

在 Android 上可以存儲(chǔ)找過 50Mb 的數(shù)據(jù)和文件

  • Android 不會(huì)在你很久不用這個(gè) PWA 的時(shí)候就把它的文件刪掉,但是它會(huì)在存儲(chǔ)空間不足的時(shí)刪除文件。如果用戶安裝并且使用很多的時(shí)候,PWA 可以使用***存儲(chǔ)
  • BLE 設(shè)備的藍(lán)牙訪問
  • Android上可以在 Web 中使用 Native 分享對(duì)話框,通過 Web Share API
  • 語(yǔ)音識(shí)別
  • 后臺(tái)同步和離線消息推送
  • 彈出安裝對(duì)話框提示和邀請(qǐng)用戶安裝 PWA
  • 你可以自定義(有限)PWA 啟動(dòng)畫面和決定 PWA 是豎屏還是橫屏
  • 在 WebAPK 和 Chrome 中,一個(gè) PWA 只能安裝一次
  • 在 WebAPK 和 Chrome 中,PWA 會(huì)出現(xiàn)在“設(shè)置“中,并且您可以看到數(shù)據(jù)使用量,在 iOS 中,所有內(nèi)容都包含在 Safari 中
  • 在 WebAPK 和 Chrome中,PWA 會(huì)捕獲你的 URL,如果是一個(gè) PWA 的鏈接,它將用獨(dú)立模式打開 PWA,而不會(huì)打開瀏覽器

哪些在 iOS 上可以,Android 下不行的呢?

  • 用戶可以在安裝前修改 PWA 的名字
  • 可以在配置文件中進(jìn)行修改,因此企業(yè)用戶可以從公司安裝 PWA(這是一個(gè)很好的點(diǎn)),Safari 管這個(gè)叫 WebClip(估計(jì)是沒有好好閱讀 Web App Manifest 的標(biāo)準(zhǔn)) 

iOS+PWA已來(lái),你來(lái)嗎?

配置文件包含 WebClips 和 PWA 圖標(biāo)

 

在 iOS 上怎么安裝 PWA 呢?

這是在 iOS 上重要的挑戰(zhàn)之一,因?yàn)?iOS Safari 沒有任何提示或者引導(dǎo)讓用戶添加 PWA,Android 下有一個(gè)叫 Web App Install Banners 的引導(dǎo)用戶,所以,用戶需要在 Safari 中先訪問你的站點(diǎn),然后手動(dòng)點(diǎn)擊分享(Share)圖標(biāo),然后點(diǎn)擊“添加到主屏幕”。整個(gè)過程中,沒有任何一點(diǎn)表現(xiàn)出來(lái)這是一個(gè) PWA。 

iOS+PWA已來(lái),你來(lái)嗎?

點(diǎn)擊分享之后,點(diǎn)擊添加到桌面按鈕,需要 Web App 本身對(duì)用戶進(jìn)行引導(dǎo),引導(dǎo)時(shí)請(qǐng)不要忘記當(dāng)前系統(tǒng)語(yǔ)言

 

從 App Store 安裝的其他瀏覽器,如 Chrome,F(xiàn)irefox,Brave 或者 Edge 都不能安裝 PWA,也不能使用 Service Worker。

完成安裝后,它看起來(lái)就像主屏幕上的其他圖標(biāo),雖然它不會(huì)有 3D Touch 菜單,如果您再次安裝相同的 PWA,擇會(huì)有另外一個(gè)同樣的圖標(biāo),指向相同的 PWA(比較幸運(yùn)的是,安裝的文件將被共享)。

此外,很多 Web App 都有一個(gè)比較顯眼的位置引導(dǎo)用戶從 App Store 下載安裝原生應(yīng)用,在 PWA 中也這樣顯示了,這其實(shí)對(duì)用戶體驗(yàn)是一個(gè)傷害,比如 Tinder: 

iOS+PWA已來(lái),你來(lái)嗎?

我已經(jīng)安裝了 PWA 了,不要試圖引導(dǎo)我下載 Native App

 

我已經(jīng)有 PWA 站點(diǎn) 了,iOS 用戶能馬上使用嗎?

在用戶升級(jí)到 iOS 11.3 之后,用戶就可以安裝您的 PWA 了,不需要給 iOS 額外的配置,每個(gè) PWA 都能安裝,但是這并不意味著一切都能和你想的一樣。 

iOS+PWA已來(lái),你來(lái)嗎?

Uber PWA 看起來(lái)真的很不錯(cuò),但是當(dāng)你點(diǎn)擊登錄或者繼續(xù)按鈕時(shí)候,授權(quán)頁(yè)面會(huì)打開 Safari,從而跳出了獨(dú)立運(yùn)行的 PWA

 

如果你正在閱讀這篇文章,你可能已經(jīng)在 iOS PWA 還在 beta 版的時(shí)候我發(fā)布的一篇文章《Cupertino,我們遇到麻煩了》,不好的消息是,在 beta 版期間遇到的大多數(shù)問題在 iOS 11.3 發(fā)布之后依然存在。 

iOS+PWA已來(lái),你來(lái)嗎?

如果你什么都不做,你的 PWA 頂部將會(huì)有來(lái)能重疊的黑色 bar,看不見時(shí)間,電池,其他信,狀態(tài)欄

 

什么不能正常工作呢?

  • 顯示問題:fullscreen 和 minimal-ui 兩種模式在 iOS 上不支持,fullscreen 和 standalone 模式一樣,而 minimal-ui 模式只是一個(gè) Safari 的快捷方式。但是你可以通過使用 cover-fit 或者已經(jīng)棄用的私有 meta 標(biāo)簽來(lái)達(dá)到類似的 fullscreen 效果(狀態(tài)欄會(huì)處在,但是會(huì)覆蓋在你的 app 上)
  • 后臺(tái)同步(background sync)還不支持
  • 無(wú)法鎖定 PWA 的方向,橫屏還是豎屏
  • theme-color 屬性不起作用,無(wú)法修改狀態(tài)欄的顏色,你可以通過使用已經(jīng)棄用的私有 meta 標(biāo)簽來(lái)設(shè)置黑色或者白色的狀態(tài)欄,也可以使用 CSS/HTML 來(lái)模擬 theme-color 

iOS+PWA已來(lái),你來(lái)嗎?

星巴克 PWA 在注冊(cè)頁(yè)面沒有返回按鈕,沒辦法取消當(dāng)前注冊(cè)流程,你需要重啟 PWA

 

  • 如果你的 PWA 沒有后退手勢(shì)或者返回按鈕,用戶將無(wú)法在頁(yè)面間切換
  • iOS 不支持透明圖標(biāo),所以一定要注意 

iOS+PWA已來(lái),你來(lái)嗎?

Google Keep PWA 只在 Web App Manifest 設(shè)置了圖標(biāo),所以添加到桌面上的圖標(biāo)是當(dāng)前的截屏,你需要設(shè)置 Safari 的私有屬性來(lái)定制圖標(biāo)

 

  • 在 iOS 中,無(wú)法使用 manifest.json 文件中的圖標(biāo),但是可以使用 app-touch-icon link 標(biāo)簽設(shè)置的圖標(biāo),如果你沒有提供這個(gè) link 標(biāo)簽,Safari 將會(huì)使用屏幕截圖作為 icon,可以看上面的 Google Keep PWA 的例子
  • 沒有啟動(dòng)畫面,所以 Web App Manifest 中的大多數(shù)顏色屬性都會(huì)被忽略
  • 不會(huì)有任何和 manifest 相關(guān)的事件被觸發(fā),因此你無(wú)法通過事件來(lái)判斷用戶是否安裝,但可以通過 navigator.standalone 來(lái)判斷是否是在 standalone 模式下運(yùn)行

要記住什么?

  • PWA 無(wú)法在會(huì)話之間保持狀態(tài),如果用戶切出 PWA 到另外一個(gè)應(yīng)用,它將在切回來(lái)的時(shí)候重新啟動(dòng),因此如果你需要用戶驗(yàn)證郵箱,短信或者需要調(diào)到另外一個(gè) App 來(lái)驗(yàn)證的需求,請(qǐng)重新考慮另一種實(shí)現(xiàn)方式

iOS+PWA已來(lái),你來(lái)嗎? 

iOS+PWA已來(lái),你來(lái)嗎?
所有沒激活的 PWA 都是白屏,無(wú)論它們之前是不是,記住,它們沒在運(yùn)行,并且如果你切回 PWA,它將重新啟動(dòng)在 iPad 上有同樣的白屏問題

  • 在背后的 PWA 沒有截屏縮略信息,它們看起來(lái)都白的,這點(diǎn)很遺憾
  • 當(dāng)你的 app 在 standalone 模式下運(yùn)行的時(shí)候,可能會(huì)有 bug,不要用只 Safari 來(lái)測(cè)試你的 PWA 

iOS+PWA已來(lái),你來(lái)嗎?

NASA 的 PWA 有一些體驗(yàn)上的問題

 

  • 如果你想讓你的 PWA 利用 iPhone X 的缺口區(qū)域,需要用 HTML/CSS 進(jìn)行特殊處理,如果做的不好,就會(huì)看起來(lái)很奇怪
  • 有時(shí)候,你添加到主屏的時(shí)候沒有 manifest 文件,添加的就只是一個(gè)快捷方式 

iOS+PWA已來(lái),你來(lái)嗎?

星巴克的商標(biāo)在 Google 地圖中?其實(shí)不是,只是連續(xù)使用多個(gè) PWA 時(shí),iOS 會(huì)有一些奇怪的 bug,PWA 加載了錯(cuò)誤的 URL

 

  • Safari 和添加到主屏的 PWA 共享相同的 Service Worker Registration(不是 Service Worker 實(shí)例) 和緩存的文件,Safari View Controller(比如 Twitter 的應(yīng)用內(nèi)置瀏覽器)也支持 Service Worker 和 Cache API,但是似乎在會(huì)話關(guān)閉后會(huì)刪除所有數(shù)據(jù)
  • 所有第三方瀏覽器(Chrome、Firefox 等)和所有使用 WebView 的應(yīng)用(Facebook 的應(yīng)用程序內(nèi)瀏覽器等)都不支持 Service Worker,我的猜測(cè)是,WKWebView 可能u需要一個(gè) API 來(lái)讓應(yīng)用程序開發(fā)人員來(lái)決定如何使用 Service Worker,但是…誰(shuí)知道呢 

iOS+PWA已來(lái),你來(lái)嗎?

使用 Safari TP,你可以調(diào)試 Safari 和主屏上的 PWA,可以調(diào)試 Service Worker,也能捕獲網(wǎng)絡(luò)請(qǐng)求

 

  • 要在 iOS 上調(diào)試 Service Worker,你需要安裝 Safari 技術(shù)預(yù)覽版或者 Safari 11.1 

iOS+PWA已來(lái),你來(lái)嗎?

Service Worker 的調(diào)試工具還在實(shí)驗(yàn)階段,例如,暫時(shí)還看不到 CacheStorage 中的內(nèi)容

 

iOS+PWA已來(lái),你來(lái)嗎?

  • Service Worker 可以被禁用,可以通過 設(shè)置->實(shí)驗(yàn)特性(默認(rèn)情況下是開啟的) 

iOS+PWA已來(lái),你來(lái)嗎?

這個(gè)空白的應(yīng)用是什么?

 

  • 有的時(shí)候,你同時(shí)打開了很多的 PWA,iOS 任務(wù)欄就會(huì)很奇怪,顯示了一個(gè)沒有圖標(biāo)和標(biāo)題的幽靈應(yīng)用

如果你發(fā)現(xiàn)了任何 iOS 上 PWA 的其他 bug,請(qǐng)?jiān)谙路皆u(píng)論,我會(huì)整理一份錯(cuò)誤報(bào)告交給 WebKit 團(tuán)度,如果你想獲得關(guān)于這篇文章的***消息,也請(qǐng)?jiān)?Twitter 關(guān)注我 @firt,如果您 6 月份在灣區(qū),請(qǐng)看我將教授的手把手學(xué)會(huì) PWA 培訓(xùn),我們將創(chuàng)建一個(gè) PWA,涵蓋大多數(shù)人在其他平臺(tái)上都缺少的內(nèi)容,也包活如何在 iOS 平臺(tái)上生存下來(lái)。

如果你發(fā)現(xiàn)了任何 iOS 上 PWA 的其他 bug,請(qǐng)?jiān)谙路皆u(píng)論,我會(huì)整理一份錯(cuò)誤報(bào)告交給 WebKit 團(tuán)隊(duì),如果你想獲得關(guān)于這篇文章的***消息,也請(qǐng)?jiān)?Twitter 關(guān)注我 @firt,如果您 6 月份在灣區(qū),請(qǐng)看我將教授的手把手學(xué)會(huì) PWA 培訓(xùn),我們將創(chuàng)建一個(gè) PWA,涵蓋大多數(shù)人在其他平臺(tái)上都缺少的內(nèi)容,也包活如何在 iOS 平臺(tái)上生存下來(lái)。

責(zé)任編輯:未麗燕 來(lái)源: OpenWeb開發(fā)者
相關(guān)推薦

2018-10-25 10:53:01

Java特性數(shù)據(jù)

2021-12-30 09:39:28

Android 12App開發(fā)者

2019-09-03 14:53:11

醫(yī)療機(jī)器人智慧醫(yī)療

2014-11-26 16:50:37

2019-04-18 15:32:45

Serverless騰訊云TVP

2019-08-23 18:40:54

機(jī)器人人工智能

2024-08-26 15:17:16

2015-08-24 09:59:19

dt

2018-01-03 12:23:15

云計(jì)算邊緣計(jì)算

2018-01-16 20:14:37

OpenPOWERAIIBM

2019-06-30 18:53:13

KubeConCNCFLinux

2015-10-19 13:16:57

能源互聯(lián)網(wǎng)

2014-05-21 16:03:45

敏捷網(wǎng)絡(luò)華為

2020-02-11 13:05:42

Wi-Fi 65GWi-Fi

2023-09-26 11:45:45

2021-02-06 09:44:35

存儲(chǔ)

2020-07-30 16:00:50

新冠疫情人工智能AI

2022-02-15 20:08:41

JDKJavaWindows

2020-12-09 10:34:51

htopLinux命令

2022-11-21 10:28:13

FlutterPython
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)