概述
你的应用运行在沙箱 iframe 中,无法访问 Elata 的 Cookie、后端或用户的钱包。当它需要平台的能力(例如购买、保存数据或获取同意)时,会向父框架发送一条postMessage。Elata 使用用户的会话完成操作并回复。
你的应用永远不知道用户是谁,只会得到它需要的答案。
使用 SDK 包
大多数功能都有对应的小型包,为你封装了消息、超时和错误处理:
同意、洞察、通知、导航和反馈使用普通的
postMessage 调用,在下文及各自的页面中说明。
基本规则
- 发送给父框架。 发送到
window.parent。目标源使用'*'即可:Elata 会检查消息是否来自你应用的框架和源。 - 使用
requestId。 需要回复时,附带一个唯一的requestId(8 到 128 个字符;可使用crypto.randomUUID()),并在回复中进行匹配。 - 处理无回复的情况。 在 Elata 之外(例如本地开发时)没有人会回复。请设置超时并优雅降级。SDK 包已为你处理这一点。
- Elata 是唯一可信来源。 价格、所有权和同意状态始终来自 Elata,而不是你的应用发送的值。
消息参考
购买
请使用
app-payments,而不是手动发送这些消息。
应用状态
@elata-biosciences/app-state 发布到 npm 后,建议优先使用它,而不是手动发送这些消息。参见应用状态。
指标
app-metrics 使用通过 __elata_metrics_init 握手建立的专用 MessageChannel,而不是单独的窗口消息。请始终使用该包。
同意与洞察
参见同意与洞察。
通知
参见通知。
导航
将用户带到 Elata 中另一个应用的试玩页面:slug 必须是 Elata 应用的标识:小写字母、数字和短横线,最多 64 个字符。没有回复。