示例代码
插件开发最小可运行示例:存储、加密、消息
示例代码
最小插件
<!-- index.html -->
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>我的插件</title></head>
<body>
<h1 id="title">你好,宇宙核</h1>
<button onclick="save()">保存</button>
<button onclick="load()">读取</button>
<script>
const KEY = 'greeting';
async function save() {
await window.toolbox.storage.set(KEY, 'Hello from plugin!');
}
async function load() {
const v = await window.toolbox.storage.get(KEY);
document.getElementById('title').textContent = v || '(空)';
}
</script>
</body>
</html>
加密数据存储(宿主加密通道)
// storage.* 走宿主加密通道,落盘为密文(Keystore 密钥保护)
async function storageSetItem(key, value) {
await window.toolbox.storage.set(key, value);
}
async function storageGetItem(key) {
return await window.toolbox.storage.get(key);
}
// 保存加密数据
await storageSetItem('dataBlob', JSON.stringify({ payload: '机密' }));
// 读取
const encrypted = await storageGetItem('dataBlob');
改密自愈(重包装数据密钥)
// 安全中心改密后:宿主下发 oldKey,插件用它解旧密文 → 新 key 重加密
const key = await window.toolbox.getKey();
const oldKey = await window.toolbox.getOldKey();
if (oldKey) {
const plain = decryptWith(oldKey, await loadCiphertext());
await saveCiphertext(encryptWith(key, plain));
}
完整开发流程
- 新建目录,编写
manifest.json+index.html - 本地调试(浏览器直开即可,
toolbox缺失时用 Mock) - 用「插件打包器」打包为
.cbplugin - 在 App 中导入安装 → 权限管理中授权