Seetong · Report
🎯 Seetong 问题雷达 09:00 第237期
时间窗口:2026-10-16 17:00:00 ~ 2026-10-17 09:00:00(Asia/Shanghai)
TL;DR 核心要点
- 🔴 Android 与 iOS 8.4.1.6 出现报警功能突然失效、手机收不到报警信息的跨端反馈;6 条反馈来自 4 名用户,覆盖 2 个平台、4 个省级地区,严重度 90 / 100,置信度中。代表用户 257786 的 Android Logan 已确认系统通知权限开启、厂商推送方案为小米、push token 上传成功、三台设备服务端 devAlarm=1,但当日多次查询服务端报警列表始终为空;神策当前没有推送到达、展示或点击事件,无法判断故障发生在告警生成、推送调度还是厂商通道。新建任务 T-20261017-090729-9de7。
- 现象描述:用户升级后收不到报警通知,或明确表示报警功能突然失效;部分用户补充重启、重新配置仍无效。
- 涉及反馈共 6 条、4 名用户:
最近一个月 Top 问题
按严重度与复发期数排序,已把跨期同类反馈归集;负责人由问题代码锚点对应的 Git 提交历史(blame / 近期主要提交者)反查;数据窗口:最近 30 天(截至 2026-10-17)。
| # | 问题(严重度降序) | 严重度 | 平台 | 版本 | 负责人 | 问题原因 |
|---|---|---|---|---|---|---|
| 1 | Android 8.4.1.6 及 HarmonyOS 1.1.1.11 单设备随机离线、P2P 恢复失败 15 期 · 139 条反馈 | 100 | Android · HarmonyOS | 1.1.1.11 / 8.4.1.6 / 1.1.1 | 陈宝旺、冉博麟、唐胜、许源 | 257582、257639 已确认是服务端心跳长期停更并伴随 P2P 离线,App 只是按离线状态展示;问题更可能在设备端、设备网关/P2P 服务或固件恢复机制,而不是 Android 播放器单点故障。 |
| 2 | Android 与 iOS 8.4.1.6 报警功能突然失效与通知不达 1 期 · 3 条反馈 | 90 | Android · iOS | 8.4.1.6 | 陈宝旺、许源 | 现有客户端样本表明 Android 通知权限与 token 注册均成功,故障更接近“服务端未生成报警或推送任务未送达”,但神策缺少报警生成与推送到达事件,iOS 样本又混合了通知权限关闭,当前不能完成单点定因。 |
| 3 | 升级后回放体验整体退化 4 期 · 18 条反馈 | 85 | Android · iOS | 8.4.1.6 / 8.3.14.2 | 唐胜、许源、欧阳荣、谭伟 | 8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。 |
| 4 | KMP 回放页未申请屏幕常亮,回放中手机自动息屏 11 期 · 29 条反馈 | 84 | Android · HarmonyOS | 8.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,回放过程中发生系统级息屏。 |
| 5 | KMP 卡回放取「当天录像」时走云回放分支,失败后无超时兜底并反复重试 1 期 · 4 条反馈 | 71 | Android | 8.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) 固化到下一次。 |
| 6 | iOS 8.4.1.6 冷启动点击离线报警推送后未进入回放 1 期 · 2 条反馈 | 70 | iOS | 8.4.1.6 / 8.4.106 | 欧阳荣、谭伟、陈宝旺 | 当前冷启动没有留下通知响应回调或 KMP 回放路由证据,用户实际停留在普通启动链路;最可能的缺口是冷启动通知回调 / 参数分支未被当前处理逻辑承接或没有兜底,但尚不能确认是 APNs payload 缺 content、回调未到、视图条件拦截还是路由失败。 |
| 7 | Android 8.4.1.7 KMP 回放页关闭窗口无效 1 期 · 1 条反馈 | 70 | Android | 8.4.1.6 / 8.4.1.7 | 唐胜、陈宝旺 | 当前只能确认 KMP 回放页成功创建并出流、用户随后进入其他页面,无法确认关闭请求是否到达 closePage;最可疑点是关闭桥接缺少结果反馈,以及返回键存在双重消费路径,但尚未形成直证。 |
| 8 | iOS 灯光配置「提示失败 / 实际成功」——`NetworkIndicatorEnable="-1"` 非法值导致 1521 返回 -1 1 期 · 3 条反馈 | 68 | iOS | 8.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 已生效 → 用户看到「提示失败、实际成功」。 |
| 9 | Android 8.4.1.6 进入监控长期「一直加载」——`add_watch_result=-1` 连续失败 40 次、首帧迟至 105 秒 3 期 · 10 条反馈 | 66 | Android · iOS | 8.4.1.6 | 唐胜、张威、谭伟、欧阳荣 | 进入监控页时 P2P 通道尚未建立,客户端在 105 秒窗口内以约 10 秒为周期反复 addWatch(返回 -1)→ stopWatch 空转,且无首帧超时兜底,用户侧表现为「一直加载」。 |
| 10 | iOS 回放「当前同时播放人数已达上限」误触发——NVR 主设备与通道共享 `cloudId` 导致额度自占 1 期 · 1 条反馈 | 64 | iOS | 8.3.14.3 / 8.4.1.6 | 欧阳荣、谭伟、位冬 | iOS 端 cloudId 被定义为「NVR 主设备与全部通道的公共分组键」(Camera.h:500 / STDeviceListModel.m:657),回放页又固定以 cameraArray.firstObject 作为回放上下文(STPlaybackVC.m:6046-6048),使单用户单设备场景下也可能同时占用「主设备会话」与「通道会话」两份 NVR 并发额度;一旦 NVR 返回 -7 / -14,STPlaybackVC.m:1422 立即把它翻译成「当前同时播放人数已达上限」并强制停止回放、隐藏功能栏,用户表现为「回放看不了」。 |
🔴 问题 1:Android 与 iOS 8.4.1.6 报警功能突然失效与通知不达 | 负责人:陈宝旺、许源
现象与覆盖范围
- 现象描述:用户升级后收不到报警通知,或明确表示报警功能突然失效;部分用户补充重启、重新配置仍无效。
- 涉及反馈共 6 条、4 名用户:
- 257786:Android 8.4.1.6,Redmi 24090RA29C,浙江杭州,原文“为啥更新后报警不报了”。
- 257751:iOS 8.4.1.6,iPhone 26.4.1,四川,原文“手机收不到坚控报警信息呀?”。
- 257740:iOS 8.4.1.6,iPhone 26.2,湖南湘潭,原文“今日起突然没有了报警功能,升级、重启等都试了也没用”。
- 16650627731:iOS 8.4.1.6,iPhone 26.2,河南商丘,19:08 至 19:10 连提 3 次,描述夜间有人不报警、报警灯不亮、听不到报警声。
- 覆盖维度:Android / iOS 双平台、8.4.1.6 单版本、至少 3 个机型、4 个省级地区,达到 3 个以上可核验维度。
- 严重度评分:90 / 100(反馈量 30 / 共性 30 / 业务关键度 30)。报警通知属安防产品核心能力,但按 skill 口径归入“录像回放 / 报警 = 30”,不外推到设备离线级 40 分。
- 口径边界:16650627731 的 3 条反馈同时包含设备侧侦测、报警灯和提示音未触发,不能单独证明 App 推送链路故障;257740 的日志上报
systemNotification=0,也无法排除用户关闭系统通知。因此目前只能确认“报警结果未到达用户”的跨端现象,不能确认所有样本均为同一客户端缺陷。
神策证据(核心数据源)
- 事件可用性检查:查询 2026-10-14 至 2026-10-16、
$app_version=8.4.1.6且事件名包含 alarm、push、notif 或 message 的记录,返回 0 行。 - 当前神策
SiteMessageClick只能观察站内消息点击,不是离线推送到达、通知展示或点击事件,不能替代报警通知送达率。 - 由于缺少“服务端告警生成、推送任务创建、厂商接受、客户端到达、通知展示、用户点击”链路事件,本问题无法给出全局影响面、版本趋势和漏斗断点。
- 已确认 8.4.1.6 本身有大量其他事件数据,因此上述 0 行是报警与推送埋点缺失,不是整版本无数据。
Logan 关键日志(核心数据源)
- 反馈 257786(Android 8.4.1.6 / Redmi 24090RA29C,17,432 行):
[L559]:AlarmMessagePage system notification permission result, granted=true, status=granted,系统通知权限已开启。[L486]:SPush-getPushScheme result=xm;[L904]生成小米 push token;[L1061]:SPush-Add push relation success :true。[L487]:三台绑定设备均返回devAlarm=1,设备侧报警开关未被服务端标记为关闭。[L589]、[L2473]、[L4078]、[L5787]:03:23、03:36、04:07、07:46 四次请求res_pull_device_alarm_list均返回code=200,但deviceAlarmList=[];KMPqueryAlarmMessages success ... itemCount=0。[L936]、[L2734]、[L4277]:小米推送服务多次收到RECEIVE_MESSAGE后记录receiving an empty message, drop,未出现可解析的报警 title / description payload。- 证据边界:空列表可能代表该账号在该时段确实没有产生报警,也可能代表服务端未生成告警,不能仅凭空列表判定客户端漏报。
- 反馈 257751(iOS 8.4.1.6 / iPhone 26.4.1,7,170 行):
[L1188]:应用以systemNotification=1&pushSchemes=apns请求推送方案,说明上报时系统通知权限处于开启状态。- 全量检索
didReceiveNotificationResponse、willPresentNotification、ReceivePushMessage、收到离线推送,均未出现匹配记录。 - 证据边界:日志中没有通知回调,不等于系统没有展示通知;iOS 通知展示不一定会写入 Logan,只能确认该日志未覆盖可验证的推送到达链路。
- 反馈 257740(iOS 8.4.1.6 / iPhone 26.2,41,042 行):
- 多次推送方案请求均为
systemNotification=0&pushSchemes=apns,与用户“突然没有报警功能”同时出现。 - 该样本首先需要核对 iOS 系统通知权限和专注模式,不应直接归因于 App 版本;它反而说明跨端结论尚不闭合。
代码定位与证据缺口
- 涉及模块:Android 推送注册与接收、iOS APNs 注册与通知回调、KMP 报警消息列表、服务端报警生成与推送调度。
- Android 关键链路:
PushUtils.java:107-113接收 push token 后调用addPushRelation();PushUtils.java:491-525异步上传 token,成功或失败仅写日志,没有状态回执、重试或埋点;StPushReceiver.kt:39-69分别处理通知到达、点击和注册结果;LibImpl.java:5385-5450解析报警 title / description。 - Android 关键缺口:
LibImpl.java:5443的本地报警保存仍处于注释状态;通知到达路径没有可持久化的成功标记,也没有“服务端生成、厂商接受、客户端到达”三阶段对应事件。 - iOS 关键链路:
AppDelegate.m:492-525获取 deviceToken;AppDelegate.m:536-607处理通知点击和前台展示;STDeviceListEventService.m:110-131上报systemNotification。 - KMP 关键链路:
AlarmMessagePageViewModel.kt:1869-1929查询服务端报警列表,并以itemCount写日志;AlarmMessage.java:317-356通过 WebSocket 请求res_pull_device_alarm_list。 - 结构性缺口:服务端返回
code=200 + 空数组时,客户端无法区分“确实没有报警”和“告警未生成 / 推送未调度”;现有日志也没有厂商通道回执,因此无法从客户端单侧闭眼修复。 - 修复方向锚点:
- 服务端与推送平台补端到端事件:告警生成、推送任务创建、厂商接受 / 拒绝、APNs 接受、客户端到达、通知展示、用户点击。
- Android
PushUtils.addPushRelation()增加 token 绑定结果校验和失败重试;StPushReceiver.kt对到达 payload 写入结构化日志,并补设备、告警类型、时间、pushServer、消息 ID。 - iOS 在
didRegisterForRemoteNotificationsWithDeviceToken、didFailToRegisterForRemoteNotificationsWithError、didReceiveNotificationResponse、willPresentNotification四处补统一事件,区分注册失败、系统未展示和用户点击。 - 告警列表接口增加明确状态字段或服务端 requestId,避免
code=200 + 空列表同时承载“无数据”和“查询链路异常”。
根因结论
- 置信度:🟡 中。
- 一句话根因:现有客户端样本表明 Android 通知权限与 token 注册均成功,故障更接近“服务端未生成报警或推送任务未送达”,但神策缺少报警生成与推送到达事件,iOS 样本又混合了通知权限关闭,当前不能完成单点定因。
- 关键证据链:4 名用户、6 条反馈形成跨端症状聚类;257786 的 Logan 证明客户端注册链路成功,同时服务端报警列表连续为空;257751 证明 iOS 权限开启后仍没有可观测的推送到达日志;神策 0 行推送事件证明当前观测链路本身不完整。
建议下一步
- 分配给:报警推送服务 owner 牵头,Android / iOS 推送 owner 与 KMP 消息页 owner 协同。
- 优先处理项:先查 257786 对应账号在 10 月 17 日的服务端告警生成记录与小米推送回执;再查 257751 的 APNs token、发送记录和系统通知开关;同时回访 257740 确认 iOS 通知权限与专注模式。
- 验证方法:Android 与 iOS 8.4.1.6 各至少 2 台真机,分别覆盖前台、后台、杀进程三态;验收要求为服务端生成告警后有可追踪 requestId,厂商通道有接受回执,客户端到达事件与通知展示事件可区分,用户无需重启即可收到。
- 任务账本:新建
T-20261017-090729-9de7,状态P1 / captured。与T-20261016-090737-bec4相关但不合并,后者处理“收到推送后冷启动未进入回放”,本任务处理“报警未生成或通知未到达”。
本期全量扫描与排除
下表按互斥关键词簇汇总本窗口 134 条反馈;网络类按 skill 规则整体排除,单点或证据不足项不进入本期 TOP。
| 关键词簇 | 反馈数 | 分类 | 处置 |
|---|---|---|---|
-102 手机网络模板 | 95 | 🟣 普遍网络问题 | 已排除 |
| 其他网络不可用描述 | 1 | 🟣 普遍网络问题 | 已排除 |
| 报警不报 / 收不到报警信息 / 报警功能消失 | 6 | 🔴 进雷达 | 详细分析见问题 1 |
| 回放 / 录像不可见或跳段 | 4 | 🟠 候选 | 症状分别为无录像、跳段、切通道时间不延续,缺少共同根因,暂不硬合并 |
| 自动离线 / 设备离线 | 3 | 🟠 重复或单点 | 257791 属上一期已分析同族,沿用 T-20261016-170803-b4da;其余 2 条证据不足 |
| 页面或播放卡顿 | 1 | 🟡 单点待补证 | 有 Logan,但描述无具体业务操作链 |
| iOS 登录失败 30100225 | 1 | 🟡 单点待补证 | 需结合登录事件与账号状态复核 |
| 客服响应 / 服务投诉 | 4 | 🟤 非技术问题 | 同一 HarmonyOS 用户连提 3 条,另有 1 名用户投诉等待时间 |
| 摄像机卡不存在 / 4G 卡退款 / 网线流量提示 / 分享码 / 缴费 / 半屏 / 音量 | 7 | 🟡 业务或单点咨询 | 不构成跨用户功能故障 |
| 无效文本 / 无关内容 / 其他单点 | 12 | 🟢 无效或待补证 | 不进入雷达 |
已分析过而不重复占群
- 257791“老是自动离线且需断电重启”与上一期 257582、257639 同族,继续沿用
T-20261016-170803-b4da,不重复计入本期问题 1。 - 回放与录像相关 4 条:257781(Android,看不到回放记录)、257756(Android,没有回放录像)、257747(HarmonyOS,录像跳段且有一段看不到)、257669(Android 8.4.1.6,切换通道后未沿用前通道回放时间)。257756 的 Logan 可见设备具备 RemotePlayback 权限、云存与卡回放广告接口正常返回,但没有覆盖“查询无录像”的直接失败分支;257669 与既有时间轴状态任务同域。本期记录为待补证,不把四个不同症状强合并。
- 257790 的 iOS 登录失败码 30100225 仅 1 条,未达到雷达阈值;下期若继续出现再并入登录链路分析。
心愿单亮点
- 5351:希望设备加入温度检测,适合提升硬件卖点与场景覆盖,建议产品侧评估。
- 5350:对讲增加“电话模式”,可改善多人对话时的听清和互不干扰体验,建议产品侧评估交互成本。
- 5349:WiFi、4G、有线模式自由切换,属于设备与网络配置能力,建议评估现有能力边界后回应。
- 5348:删除不使用的监视位,可降低分屏操作成本,适合作为低风险体验优化候选。
- 5347:夜间画面保持彩色,需结合红外、补光和夜视能力评估,不宜直接承诺。
- 5346:增加车辆识别,存在明确安防场景,但涉及模型和算力成本,建议进入产品评审池。
- 5345:设备升级后回放不同步,属于功能回归诉求而非新增能力,已与回放候选簇关联。
数据源状态与任务
| 数据源 | 状态 | 说明 |
|---|---|---|
| 反馈平台 | ✅ 正常 | total=134 / fetched=134 / complete=true / pages=3;窗口 2026-10-16 17:00:00 ~ 2026-10-17 09:00:00 |
| 心愿单 | ✅ 正常 | total=9 / fetched=9 / complete=true;主要为产品建议与文本不完整内容 |
| 神策推送与报警事件 | ❌ 缺失 | 8.4.1.6 在 10-14 ~ 10-16 查询 alarm / push / notif / message 事件返回 0 行;无法量化送达率 |
| Logan(Android) | ✅ 有效 | 257786 可直接证明通知权限、push token、设备报警开关和服务端报警列表状态 |
| Logan(iOS) | ⚠️ 部分有效 | 257751 可证明上报通知权限开启但无推送回调;257740 上报系统通知关闭,样本边界明显 |
| 代码定位 | ✅ 正常 | 已覆盖 Android 推送注册 / 接收、iOS APNs 回调、KMP 报警列表与服务端查询桥接 |
| 友盟 | ⏭️ 未调用 | 本期无崩溃、ANR、闪退类反馈 |
| TAPD | ⏭️ 未调用 | 本期为功能性根因分析,按 skill 规则不以历史 Bug 干扰判断 |
任务账本联动:
- 新建
T-20261017-090729-9de7:核查 Android/iOS 8.4.1.6 报警功能突然失效与通知不达,P1 / captured。 - 关联
T-20261016-090737-bec4:冷启动点击离线报警推送未进入回放,与本问题同属报警推送域,但症状和修复边界不同。 - 沿用
T-20261016-170803-b4da:Android 8.4.1.6 单设备随机离线,本期 257791 只作为延续样本,不重复深挖。
待补证
- 服务端告警生成:需按 257786 的账号、设备 ID 和时间窗口查询告警事件表,确认 10 月 17 日凌晨至上午是否真正产生了报警。
- 厂商推送回执:需查小米推送针对 257786 的设备 token、任务 ID、接受状态和错误码;APNs 侧查 257751 的 token 与发送记录。
- iOS 权限真实性:257740 的
systemNotification=0需由用户确认通知权限、专注模式和 App 通知分组是否关闭,避免把用户设置误判为版本故障。 - 端到端埋点:需补告警生成、推送任务、厂商接受、客户端到达、通知展示与点击事件;在补齐前不能给出报警送达率。
- 报警列表空态语义:需服务端区分“该时段无报警”和“告警查询 / 生成异常”,并为每次查询返回 requestId。
- 设备侧报警链路:16650627731 的报警灯和声音均未触发,需同时核对设备侦测配置、固件和联动规则,不能只查手机通知。
下一期 = 第238期 = 2026-10-17-H17(今天下午 17:00;窗口 2026-10-17 09:00 ~ 17:00)