Skip to content

Sleepy iOS a.v.1.0.41 — 教务 WebView 跳转修复 + 全 app 触摸热区修复

Choose a tag to compare

@lingion lingion released this 29 Aug 07:11
· 17 commits to master since this release

Sleepy iOS a.v.1.0.41 — 教务 WebView 跳转修复 + 全 app 触摸热区修复

教务导入: 中间页卡片点不动(修复)

新窗跳转被静默丢弃(用户报障核心)

  • 教务系统(如哈工程金智教务)功能卡片大量使用 target="_blank" / window.open(),多级跳转后停在某页点卡片无反应。根因:WKWebView 没有 WKUIDelegate 时新窗请求被静默丢弃——Android WebView 默认在当前页打开新窗,移植 iOS 时这层语义丢了。
  • 修复:挂 NavUIDelegate.createWebViewWith,新窗 URL 一律在当前 WebView 内打开(对齐 Android 行为)。普通链接/重定向不受影响。

重定向链混 http 中间页断掉

  • 校园网教务系统的跳转链常夹 http 中间页,WKWebView 默认按 ATS 拦截,表现为跳一半断掉。已在 Info.plist 放开 NSAllowsArbitraryLoadsInWebContent(只作用于 WebView 内网页内容,不影响 app 自身网络请求),等价 Android 的 mixedContentMode=ALWAYS_ALLOW

全 app 触摸热区: 点色块无反应,必须点中图标/文字(修复)

  • 全 app 63 处按钮用了 .buttonStyle(.plain),其点击判定只认图标/文字的字形边界,padding + 色块背景不参与命中——所以点"检查更新"整条色块、我的页"所有课表/导出/提醒"等设置行、各设置卡片行,只有恰好点中图标或文字才触发。
  • 新增统一 SleepyButtonStyle:contentShape(Rectangle()) 让整块色卡任何位置可点,并补了按下的透明度反馈(Material 手感)。63 处全部替换,今后新按钮统一走这个样式。
  • 覆盖面:按钮 63 处 + onTapGesture 块 3 处(原本已有 contentShape)全部核查过,无遗漏形态。

回归保护(本轮新增 9 用例)

  • WebView 导航策略 4 单测:修复前对照(无 UIDelegate 确证新窗请求被丢)+ 修复后 target=_blank / window.open 在当前页打开 + 普通链接无回归。本地 HTTP server 提供页面,零网络依赖。
  • WebView 端到端 3 用例:走真实导入入口(我的 → 教务导入 → 自定义 URL),分别验证 target=_blank / window.open / 普通 href 三类卡片点击后到达第二页。
  • 热区回归 3 用例:关于页"检查更新"按钮色块区点击触发;我的页"所有课表"、"导出"行右端空白区点击跳转——锁死"点整块色卡"场景。

回归终态

  • 全量:单元 148 passed / UI 127 passed / 0 failed / 1 skipped(权限固化用例按设计 skip)。

已知边界

  • 哈工程教务(202.118.176.13)仅校园网可达,本轮用同构行为的本地页面完成端到端验证;真实站点请连校园网点一遍导入流程确认。
  • 模拟器 XCUITest 合成点击与真机手指 hit-test 存在机制差异,触摸手感最终以真机验收为准。