@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.title | document.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.user | false |
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 | |
openUrl | url |
openApp | app, (中文(简体) ), path? |
close | |
share | url?, (中文(简体) ), text? |
haptic | kind: impact | notification | selection, (中文(简体) ), style? |
title | title |
request | id, (中文(简体) ), 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:context | a (部分)新设 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.