關於iOS 11.x微信連wifi流程中,在Portal頁無法拉起微信問題的簡單記錄

lx熊貓桑發表於2018-08-31

標題挺長,踩過坑的應該看的明白。不過限於目前所做產品流程的限制,我並沒有解決掉這個問題,只是簡單說一下相應的思路。

  1. iOS的系統瀏覽器是Safari,用於Portal認證的則是CNA(Captive Network Assistant),二者的區別在於前者可以開啟wachat:這種私有協議頭網址,後者無法開啟並且限制很多,比如無法使用alert()、無法正常使用window.open()(只能做跳轉)等等。
  2. 問題的癥結在於在新版的CNA中是不認wechat:這樣的私有協議頭的,所以自然也就拉不起來微信。解決時需要引導使用者點選a標籤<a target="_system"></a>觸發Safari,然後再在Safari拉起微信就行了。
  3. 我目前的portal觸發邏輯是,客戶端連到wifi上回觸發landing,首先返回碼設定為401用於觸發客戶端的portal頁面,同時判斷客戶端UA,如果是部分安卓或iOS就渲染landing實體頁(landing.ejs),頁面的title和body均為“Success”以作為iOS欺騙(並且會加快從連線到彈出portal的響應時間);js部分,ios是直接開啟認證URL,針對部分安卓則是加了判斷document.visibilityState == `visible`時觸發跳轉的事件,用來解決不彈portal的問題。但由於點選按鈕之後就直接進到js拉微信認證的流程了(少一步引導拉起微信),所以其實需要部分變更產品流程才行(這個版本暫時沒戲)。
  4. 參考連結:

相關文章