Seetong · Report

🎯 Seetong 问题雷达 17:00 第238期

时间窗口:2026-10-17 09:00:00 ~ 17:00:00(Asia/Shanghai)

📌TL;DR 核心要点

  • 🔴 iOS 老版本微信登录在授权回调未返回 code 时仍继续提交请求,服务端以 30100222 拒绝;窗口内 1 条明确反馈,近 8 天同一错误共 38 次并覆盖 8 个 iOS 构建、至少 12 个省级地区,严重度 80 / 100,置信度中。反馈 257800 的完整 Logan 已直证 SendAuthReq 成功拉起微信、回跳后授权码为空、客户端仍请求 /seetong-member-auth/oauth/token,服务端返回“第三方授权码不能为空”。新建任务 T-20261017-170452-1877。
  • 🟠 HarmonyOS 1.1.2.3 出现 2 名独立用户无法对讲或语音通话,严重度 65 / 100,置信度中。两条反馈均无 Logan,神策也只有对讲点击次数而没有启动结果;代码侧确认首次授权麦克风后不会自动续执行本次对讲,且音频采集器初始化与启动之间存在空对象/异步失败吞掉路径。新建任务 T-20261017-170555-e261。
  • 257800:iOS 8.1.3.5、iPhone 18.7.10、河南南阳,10:03 提交“登录失败(30100222)。上传错误日志以便更快发现并修复问题。”反馈平台版本与神策 $app_version=8.1.305 对应。

🔥最近一个月 Top 问题

按严重度与复发期数排序,已把跨期同类反馈归集;负责人由问题代码锚点对应的 Git 提交历史(blame / 近期主要提交者)反查;数据窗口:最近 30 天(截至 2026-10-17)。

#问题(严重度降序)严重度平台版本负责人问题原因
1Android 8.4.1.6 及 HarmonyOS 1.1.1.11 单设备随机离线、P2P 恢复失败
15 期 · 139 条反馈
100Android · HarmonyOS1.1.1.11 / 8.4.1.6 / 1.1.1陈宝旺、冉博麟、唐胜、许源257582、257639 已确认是服务端心跳长期停更并伴随 P2P 离线,App 只是按离线状态展示;问题更可能在设备端、设备网关/P2P 服务或固件恢复机制,而不是 Android 播放器单点故障。
2Android 与 iOS 8.4.1.6 报警功能突然失效与通知不达
1 期 · 3 条反馈
90Android · iOS8.4.1.6陈宝旺、许源现有客户端样本表明 Android 通知权限与 token 注册均成功,故障更接近“服务端未生成报警或推送任务未送达”,但神策缺少报警生成与推送到达事件,iOS 样本又混合了通知权限关闭,当前不能完成单点定因。
3升级后回放体验整体退化
4 期 · 18 条反馈
85Android · iOS8.4.1.6 / 8.3.14.2唐胜、许源、欧阳荣、谭伟8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。
4KMP 回放页未申请屏幕常亮,回放中手机自动息屏
11 期 · 29 条反馈
84Android · HarmonyOS8.4.1.6 / 8.4.1 / 8.4.2唐胜、陈宝旺、许源、谭伟KMP 回放页的屏幕常亮能力已在代码中完整实现(KMP 公共层 → 桥接层 → Android 宿主层齐备),但承载该实现的提交只落在 feature_v8.4.2 一条分支上,feature_v8.4.4、master、hotfix_v1.1.1 全部不含,因此所有已发布版本(Android 8.4.1.6 / HarmonyOS 1.1.1.11)在运行时都走不到 FLAG_KEEP_SCREEN_ON,回放过程中发生系统级息屏。
5iOS 老版本微信登录空授权码触发 30100222
1 期 · 1 条反馈
80iOS8.1.3.5 / 8.1.305 / 8.1.503位冬微信授权回跳在当前旧版 iOS 上返回了空 code,客户端没有把它视为失败边界,仍向服务端提交空授权码,最终稳定触发 30100222。
6KMP 卡回放取「当天录像」时走云回放分支,失败后无超时兜底并反复重试
1 期 · 4 条反馈
71Android8.3.11.3 / 8.4.1.6陈宝旺、谭伟KMP 回放页在选择 Tab 时只信设备记忆、不信设备能力,把 supportCloud=false 的设备硬切到云回放 Tab 并以「前一天」初始化;云链路从未 prepared(currentVideoUrl 空、cloudPrepared=false),失败事件 result=0 又恰好落入 result<0 的无退避重试分支,同时 SD 异常态在非 WiFi IPC 上被 return NONE 吞掉——三者叠加,用户既看不到当天录像也收不到失败提示,且失败状态被 saveLastPlaybackTab(tabIndex=1) 固化到下一次。
7iOS 8.4.1.6 冷启动点击离线报警推送后未进入回放
1 期 · 2 条反馈
70iOS8.4.1.6 / 8.4.106欧阳荣、谭伟、陈宝旺当前冷启动没有留下通知响应回调或 KMP 回放路由证据,用户实际停留在普通启动链路;最可能的缺口是冷启动通知回调 / 参数分支未被当前处理逻辑承接或没有兜底,但尚不能确认是 APNs payload 缺 content、回调未到、视图条件拦截还是路由失败。
8Android 8.4.1.7 KMP 回放页关闭窗口无效
1 期 · 1 条反馈
70Android8.4.1.6 / 8.4.1.7唐胜、陈宝旺当前只能确认 KMP 回放页成功创建并出流、用户随后进入其他页面,无法确认关闭请求是否到达 closePage;最可疑点是关闭桥接缺少结果反馈,以及返回键存在双重消费路径,但尚未形成直证。
9iOS 灯光配置「提示失败 / 实际成功」——`NetworkIndicatorEnable="-1"` 非法值导致 1521 返回 -1
1 期 · 3 条反馈
68iOS8.4.1.4 / 8.4.1.6欧阳荣、谭伟iOS 端把 1301 + 1108 + 1521 三条独立协议的结果汇聚到同一个回调 block(UserClient.mm:1504 / 5091 / 5099),任一条失败即判定整次保存失败;当 1521 携带设备并不支持的 NetworkIndicatorEnable="-1" 字段时返回 Result="-1",UI 因此报「配置失败」,而 1301 / 1108 已生效 → 用户看到「提示失败、实际成功」。
10Android 8.4.1.6 进入监控长期「一直加载」——`add_watch_result=-1` 连续失败 40 次、首帧迟至 105 秒
3 期 · 10 条反馈
66Android · iOS8.4.1.6唐胜、张威、谭伟、欧阳荣进入监控页时 P2P 通道尚未建立,客户端在 105 秒窗口内以约 10 秒为周期反复 addWatch(返回 -1)→ stopWatch 空转,且无首帧超时兜底,用户侧表现为「一直加载」。

🔴 问题 1:iOS 老版本微信登录空授权码触发 30100222 | 负责人:位冬

现象与覆盖范围

  • 257800:iOS 8.1.3.5、iPhone 18.7.10、河南南阳,10:03 提交“登录失败(30100222)。上传错误日志以便更快发现并修复问题。”反馈平台版本与神策 $app_version=8.1.305 对应。
  • 窗口内只有这 1 条明确登录反馈,但神策显示同类失败并非只发生在单一用户:10 月 17 日 iOS 微信登录共出现 4 次 30100222,涉及 3 名用户和 8.1.503、8.1.305、8.2.102 三个构建;地区为广东、河南、山东。
  • 10 月 10 日至 17 日累计 38 次 30100222、33 个用户日,单日 3~9 次,覆盖 8 个 iOS 构建和至少 12 个省级地区,说明这是持续存在的老版本兼容问题,而不是 8.1.3.5 的单点偶发。
  • 严重度评分:80 / 100(反馈量 10 / 共性 30 / 业务关键度 40)。登录是进入设备、回放和消息能力的唯一入口,失败会阻断整个 App 主流程。

神策证据

  • iOS 8.1.305 的微信登录 10 月 10 日至 17 日逐日事件量为 30、26、29、27、24、29、25、24;其中 30100222 分别为 0、0、2、1、1、1、1、1 次,涉及用户均为 1 名/日。10 月 12 日至 17 日合计 7 次失败 / 158 次微信登录事件,失败占比约 4.43%。
  • 10 月 17 日全 iOS 微信登录的 30100222 为 4 次 / 3 名用户:8.1.503 为 2 次 / 1 人,8.1.305 为 1 次 / 1 人,8.2.102 为 1 次 / 1 人。
  • 最新 iOS 8.4.106 当日微信登录事件 10,297 次,30100222 为 0;当前证据指向旧版本授权回跳兼容性,不支持“全 iOS 微信登录均不可用”的结论。

Logan 关键日志

  • 反馈 257800 的附件共 2 个日志、94,250 行;关键链路位于 Log0.txt:34484-34515。
  • Log0.txt:34484-34488:08:19:39 发起 SendAuthReq,launch app with universal link, ret:1,微信 SDK 1.9.2 已成功拉起。
  • Log0.txt:34496-34497:08:19:43 微信回跳,记录 wxlog:clear property list 与 wxlog:command:2030。
  • Log0.txt:34507-34511:请求体明确包含 third_party=wechat、third_party_code="";服务端返回 code=30100222, msg=第三方授权码不能为空。
  • Log0.txt:34512-34515:客户端随后记录“第三方登录接口执行失败”和“登录失败(30100222)”,未在本地拦截空授权码。
  • 该日志同时证明通知权限、网络和微信拉起不是本次失败原因;唯一直接断点是授权回调结果没有可用的 code。

代码定位

  • STLoginViewController.m:1125-1130:managerDidRecvAuthResponse 只判断 errCode == WXSuccess,随即调用 loginRequestWithAuthCode:response.code type:kSTThirdLoginWechat,没有校验 response.code 非空。
  • STLoginViewController.m:1438-1462:微信登录使用固定 state = @"xxx",scope 同时申请消息、用户信息、好友和联系人权限;固定 state 无法可靠关联本次请求和回跳。
  • STLoginViewController.m:777-811:loginRequestWithAuthCode: 将授权码通过 kEmptyStr(authCode) 放入 third_party_code,空值仍会进入服务端请求。
  • STLoginViewController.m:854-912:请求失败后直接走通用错误提示和埋点,没有识别 30100222,也没有自动重新拉起授权或引导用户重试。
  • WXApiManager.mm:24-36:管理器只按响应类型转发,不校验响应内容;AppDelegate.m:375-405 与 430-443 分别接 URL Scheme 和 Universal Link,但当前日志只有 SDK 的通用 command:2030,没有回调字段级诊断。

根因结论

  • 置信度:🟡 中。
  • 一句话根因:微信授权回跳在当前旧版 iOS 上返回了空 code,客户端没有把它视为失败边界,仍向服务端提交空授权码,最终稳定触发 30100222。
  • 关键证据链:反馈错误码与 Logan 服务端响应完全一致;Logan 直证请求参数为空;神策证明多个旧构建和多个地区近期持续出现同一错误,最新 8.4.106 当日未出现。
  • 证据边界:日志无法区分空 code 来自微信侧异常、用户取消后的错误映射还是旧 SDK 回跳兼容问题;这不影响“客户端应在发请求前拦截空 code”的结论,但不能把所有 30100222 都解释为同一上游原因。

修复建议

  • 分配给:位冬(iOS 微信授权与登录回调),欧阳荣复核登录主流程。
  • 在 managerDidRecvAuthResponse: 增加硬门禁:校验 errCode、errStr、code 非空和 state 匹配,任一不满足都停止请求并展示可重试提示。
  • 为每次授权生成一次性随机 state 并保存,回跳后消费并校验,避免串回调;移动端登录 scope 收敛到实际需要的 snsapi_userinfo,减少无效权限和微信侧异常分支。
  • 对 30100222 增加客户端专用兜底,不展示原始错误码;保留“重新授权”和“手机号/密码登录”两个明确出口。
  • 回归覆盖用户取消、微信未安装、热启动回跳、冷启动 Universal Link、回调成功但 code 为空、正常 code 登录六种场景,至少覆盖 iOS 18.x + 8.1.x 旧包和当前 8.4.x 包。
  • 任务账本:T-20261017-170452-1877,状态 P1 / captured。

🟠 问题 2:HarmonyOS 1.1.2.3 对讲启动无反馈 | 负责人:陈宝旺

现象与覆盖范围

  • 257817:HarmonyOS 1.1.2.3、HUAWEI PLR-AL50、安徽六安,11:33 提交“为什么不能语音通话”。
  • 257883:HarmonyOS 1.1.2.3、HUAWEI GRL-AL10、河北张家口,16:45 提交“不能对话”。
  • 两条来自 2 名独立用户、2 个机型、2 个省级地区;另有同一青海账号在 16:08、16:20 先后提交“收不到”“收到了”,证据指向状态已恢复,未并入本问题。
  • 严重度评分:65 / 100(反馈量 10 / 共性 30 / 业务关键度 25)。对讲属于远程查看核心交互,但不影响设备在线和视频主链路。

神策证据

  • 反馈版本 1.1.2.3 在神策当前 HarmonyOS 运行版本口径中映射为 $app_version=8.4.1.6。
  • 10 月 17 日 HarmonyOS 共有 469,264 个 PreviewSessionSummary 会话,其中 12,526 个会话发生对讲点击,累计 103,810 次;10 月 10 日至 17 日有点击会话占比稳定在 2.67%~3.11%,没有平台级入口消失或使用量骤降。
  • PreviewSessionSummary.talk_click_count 只统计点击,不记录 startTalk 成功/失败、错误码、录音器状态和首段音频上传结果;因此神策不能验证这两名用户具体卡在权限、SDK 启动还是音频采集。

Logan 与代码证据

  • 257817、257883 均未提供 Logan,无法获得 TPS_MSG_RSP_TALK.frag、设备能力或麦克风授权结果。
  • ViewPage.ets:878-927:首次长按对讲时若没有麦克风权限,reqMicrophonePer 的回调只执行 AudioCapturered.init,随后直接 return,不会自动继续本次 startTalk。用户授权后必须松手再长按第二次,首次操作表现为“没有反应”。
  • ViewPage.ets:913-923:startTalk 成功后先设置 isTalking=true,再调用 AudioCapturered.start();该异常被空的 catch 吞掉,界面仍可能显示“对讲中”,但设备收不到音频。
  • AudioCapturerUtils.ets:71-86:start() 检查的是包装单例 audioCapturer,随后却访问可能尚未创建完成的原生对象 audioCapturered;ViewPage.aboutToAppear 的异步初始化和首次长按存在竞态。
  • AudioCapturered.init 在 audio.createAudioCapturer 失败时只写 console 后返回,没有把失败传回页面或原生对讲状态机,无法触发回滚与用户提示。

根因结论与建议

  • 置信度:🟡 中。代码存在可直接导致“首次无反应”和“假对讲中”的路径,但缺少两条反馈的 Logan,不能确认二者命中同一分支。
  • 一句话根因:HarmonyOS 对讲将权限请求、音频采集器异步初始化和底层 startTalk 拆成未串联的状态链,失败既不恢复用户意图也不回滚界面状态。
  • 分配给:冉博麟(HarmonyOS 对讲与音频采集),陈宝旺协助复核跨端对讲桥接。
  • 将流程改为单一 startTalk 状态机:权限通过后自动继续原请求;等待 AudioCapturered ready 后再启动底层对讲;采集失败必须立即 stopTalk、恢复监听并提示用户。
  • 增加 devId、权限结果、capturer 状态、startTalk 错误码、首段音频长度、停止原因和耗时的结构化埋点,替代只有点击次数的汇总口径。
  • 用 HarmonyOS 1.1.2.3 两台真机覆盖首次授权、已授权、拒绝后去设置授权、设备不支持对讲、设备忙、网络断开六种场景;验收要求每次操作都有成功/失败反馈,无“对讲中”假态。
  • 任务账本:T-20261017-170555-e261,状态 P1 / captured。

本期全量扫描与排除

下表覆盖窗口内全部 93 条反馈。网络模板反馈按同一错误口径合并,非网络反馈保留全部反馈 ID。

关键词簇反馈数分类处置
-102 多语言网络提示68🟣 普遍网络已排除;无具体业务链路
-101 多语言网络提示3🟣 普遍网络已排除;257858 为英文 DNS/网络环境提示
断线、连不上(257860)1🟣 普遍网络已排除;未指向具体功能链路
iOS 微信登录 30100222(257800)1🔴 进雷达详见问题 1
HarmonyOS 语音通话/对讲(257817、257883)2🟠 进雷达详见问题 2
实时预览、回放或报警录像不可用(257831、257851、257854、257872)4🟡 已有观察线与第 236、237 期远程查看/回放问题重复,沿用相关任务,不重复展开
录像存储异常或空间已满(257795、257878)2🟡 单点或用户配置257795 需核查 SD 卡状态;257878 为硬盘空间耗尽
账号、计费、服务开通(257805、257806、257828、257835、257846)5🟡 业务待核查分别涉及欠费缴费、换号后数据消失、回访功能、云端流量与三元组激活
黑白图像设置(257833、257834)2🟡 单用户配置同一设备与账号在 45 秒内重复提交,优先核查夜视/图像模式
云台无法转动(257837)1🟡 单点待核查需设备能力、权限与通道信息
截图、无效文本、收不到/收到了(257794、257849、257868、257876)4🟢 咨询/无效/已恢复不进雷达;青海账号已从“收不到”转为“收到了”

心愿单、数据源状态与待补证

心愿单亮点

  • 5363:希望增加“投屏到电视”,有明确的大屏查看需求,建议产品侧评估协议兼容和版权边界。
  • 5356:建议增加“监控分享”,适合纳入分享权限与安全审计方案统一评估。
  • 5354:提出老人/儿童一键呼叫手机,具备家庭安防场景价值,但需要设备、通知和紧急联系人联动能力。
  • 5360:希望提升在线稳定性并解决报警录像不可查看,与本期已有远程查看和报警链路任务相关,优先转问题跟踪而非新功能。

数据源状态

  • 反馈平台:✅ 正常,窗口内 93 条,complete=true;17:00:00 之后新增的 1 条未纳入本期。
  • 心愿单:✅ 正常,13 条,complete=true。
  • 神策登录:✅ 可用,已核对 iOS 微信登录、30100222 的版本、地区与 8 天趋势。
  • 神策对讲:⚠️ 部分可用,PreviewSessionSummary 只有点击次数,没有启动结果和音频上传结果。
  • Logan:✅ 问题 1 有效;❌ 问题 2 两条均未提供,需补采。
  • 代码定位:✅ 正常,iOS 微信登录与 HarmonyOS 对讲链路均已定位到具体文件和方法。
  • 友盟:⏭️ 未调用,本期无崩溃、ANR、闪退类反馈。
  • TAPD:⏭️ 未调用,本期为功能性根因分析,按 skill 规则不引入历史 Bug 干扰。

待补证

  1. 回查微信侧回调日志,确认 257800 的空 code 是用户取消、SDK token 设置失败还是 cold-start Universal Link 丢参。
  2. 回访 257817、257883 并补采 HarmonyOS 日志,确认首次授权、采集器初始化竞态与底层对讲错误码中的实际分支。
  3. 统计 iOS 8.1.x/8.2.x 微信登录近 30 天失败用户留存与升级意愿,判断是否需要旧版本强制升级提示。
  4. 为 HarmonyOS 对讲补启动、首段音频、停止三个结果事件,才能计算成功率而不是只统计点击量。

下一期 = 第239期 = 2026-10-18-H09(明天早上 9:00;窗口 2026-10-17 17:00 ~ 2026-10-18 09:00)

🗂️历史期次

查看全部历史期次(近 90 天)→