本帖最后由 riyad 于 2025-2-23 03:46 编辑 $ u0 j$ d; b, c2 |
, Y' [. s, ~: c, T5 s
迷你应用程序该组件提供其他系统 组件未涵盖的 Telegram Mini Apps 通用功能。 初始化要初始化组件,请使用initMiniApp函数: - import { initMiniApp } from '@telegram-apps/sdk';6 S l, {) L& A" o0 |3 e: p
- + H$ m( n* X! |3 J: s% G
- const [miniApp] = initMiniApp();
复制代码 颜色页眉开发人员可以获取并更新 Mini App 的标题和背景颜色。 要获取 标题颜色的当前值,开发人员可参考 headerColor 属性,并通过 setHeaderColor 方法进行更新: - miniApp.setHeaderColor('secondary_bg_color');
. M, x, I5 V0 @8 K+ L# K" O0 C - // or starting from v6.10:
; S: Q: Q- T4 e* n: }+ J - miniApp.setHeaderColor('#aa1132');
复制代码 背景介绍除了迷你应用程序的标题颜色,开发人员还可以调整其背景颜色: - miniApp.setBgColor('#888311');
复制代码 迷你应用背景色用于确定当前迷你应用是否为深色调。 要知道 当前调色板是否为暗色,开发人员应使用 isDark 属性:- console.log(miniApp.isDark); // false
复制代码 访问请求从 Telegram Mini Apps 6.9 版本开始,允许 Mini Apps 申请访问手机 号码和申请写入当前用户的权限。 为此,允许开发人员使用 requestPhoneAccess 和 requestWriteAccess 方法: - miniApp.requestPhoneAccess().then(() => {) a( [7 V7 v9 f
- // done.3 {" `2 _: m2 a. k$ ~1 g* a
- });
* t# t9 [6 C' l6 C% h, c( s - 9 f2 }/ p6 j7 m! T
- miniApp.requestWriteAccess().then(() => { k; L0 q! `+ w# R* b( H x" Q
- // done.
2 c6 |* ]2 S. C0 A2 M - });
复制代码要请求联系信息(例如电话号码),请使用 requestContact 方法: # J/ y( Y1 q+ ~+ ]4 R( F x' g- K
- miniApp.requestContact().then(contact => {
+ j w- T4 G1 h9 c - console.log(contact);
0 Z! @, ?7 V# v% t; M - // Output:0 E5 U4 x/ }) d% d4 E
- // {
# K, }5 B$ u) r. [3 ~; [& x" \; F - // authDate: Date(...),3 I( x- r2 `( x J7 m
- // hash: '...',
# c& C$ X' v0 J J9 p0 w9 O8 N: T - // contact: {- K. {. U( s' O9 D* d; p9 P
- // firstName: '...',9 q4 C7 m) y' }! Z
- // phoneNumber: '+38291789233',
* K6 a" C, D* Q7 F1 | N+ r - // },# {, F' Q0 x8 y8 o4 ~$ m
- // };
3 ?- N( I5 T* h% z/ D9 l! A0 R7 |# Q - });
复制代码 内联模式迷你应用程序可在 内联模式 下启动。 当 在这种模式下启动迷你应用程序时,允许开发人员使用 switchInlineQuery 方法: - miniApp.switchInlineQuery('Show me something', ['users', 'groups']);' w, W) o: I. |
复制代码调用此方法时,Telegram 应用程序会发送机器人用户名和指定文本,以 用户选择的聊天内容。 可用聊天列表将受到第二个参数中指定的聊天类型 的限制。 要检查当前 Mini App 是否以内联模式启动,开发者应参考 isBotInline 属性:
2 v- c0 @8 ]5 `9 C8 y' r2 Q) Z/ \2 O- console.log(miniApp.isBotInline); // false
复制代码 生命周期方法ready通知 Telegram 应用程序已准备好显示迷你应用程序。 建议尽早调用该方法,即在加载所有基本接口 元素后立即调用。 调用该方法后,加载占位符将被隐藏,迷你应用程序将显示出来。 如果该方法未被调用,占位符只有在页面完全加载后才会被隐藏。 close关闭迷你应用程序。 如果您想将应用程序打包到底部应用程序栏,但不想关闭它,请考虑使用第一个参数 returnBack: boolean。
8 X2 s3 L3 P7 T9 [8 q& \' S" `- //3 V2 m5 c2 G9 [9 N Z& e
- miniApp.close(true);
复制代码
! V+ e7 a0 _: [4 v) P. R: p5 }3 f2 k- W) u
其他方法sendData用于向机器人发送数据的方法。 调用该方法时,会向 机器人发送一条服务消息,其中包含长度不超过 4096 字节的数据,然后关闭 Mini App。 请参阅 Message 类中的 web_app_data 字段。 6 s/ G8 d# X# A4 g$ N7 L5 A
5 c, X7 e# n5 R$ _2 x
事件可被 跟踪 的事件列表: 事件 | 监听器 | 触发条件 | change | () => void | 组件中的某些部分发生了变化 | change:bgColor | (value: RGB) => void | 更改了 bgColor 属性 | change:headerColor | (value: HeaderColorKey or RGB) => void | 更改了 headerColor 属性 |
4 e3 ] X: M, ]( S6 n6 \6 y2 a; ~方法支持方法和参数列表,可在 support checks 中使用:requestWriteAccess、requestPhoneAccess、 switchInlineQuery、setHeaderColor、setBgColor和setHeaderColor.color。
& q. u9 s8 r8 c a
) H$ p) N" P& @6 [
: G$ n9 u3 e/ n+ Y) b! M! e: H. q% D2 `- C- Z
3 G9 Q- E) ~6 w% |6 J% U. i: S
|