@ambasada/miniapp

中文文档
0.8.19发布于 2026/11/06MITTypeScriptES Module零依赖近 30 天下载 4548

在 Ambasada 应用程序内运行您的网络应用程序作为微型应用程序: 准备( )、 外壳上下文、 安全区域、 打开链接、 杂乱无章、 通知 。 零依赖关系;a

中文使用文档
文档目录4 节
  1. 安装
  2. API 密码
  3. 桥梁协议
  4. 构建

@ambasada/miniapp (英语)

Ambasada app的"小苹果"外壳的页面. 打电话 ready() 当绘制出您的第一个屏幕时,请读取 发射环境,尊重安全区域 和主机条,开放链接和其他微型应用程序, 要求偶然性, 默签和通知。 Ambasada app外的每通电话都是安全的,所以同一页是 也有一个简单的网站。 零依赖,~3 KB.

安装

npm install @ambasada/miniapp
import { ready, context, on } from "@ambasada/miniapp";

ready(); // after the first render: the shell drops the splash

或,没有建设步骤 <script> 建立中心服务(定义) window.ambasada:

<script src="https://hub.ambasada.id/miniapp.js" defer></script>
<script>addEventListener("DOMContentLoaded", () => window.ambasada?.ready?.())</script>

这个 ambasada init 模板将两种表格运入,以及 ambasada check 当一个页面没有使用时警告.

API 密码

打电话在应用程序里外边
ready()告诉 shell 绘制页面( 一次; 偶数); 设置 CSS 变量将 CSS 变量设置为 0
shell()输入 window.ambasadaShell (第2版)null
isInAmbasada()true (也用于老建筑,只设置 AmbasadaChat/ 用户代理)false
context(){ app, platform, safeArea, hostBar, theme, locale, user, location },默认旧外壳省略的内容默认值
capabilities()此 shell 构建支持( 第2 版 ): openUrl, (中文(简体) ), close(中文(简体) )[]
applyCssVars()写入 --ambasada-safe-area-{top,bottom,left,right} 财务报告和审定财务报表 --ambasada-host-bar 打开 <html> 并切换 in-ambasada 类同为零
openUrl(url)系统浏览器( 已验证的应用程序) 或确认工作表新标签
openApp(id, path?)这个上面还有个小应用程序https://ambasada.id/a/<id><path> 在新标签中
close()关闭此小应用程序history.back()
share({ url?, text? })系统共享表网络共享 API, 或者无
haptics.impact(style?), (中文(简体) ), .notification(style?), (中文(简体) ), .selection()杂乱无
setTitle(title)主机栏的标题和 document.titledocument.title
auth.getToken()a 60 s JWT (中文(简体) )aud =你的来源或应用id, sub = Ambasada 用户 id),用于已安装的应用程序,其安装获准 identity; 对照 https://hub.ambasada.id/.well-known/jwks.json (单位:千美元)auth.verifyShellToken 位于 @ambasada/ sdk 中拒绝: 返回与安巴萨达签约
auth.signInSilently({ endpoint?, me?, timeoutMs? })当没人签字时, getToken() 写到 /api/auth/shell,用于设置会话;解决用户。 每页装入一次,最多5秒null,绝不拒绝:显示"与安巴萨达签约"
auth.canSignInSilently()在应用中,一个薄荷的外壳,一个在 context.userfalse
notifications.request()贝壳的许可页 → { enabled }; 您的网页wook 获得 notifications_enabled{ enabled: false }
on("context", fn) 编号 : on("notification", fn)新的环境(安全区域、主题)/通知窃听器 { id, url }; 返回未订阅从不放火
mockEnv(overrides?)本地开发: 安装版本 3 shell, 记录 messages,回答请求,返回 { messages, emit, uninstall }不变(ambasada dev 用它来

布局: 将您的第一个屏幕由 var(--ambasada-safe-area-top, 0px) + var(--ambasada-host-bar, 0px) 在顶端 财务报告和审定财务报表 var(--ambasada-safe-area-bottom, 0px) 在底层。 这个 0px 倒计时将页面保留在网络上.

桥梁协议

本地应用程序注入 window.ambasadaShell 页面加载前 :

{ version: 3, platform: "ios" | "android" | "web", capabilities?: Capability[],
  app: { id, tier } | null, safeArea: { top, bottom, left, right }, hostBar: number,
  theme: { accent, scheme: "light" }, locale, user: { id, name, avatar } | null, location: LaunchLocation }

版本 2 贝壳( 当前应用程序) 只携带 version, (中文(简体) ), platform 财务报告和审定财务报表 safeAreaSDK掉回原点 v2 邮件 (chrome, (中文(简体) ), open为他们.

页 应用:每个呼叫一个JSON消息,通过 webkit.messageHandlers.ambasada.postMessage(obj) 在iOS上或 window.ambasada.postMessage(json) 在Android上显示:

消息字段
ready
openUrlurl
openAppapp, (中文(简体) ), path?
close
shareurl?, (中文(简体) ), text?
haptickind: impact | notification | selection, (中文(简体) ), style?
titletitle
requestid, (中文(简体) ), method: auth.getToken | notifications.request
chrome (v2级)header?, (中文(简体) ), tabs?, (中文(简体) ), title?, (中文(简体) ), back?, (中文(简体) ), statusBar?
open (v2级)url, (中文(简体) ), mode: in-app | external | sheet

应用 – 页数字 : CustomEvent发送日期 window数字 :

活动detail
ambasada:reply{ id, result } 或者说 { id, error },回答一个 request (SDK在15 s后放弃)
ambasada:contexta (部分)新设 ShellContext; SDK 将其合并为 window.ambasadaShell 并重新应用 CSS 变量
ambasada:notification{ id, url },在此应用程序打开时窃听通知

这个 <script> 将合并成已有的 window.ambasada (Android的桥对象)而不是替换 这样 window.ambasada.postMessage 继续工作 window.ambasada.ready()。 。 。 .

构建

node scripts/build.mjs 写入 dist/index.js (ESM), dist/miniapp.js (经典脚本,全局 ambasada和 dist/index.d.ts中心提供服务 dist/miniapp.js 时间 https://hub.ambasada.id/miniapp.js。 。 。 .

(原始内容存档于2013-10-12). MIT, CENTYSO.

版本与发布记录

@ambasada/miniapp 共发布 28 个版本,首次发布于 2026/11/02;过去 12 个月发布了 28 个版本。

版本发布日期距今
0.8.19latest2026/11/061 天前
0.8.182026/11/062 天前
0.8.172026/11/052 天前
0.8.162026/11/052 天前
0.8.152026/11/052 天前
0.8.142026/11/052 天前

关于 @ambasada/miniapp 的常见问题

@ambasada/miniapp 是什么?

在 Ambasada 应用程序内运行您的网络应用程序作为微型应用程序: 准备( )、 外壳上下文、 安全区域、 打开链接、 杂乱无章、 通知 。 零依赖关系;a

如何安装 @ambasada/miniapp?

在项目目录运行 npm install @ambasada/miniapp,或使用 pnpm add / yarn add / bun add。

@ambasada/miniapp 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ambasada/miniapp 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ambasada/miniapp 可以商用吗?

@ambasada/miniapp 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ambasada/miniapp 的下载量有多少?

根据 npm 官方下载统计,@ambasada/miniapp 在 2026/10/07 – 2026/11/05 这 30 天内被下载 4,548 次,日均约 152 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ambasada/miniapp 还在维护吗?

最新版本 0.8.19 发布于 2026/11/06(1 天前);至今共发布 28 个版本,其中过去 12 个月发布了 28 个;首次发布于 2026/11/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。