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

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

  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. 參考連接:瀏覽器

相關文章
相關標籤/搜索