Mini App 测试工具

模拟
属性
version
—
platform
—
colorScheme
—
isActive
—
isExpanded
—
isFullscreen
—
isOrientationLocked
—
isClosingConfirmation
—
isVerticalSwipes
—
viewportHeight
—
viewportStableH
—
headerColor
—
backgroundColor
—
bottomBarColor
—
initData
initDataUnsafe
主题参数
bg_color
text_color
hint_color
link_color
button_color
button_text_color
secondary_bg_color
header_bg_color
bottom_bar_bg_color
accent_text_color
section_bg_color
section_header_text_color
section_separator_color
subtitle_text_color
destructive_text_color
WebApp 18
ready()
expand()
close()
sendData()
switchInlineQuery()
setHeaderColor()
setBackgroundColor()
setBottomBarColor()
enableClosingConfirmation()
disableClosingConfirmation()
enableVerticalSwipes()
disableVerticalSwipes()
requestFullscreen()
exitFullscreen()
lockOrientation()
unlockOrientation()
openLink()
openTelegramLink()
isVersionAtLeast()
hideKeyboard()
按钮 4
MainButton
点击按钮会触发 mainButtonClicked 事件
SecondaryButton
BackButton
BackButton
点击会触发 backButtonClicked 事件
SettingsButton
SettingsButton
点击会触发 settingsButtonClicked 事件
弹窗与提示 5
showAlert()
showConfirm()
showPopup()
showScanQrPopup()
readTextFromClipboard()
触觉反馈 3
impactOccurred()
notificationOccurred()
selectionChanged()
云存储 6
setItem()
getItem()
getKeys()
removeItem()
设备存储 4
setItem()
getItem()
removeItem()
clear()
安全存储 5
setItem()
getItem()
restoreItem()
removeItem()
clear()
传感器 3
Accelerometer
DeviceOrientation
Gyroscope
生物识别 5
init()
requestAccess()
authenticate()
updateBiometricToken()
openSettings()
位置 3
LocationManager.init()
LocationManager.getLocation()
LocationManager.openSettings()
账单与动态 3
openInvoice()
shareMessage()
权限与授权 3
requestWriteAccess()
requestContact()
requestChat()
表情、屏幕、文件 5
Home Screen
addToHomeScreen()
checkHomeScreenStatus()
Emoji Status
File Download
事件日志 0
正在监听 45 个事件
暂无事件。调用上方的方法即可产生事件。

Mini App Tester 是一个面向 Telegram Mini App 开发的在线测试工具,不写代码就能试用 Telegram WebApp JavaScript API(Telegram.WebApp)。在普通浏览器中,它以模拟模式运行并模拟这套 API;在 Telegram 内打开时,它会直接调用当前客户端的真实 API。做 Telegram 小程序开发时,可以先用它确认某个功能怎么用、返回什么,再动手写代码,也可以用来比较不同客户端的表现。

如何使用 Telegram Mini App 测试工具

  1. 在任意浏览器中打开本页,模拟模式会自动启动并模拟 Telegram.WebApp。
  2. 展开一个方法分组,调用方法,在事件日志和实时属性面板中观察结果。
  3. 要在 Telegram 内测试,在 @BotFather 中把 https://telegram-bot-api.info/telegram-mini-app-tester.html 设为机器人的 Mini App URL(使用 /newapp 或菜单按钮设置),无需自己部署。
  4. 分别在 iOS、Android 和桌面端打开,对比 version、platform、colorScheme、initData、themeParams 和安全区域。在 Telegram 内,测试工具的界面语言会跟随用户的语言设置。

可以测试哪些功能

测试工具把 API 分成 13 个方法组:

事件日志会带时间戳记录 45+ 种事件,例如 themeChanged、viewportChanged、mainButtonClicked 和 fullscreenChanged,你可以清楚地看到自己的事件处理函数会收到什么。

Telegram 小程序开发:模拟模式与真实环境

Mini App 最早叫 Web App,所以 API 对象至今仍叫 Telegram.WebApp。模拟模式适合调界面和流程:哪些方法可用、返回什么、会触发哪些事件都一目了然,存储则用 localStorage 模拟。但它无法还原原生弹窗、触觉反馈和真实的用户数据,其中的 initData 也只是 Telegram 从未签名过的示例数据。在 Telegram 内打开时,测试工具会切换到真实 API,initData 是真实数据,每次调用都会到达当前客户端。

正式上线前要记住两点:Mini App 必须通过 HTTPS 提供;服务端必须校验 initData(基于 Bot Token 的 HMAC-SHA256 签名,同时检查 auth_date 是否过期),不要直接信任前端传来的用户信息。

隐私

测试工具完全在浏览器中运行,不需要 Bot Token,也不调用 Bot API。模拟存储的数据只保存在你浏览器的 localStorage 中。

第一次接触 Mini App?先阅读 创建 Telegram 机器人教程,再按 Telegram Bot Token 获取教程 拿到 Token。想通过 API 给 Mini App 配置菜单按钮,可以在 Bot API Tester 中调用 setChatMenuButton;想用内联键盘按钮打开 Mini App,可参考 用 Bot API 发送消息 中的 reply_markup 用法。任何方法都可以在 Swagger 或 方法参考 中查到。

常见问题

不打开 Telegram,怎么在线测试 Mini App?

在任意浏览器中打开 Mini App Tester。它的模拟模式会模拟 Telegram.WebApp,不需要机器人,也不需要 Telegram 客户端,就能调用方法、触发事件、查看属性。

可以把 Mini App Tester 直接设为机器人的 Mini App 吗?

可以。在 @BotFather 中通过 /newapp 或菜单按钮设置,把 https://telegram-bot-api.info/telegram-mini-app-tester.html 填为 Mini App URL。在 Telegram 内它会调用真实的 WebApp API,你不需要准备任何服务器。

它覆盖了 Telegram WebApp API 的哪些功能?

WebApp 核心方法,MainButton、SecondaryButton、BackButton 和 SettingsButton,弹窗,HapticFeedback,CloudStorage、DeviceStorage、SecureStorage,传感器,生物识别,位置,权限,账单与动态分享,表情状态,全屏和文件下载,另有 45+ 种事件的日志。

模拟模式下的 initData 有效吗?

无效。模拟模式使用的是 Telegram 从未签名过的示例数据,HMAC 校验必然失败。要测试服务端校验,请在 Telegram 内打开测试工具,获取真实的 initData。

使用 Mini App Tester 需要 Bot Token 吗?

不需要。这个页面完全不调用 Bot API。只有想在 Telegram 内把它作为 Mini App 打开时,才需要一个机器人。