2.8 KiB
2.8 KiB
临时群组界面状态缓存与前端接口回调设计规约 (Design Spec)
1. 需求概述
为 StandAPP 临时呼叫功能增加群组锁定状态的缓存与回调机制:
- 创建界面:缓存当前的临时群十六进制 GID,并通知前端页面,调用 JS 接口
startPullGroupLock(gid)。 - 销毁界面:清除缓存的临时群 GID,并通知前端页面,调用 JS 接口
endPullGroupLock()。 - 查询接口:提供一个新的原生桥接方法
getTempGroupId供前端 JS 主动查询当前在临时群的十六进制 GID。 - 演示页面:修改
print_demo.html演示接收回调通知,并添加按钮演示查询当前临时群 GID。
2. 方案设计
2.1 临时群 GID 缓存逻辑 (TempCallActivity.kt)
- 静态成员变量:在
TempCallActivity.Companion中定义@Volatile var currentTempGroupId: String = ""。 - 创建逻辑 (
onCreate):- 获取
intent.getStringExtra("group_name")(即临时群组名称,如 "临时群组1" )。 - 将名称使用
SendAtUtil.str2HexStr(name)转为十六进制字符串(如"D5E1CAE6..."),并存入currentTempGroupId。 - 如果
intent直接传了group_id,可以直接使用;如果没有,则使用上述十六进制 GID 作为 fallback。 - 调用:
MainActivity.executeJs("if(window.startPullGroupLock){ window.startPullGroupLock('$currentTempGroupId'); }")
- 获取
- 销毁逻辑 (
onDestroy/clearMinimizedState):- 销毁时如果
!isMinimized,则清除currentTempGroupId = ""。 - 发生真实销毁时调用:
MainActivity.executeJs("if(window.endPullGroupLock){ window.endPullGroupLock(); }")
- 销毁时如果
2.2 原生桥接接口增加 (AndroidInterface.kt)
- 在
dispatch方法的when(method)分支中增加:"getTempGroupId" -> getTempGroupId()
- 实现
getTempGroupId接口:fun getTempGroupId(): String { return TempCallActivity.currentTempGroupId }
2.3 演示页面修改 (print_demo.html)
- 注册回调方法:
window.startPullGroupLock = function(gid) { showPttResult("收到临时群锁定回调 startPullGroupLock, GID: " + gid); }; window.endPullGroupLock = function() { showPttResult("收到临时群解锁回调 endPullGroupLock"); }; - 新增主动查询按钮:
- 在 PTT 功能区域内添加一个按钮 “查询临时群 GID”:
<button onclick="queryTempGroupId()" class="ws-btn">查询当前临时群 GID</button> - JS 触发逻辑:
function queryTempGroupId() { var gid = window.android.getTempGroupId(); showPttResult("当前在临时群的 GID: " + (gid || "无")); }
- 在 PTT 功能区域内添加一个按钮 “查询临时群 GID”: