# 關於 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](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#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](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition)」，但在 iOS 上似乎只有 Safari 支援下載檔案的 dialog，其餘的瀏覽器（包含 LINE 內建瀏覽器）都會直接在網頁中開啟檔案。
        
* 若要讓 LINE 的使用者點擊連結後強制使用外部瀏覽器開啟，可以在網址後方加上「openExternalBrowser=1 」的 Query String 參數。（大小寫未區分！）
    

---

作業環境：

* LINE 版本 11.12.1
    
* iOS 版本 14.7.1
    
* Android 版本 9、10
