本帖最后由 riyad 于 2025-2-23 03:46 编辑
9 V$ Z, Y% d$ h) |8 Z6 M0 s8 i6 `9 O v
迷你应用程序该组件提供其他系统 组件未涵盖的 Telegram Mini Apps 通用功能。 初始化要初始化组件,请使用initMiniApp函数: - import { initMiniApp } from '@telegram-apps/sdk';
7 @3 a- Q# h- {3 I1 ~7 s- G7 a5 c
# A1 j$ ^( l% A- const [miniApp] = initMiniApp();
复制代码 颜色页眉开发人员可以获取并更新 Mini App 的标题和背景颜色。 要获取 标题颜色的当前值,开发人员可参考 headerColor 属性,并通过 setHeaderColor 方法进行更新: - miniApp.setHeaderColor('secondary_bg_color');
, S& {! D+ k% p1 q5 p0 v7 w - // or starting from v6.10:2 b9 L: c1 m/ P, w) {7 a; N
- miniApp.setHeaderColor('#aa1132');
复制代码 背景介绍除了迷你应用程序的标题颜色,开发人员还可以调整其背景颜色: - miniApp.setBgColor('#888311');
复制代码 迷你应用背景色用于确定当前迷你应用是否为深色调。 要知道 当前调色板是否为暗色,开发人员应使用 isDark 属性:- console.log(miniApp.isDark); // false
复制代码 访问请求从 Telegram Mini Apps 6.9 版本开始,允许 Mini Apps 申请访问手机 号码和申请写入当前用户的权限。 为此,允许开发人员使用 requestPhoneAccess 和 requestWriteAccess 方法: - miniApp.requestPhoneAccess().then(() => {4 [* V3 A& r X V
- // done.
8 R2 _2 w: v1 r. W - });
x& w- ^: x4 M
7 e# J$ k2 d" V; }- miniApp.requestWriteAccess().then(() => {! {+ X1 k. `* X4 ?+ I7 R3 A+ j( s
- // done.
7 E" F/ Y. |# S& b0 [/ h: g! }9 m - });
复制代码要请求联系信息(例如电话号码),请使用 requestContact 方法: ! p! V/ `, q# D" g; w
- miniApp.requestContact().then(contact => {3 u! ^+ b* v' m" j4 D2 ~. q" c c- P. I
- console.log(contact);* ~2 e7 S9 y3 p
- // Output:# x& }" x" V5 ?/ m' b
- // {6 h! r2 {8 i3 M
- // authDate: Date(...),. h5 t$ {4 `9 f$ s6 I2 F7 y
- // hash: '...',
0 ^! V% s% p/ M, r$ K - // contact: {7 J* K. s. i6 _" |: c5 Y* {+ ?: k M
- // firstName: '...',. ^, H" w0 ]# P0 e3 {
- // phoneNumber: '+38291789233',
) n7 y% C) d7 G& s) r$ @" U - // },
( U' C2 l7 u6 t% }5 b+ P/ h9 l - // };1 t! D0 Y" n2 u: h( g8 f4 T- L
- });
复制代码 内联模式迷你应用程序可在 内联模式 下启动。 当 在这种模式下启动迷你应用程序时,允许开发人员使用 switchInlineQuery 方法: - miniApp.switchInlineQuery('Show me something', ['users', 'groups']);
' ?6 S9 u# }1 \, G% G! h+ r
复制代码调用此方法时,Telegram 应用程序会发送机器人用户名和指定文本,以 用户选择的聊天内容。 可用聊天列表将受到第二个参数中指定的聊天类型 的限制。 要检查当前 Mini App 是否以内联模式启动,开发者应参考 isBotInline 属性: 4 N5 m* [/ t# U7 P8 {3 f
- console.log(miniApp.isBotInline); // false
复制代码 生命周期方法ready通知 Telegram 应用程序已准备好显示迷你应用程序。 建议尽早调用该方法,即在加载所有基本接口 元素后立即调用。 调用该方法后,加载占位符将被隐藏,迷你应用程序将显示出来。 如果该方法未被调用,占位符只有在页面完全加载后才会被隐藏。 close关闭迷你应用程序。 如果您想将应用程序打包到底部应用程序栏,但不想关闭它,请考虑使用第一个参数 returnBack: boolean。
" P; N6 ]( m2 l2 u; L% \" T- //
) a+ X# v0 k3 C1 L - miniApp.close(true);
复制代码
]2 i2 n- U% g6 z+ h3 v3 O3 V" D4 ^/ T# w# i( [" |
其他方法sendData用于向机器人发送数据的方法。 调用该方法时,会向 机器人发送一条服务消息,其中包含长度不超过 4096 字节的数据,然后关闭 Mini App。 请参阅 Message 类中的 web_app_data 字段。
) h( c( l* V8 w7 R( u, w5 S4 e, {. L2 S& L9 Z
事件可被 跟踪 的事件列表: 事件 | 监听器 | 触发条件 | change | () => void | 组件中的某些部分发生了变化 | change:bgColor | (value: RGB) => void | 更改了 bgColor 属性 | change:headerColor | (value: HeaderColorKey or RGB) => void | 更改了 headerColor 属性 |
/ `) E! K; F4 b& d方法支持方法和参数列表,可在 support checks 中使用:requestWriteAccess、requestPhoneAccess、 switchInlineQuery、setHeaderColor、setBgColor和setHeaderColor.color。
9 [* j6 l+ @4 x$ ~4 S& g: M1 f! }3 b4 j/ z9 z
; @! D2 d$ W; F5 G! D
+ a, _5 r' `) C0 y3 k# a
/ R5 Q/ ?0 B1 t* g$ H( E' D |