关于iOS 11.x微信连wifi流程中,在Portal页无法拉起微信问题的简单记录

本文围绕iOS系统中CNA无法拉起微信的问题展开。指出iOS系统浏览器Safari与用于Portal认证的CNA的区别,新版CNA不认私有协议头导致拉不起微信,解决思路是引导用户点击a标签触发Safari再拉起微信,还介绍了目前portal触发逻辑及存在的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题挺长,踩过坑的应该看的明白。不过限于目前所做产品流程的限制,我并没有解决掉这个问题,只是简单说一下相应的思路。

  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. 参考链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值