本帖最后由 riyad 于 2025-2-23 03:46 编辑
9 \; o0 }& @9 `0 |
9 M6 m# [& A( [% K4 l( ?迷你应用程序该组件提供其他系统 组件未涵盖的 Telegram Mini Apps 通用功能。 初始化要初始化组件,请使用initMiniApp函数: - import { initMiniApp } from '@telegram-apps/sdk';/ I2 v. u& D0 y8 I5 t) N C' ^& @
# @# t5 d, ~6 V2 j! c- const [miniApp] = initMiniApp();
复制代码 颜色页眉开发人员可以获取并更新 Mini App 的标题和背景颜色。 要获取 标题颜色的当前值,开发人员可参考 headerColor 属性,并通过 setHeaderColor 方法进行更新: - miniApp.setHeaderColor('secondary_bg_color');
# L4 {! B: F$ i( h- J3 k! l& Z+ {- | - // or starting from v6.10:: }; F; N6 v/ q! y& e. E+ T4 Y
- miniApp.setHeaderColor('#aa1132');
复制代码 背景介绍除了迷你应用程序的标题颜色,开发人员还可以调整其背景颜色: - miniApp.setBgColor('#888311');
复制代码 迷你应用背景色用于确定当前迷你应用是否为深色调。 要知道 当前调色板是否为暗色,开发人员应使用 isDark 属性:- console.log(miniApp.isDark); // false
复制代码 访问请求从 Telegram Mini Apps 6.9 版本开始,允许 Mini Apps 申请访问手机 号码和申请写入当前用户的权限。 为此,允许开发人员使用 requestPhoneAccess 和 requestWriteAccess 方法: - miniApp.requestPhoneAccess().then(() => {
) E1 q# K0 c8 r, Q+ }8 l - // done.: x' J8 ]8 {: S% r' v6 m/ r6 Y
- });
' ~. m4 }( @ c - ) g4 K- t, B/ Z2 n+ a% v5 f
- miniApp.requestWriteAccess().then(() => {$ Z7 N, X0 A( Q
- // done.8 b, k" u/ ?- f2 _( h5 z. z
- });
复制代码要请求联系信息(例如电话号码),请使用 requestContact 方法: " }* h! Z) t/ Z2 d# q
- miniApp.requestContact().then(contact => {3 \$ G0 P; l6 o- ]; ] S/ u
- console.log(contact);5 }( p2 y, Y" c0 `, \' i0 r
- // Output:
9 @ [, R% ]- ^5 F) m! Z - // {, a' L* p Q/ h9 p% |: d: F3 `$ W
- // authDate: Date(...),
1 l9 K( v6 Q- [# r, d+ c - // hash: '...',
7 V$ D2 s$ @5 U - // contact: {
' d2 F. V" U4 n+ K; p) u4 L' o - // firstName: '...',
$ q- u9 @) R& [! E7 N/ O8 q - // phoneNumber: '+38291789233',
' @' m: o. G. t& p) Y$ |: }9 g - // },
) F i. f# z& V# g' f - // };6 Y4 W0 Y J3 Q! v. H
- });
复制代码 内联模式迷你应用程序可在 内联模式 下启动。 当 在这种模式下启动迷你应用程序时,允许开发人员使用 switchInlineQuery 方法: - miniApp.switchInlineQuery('Show me something', ['users', 'groups']);
6 S" b$ V& {" o& f7 H6 M. _3 O
复制代码调用此方法时,Telegram 应用程序会发送机器人用户名和指定文本,以 用户选择的聊天内容。 可用聊天列表将受到第二个参数中指定的聊天类型 的限制。 要检查当前 Mini App 是否以内联模式启动,开发者应参考 isBotInline 属性:
, q5 ~& M W! ]) @- console.log(miniApp.isBotInline); // false
复制代码 生命周期方法ready通知 Telegram 应用程序已准备好显示迷你应用程序。 建议尽早调用该方法,即在加载所有基本接口 元素后立即调用。 调用该方法后,加载占位符将被隐藏,迷你应用程序将显示出来。 如果该方法未被调用,占位符只有在页面完全加载后才会被隐藏。 close关闭迷你应用程序。 如果您想将应用程序打包到底部应用程序栏,但不想关闭它,请考虑使用第一个参数 returnBack: boolean。( O7 a& ^# ^# e" E0 }) o+ A! x& |
- //+ c, ~. p8 X; c: M/ t
- miniApp.close(true);
复制代码
6 c( e. [; E# N7 g+ z. s' o2 J- \4 F8 C. Y& [7 f
其他方法sendData用于向机器人发送数据的方法。 调用该方法时,会向 机器人发送一条服务消息,其中包含长度不超过 4096 字节的数据,然后关闭 Mini App。 请参阅 Message 类中的 web_app_data 字段。
0 O" e) ?5 H$ w7 T9 V2 h) }( m; C; s0 |
事件可被 跟踪 的事件列表: 事件 | 监听器 | 触发条件 | change | () => void | 组件中的某些部分发生了变化 | change:bgColor | (value: RGB) => void | 更改了 bgColor 属性 | change:headerColor | (value: HeaderColorKey or RGB) => void | 更改了 headerColor 属性 | 7 W! g# \8 N# A6 W v
方法支持方法和参数列表,可在 support checks 中使用:requestWriteAccess、requestPhoneAccess、 switchInlineQuery、setHeaderColor、setBgColor和setHeaderColor.color。
" K+ O5 ]& h w* }* `0 [# w4 d! `/ J: ]! t9 H0 J
4 T" _2 V8 Y! l' j) \/ ~
1 s8 ?/ x6 l8 M
3 r" u6 d/ N! Q+ f- n9 Q |