本文涵盖与 apps communication 事件相关的主题。
& Q0 s7 {0 ?2 N$ y5 m- f; H0 G2 M$ g$ V5 r" W# a
* U- e6 U0 L9 ^1 b定义事件处理程序为避免副作用,该软件包在导入时不会调用任何函数。 Telegram 迷你应用程序 需要在本地 Telegram 应用程序和迷你应用程序之间使用特定的通信方式,其中涉及在全局 window 对象中定义某些方法。 要启用此功能并开始接收 Telegram 迷你应用程序事件,请使用 defineEventHandlers 函数: - import { defineEventHandlers } from '@telegram-apps/bridge';: ]5 j, K# F V8 X
- ( H; R+ r% G! m" }! Y3 t. @) k( n2 e
- defineEventHandlers();
复制代码这种设置通过监听 和处理必要的事件,确保迷你应用能与原生 Telegram 应用正确交互。
& b( S) z/ {4 P' E+ K/ O$ |on 和 off要开始处理事件,需要使用 on 和 off 函数。 下面是 on 函数的一个基本示例: - import { on } from '@telegram-apps/bridge';
- t, s$ Y3 O% r/ R7 u
7 S6 o u7 Q9 \" u h- // Start listening to the "viewport_changed" event. The returned value, X& ^% g/ _' u, S" p% }
- // is a function that removes this event listener.) S9 M* ]% S& o- ?7 G1 O" t4 k/ B
- const removeListener = on('viewport_changed', (payload) => {
: f& n' |, _! o u; W" ? - console.log('Viewport changed:', payload);
3 E2 @1 ~; N2 S# c2 w! p% s6 w - });
4 v0 p- G5 E0 q" j7 ]6 u - ! _2 H3 S$ c2 j, H8 `5 { ~& z/ x
- // Remove this event listener.
% X; ?6 }1 C! |7 R2 [0 y2 @ - removeListener();
复制代码
' ?3 ~& e0 T7 p( f/ j. H: f7 Y: v另外,要停止监听事件,开发人员可以使用 off 功能: - import { on, off, type EventListener } from '@telegram-apps/bridge';
9 k0 q& k. N/ z6 \( |4 M/ W8 W, s
O" g* e. _1 i" {- const listener: EventListener<'viewport_changed'> = (payload) => {3 ~4 @" u0 @& i. ^8 `+ F
- console.log('Viewport changed:', payload);6 U) w/ R4 Q; @) S+ C
- };
1 }$ n4 _9 D0 J/ I
. Y1 T" g" J$ [; |+ ^9 I& m V- // Start listening to the event.3 }; A3 z# v( ^$ h" V) L
- on('viewport_changed', listener);
- i4 |2 k! f2 s D/ M+ k - " G6 m" |6 v r9 }
- // Remove the event listener.
5 K6 D8 ]2 r# o; B |; f - off('viewport_changed', listener);
复制代码
* r" ~. P% u. ]& i0 @要只调用监听器一次,则使用第三个布尔参数: - import { on } from '@telegram-apps/bridge'; u9 h3 ]: `. F: j/ n5 F
- 8 w/ r* @7 u% l
- // Will automatically be removed after the first listener execution.& E k. k% l: h1 g- J. n
- on('viewport_changed', (payload) => {; j) K" P1 W- ?1 d0 r, Z2 X/ ~
- console.log('Viewport changed:', payload);4 P; S0 i' }$ Y5 ~3 c5 n! a1 o
- }, true);
复制代码 subscribe 和 unsubscribe
, t1 P# D: M0 _& [. u" i' x" T要监听本地 Telegram 应用程序发送的所有事件,需要使用 subscribe 和 unsubscribe 功能: import {9 i& l- j; l1 t7 P. C
subscribe,, o: U4 h/ T, u0 d0 U; _. ]1 S2 H
unsubscribe,+ o+ e3 S. q" i3 t
type SubscribeListener,
& c7 _- }$ G& i" I L0 z} from '@telegram-apps/bridge';3 d8 z( ?! q2 y$ y
0 T/ I; r2 M1 Y# d. V4 g
const listener: SubscribeListener = (event) => {
+ u; ^3 t9 C2 H% u4 Z) v. t6 ` console.log('Received event', event);* B/ Y9 U ? @# R
};
6 A% [9 j2 `# g. K6 Y+ S. c; R! ^) G1 J/ U* Z( I8 I: `# U
// Listen to all events.4 y+ ^7 x- E* b0 D5 d
subscribe(listener);* V+ d( M; P0 {! k8 E$ E7 g
9 c3 H* K, f* u) ~5 u6 R( l8 p* z
// Remove the listener.
1 {- G. n& H/ X3 ounsubscribe(listener);
3 ?( h' Z& P6 l! h+ m; B) p8 n7 _
/ g# _$ o% ? |& W( P+ \9 m9 e q8 c b
% h& F* e3 }- E' y. D2 a/ W' H4 h1 \2 w8 O' D2 w
; s$ C6 r2 S$ g! k! _% f8 h
, k. z$ ^+ ?* J6 n |