關於 Web 應用在 LINE app 的限制(Android、iOS)

最近因為開發 LINE 手機端的網頁應用,對於 LINE in-app browser 在手機雙平台(Android、iOS)中不一致的設定有些小小心得,為避免以後又踩同樣的坑,整理如下。
本文部分內容不限於 LINE in-app browser,在其他瀏覽器可能也有該狀況。
本文內容僅考慮一般網頁的狀況下,並未使用 LINE 推出的 LIFF 及其瀏覽器。
Android/iOS 雙系統
- LINE in-app browser 無法使用 JavaScript 關閉視窗。
Android 系統
關於上傳/下載檔案:
在 LINE in-app browser 下,file 類型的 input 標籤內不可包含 accept 屬性,否則會發生無法選取檔案的狀況。
在 LINE in-app browser 透過 file 類型的 input 標籤選取多個檔案時,似乎是 LINE in-app browser 的限制導致無法多選檔案,也就是說,每次僅能選取一個檔案。(若要一次上傳多個檔案,就要實作 append 的檔案選取方式,請使用者分次選取多個檔案)
透過 file 類型的 input 標籤選取待上傳的檔案時,若在 Android 檔案管理器選擇雲端空間(例如:Google Drive、OneDrive等等)的檔案後,可能會發生無法上傳的問題。 (似乎所有瀏覽器都有此狀況,而不限於 LINE in-app browser)
若有安裝 ES 檔案瀏覽器,在 LINE in-app browser 下載檔案可能會失敗。
若要讓 LINE 的使用者點擊連結後強制使用外部瀏覽器開啟,可以在網址後方加上「openExternalBrowser=1 」的 Query String 參數。(大小寫有區分!)
iOS 系統
關於上傳/下載檔案:
- 通常要觸發下載檔案的 dialog,可在回應的 header 加入「Content-Disposition: attachment」,但在 iOS 上似乎只有 Safari 支援下載檔案的 dialog,其餘的瀏覽器(包含 LINE 內建瀏覽器)都會直接在網頁中開啟檔案。
若要讓 LINE 的使用者點擊連結後強制使用外部瀏覽器開啟,可以在網址後方加上「openExternalBrowser=1 」的 Query String 參數。(大小寫未區分!)
作業環境:
LINE 版本 11.12.1
iOS 版本 14.7.1
Android 版本 9、10






