本文涵盖与 apps communication 事件相关的主题。, J% p: h. ~: E7 a% g2 R
: B6 z5 `* F$ u# D. F7 E+ I
* d. o4 v8 w) X9 _定义事件处理程序为避免副作用,该软件包在导入时不会调用任何函数。 Telegram 迷你应用程序 需要在本地 Telegram 应用程序和迷你应用程序之间使用特定的通信方式,其中涉及在全局 window 对象中定义某些方法。 要启用此功能并开始接收 Telegram 迷你应用程序事件,请使用 defineEventHandlers 函数: - import { defineEventHandlers } from '@telegram-apps/bridge';
+ l5 Q) _& ]# [ - 7 U8 u* h+ R" y" q, j0 w. I& [
- defineEventHandlers();
复制代码这种设置通过监听 和处理必要的事件,确保迷你应用能与原生 Telegram 应用正确交互。 3 p) b5 a! W/ ^2 L( j
on 和 off要开始处理事件,需要使用 on 和 off 函数。 下面是 on 函数的一个基本示例: - import { on } from '@telegram-apps/bridge';
. Y3 o, N8 X$ N* M% r
( W' X& p: i9 o& U: M4 t- // Start listening to the "viewport_changed" event. The returned value
' k! d1 \' y3 t9 } - // is a function that removes this event listener.4 Q) `' ]/ X# ]9 Q* W& U
- const removeListener = on('viewport_changed', (payload) => {' H; i$ O9 F5 J2 Y8 B8 q
- console.log('Viewport changed:', payload);
5 _& ^* j' H- |4 k4 W: z u" } - });
{: m1 t$ o$ e w8 l8 H
4 H" v, w. O- L7 ~' U; O- // Remove this event listener.
% N B' }0 E; k+ ]5 W- z$ P - removeListener();
复制代码 , s9 N0 _, _, q; t( b( \
另外,要停止监听事件,开发人员可以使用 off 功能: - import { on, off, type EventListener } from '@telegram-apps/bridge';% l1 a6 Y1 p* C/ C8 w2 X) E1 }6 i9 P
- e: l) ~* p0 m9 V. T) p
- const listener: EventListener<'viewport_changed'> = (payload) => {( i. ^% W4 m" o: }
- console.log('Viewport changed:', payload);( U d m' R) ^- _
- };3 n6 c D8 @1 J2 s* A
; g, g5 j0 p& W7 w- h1 c" B+ b0 d- // Start listening to the event.
) o8 N3 F r6 S+ I! |0 W2 } - on('viewport_changed', listener);
H) w+ f2 A2 j& \ - 5 t% T U' K x' `1 |7 P/ S
- // Remove the event listener.
1 ?2 V$ r7 g2 i8 i - off('viewport_changed', listener);
复制代码
2 u8 n" D, v& H0 {要只调用监听器一次,则使用第三个布尔参数: - import { on } from '@telegram-apps/bridge';
3 h, e: [! |8 `( g l. } - & f1 r# l2 R3 I
- // Will automatically be removed after the first listener execution.+ q# ]8 ^& X! p$ B0 X
- on('viewport_changed', (payload) => {0 [: a2 o* k; E2 g9 J, Z
- console.log('Viewport changed:', payload);1 t; v) Q! y1 W' c" g$ }6 G
- }, true);
复制代码 subscribe 和 unsubscribe
# v n9 j8 Y. U8 o' L! `! I0 q要监听本地 Telegram 应用程序发送的所有事件,需要使用 subscribe 和 unsubscribe 功能: import {" V9 [4 N4 K: e: v3 ]
subscribe,) ^6 D# u% B/ f
unsubscribe,& x L$ c1 K5 [4 R5 s8 }4 J3 z. ?
type SubscribeListener,) ~: R- P8 {0 k4 S8 V
} from '@telegram-apps/bridge';
. |. p7 I* e3 U8 \$ y, J
0 W- U" G0 h* U( Hconst listener: SubscribeListener = (event) => {
R1 a" L# x) r S console.log('Received event', event);
) H1 {- p3 K* ]* ]};$ q) a% c0 R H5 ?# Q I
) M5 K% M6 j% Y, I6 \4 ~
// Listen to all events.
9 R% C+ A/ G' gsubscribe(listener);
) g- b3 ~* Z0 f1 F
. S# w' B& Z9 z* n+ [% c# B7 z// Remove the listener.+ S4 Q* [6 b; @# P8 z* L
unsubscribe(listener);
4 U* M$ M+ C! [2 n8 r3 g% }5 B+ ?. z3 F3 }
% w% L- p& o O; s9 H; k: d
2 [4 N- u9 f/ E% M0 e
: I! F! T- ?( @: l8 _$ ~# R" B- T( b, u
! V" ~9 I) ~* v% X
7 Y0 [* |5 @+ X0 k# o |