本文涵盖与 apps communication 事件相关的主题。
6 h8 I! n! \, ^% I0 \6 k. w0 e) c% Z6 G$ U1 h H
; }( f/ f( }: a$ I
定义事件处理程序为避免副作用,该软件包在导入时不会调用任何函数。 Telegram 迷你应用程序 需要在本地 Telegram 应用程序和迷你应用程序之间使用特定的通信方式,其中涉及在全局 window 对象中定义某些方法。 要启用此功能并开始接收 Telegram 迷你应用程序事件,请使用 defineEventHandlers 函数: - import { defineEventHandlers } from '@telegram-apps/bridge';
% D/ s q7 F$ ~7 s - 2 I! j. q2 d/ f/ F
- defineEventHandlers();
复制代码这种设置通过监听 和处理必要的事件,确保迷你应用能与原生 Telegram 应用正确交互。 . z1 g" |" u( ?
on 和 off要开始处理事件,需要使用 on 和 off 函数。 下面是 on 函数的一个基本示例: - import { on } from '@telegram-apps/bridge';
8 H( w8 X' b2 k4 L9 H - 2 ?- u8 y6 M+ p3 H% B0 p
- // Start listening to the "viewport_changed" event. The returned value
1 Y/ s5 _3 O; i - // is a function that removes this event listener.% @1 `, s, [! Q' \# V' }$ }1 l
- const removeListener = on('viewport_changed', (payload) => {
2 W* n/ L0 D- w3 m6 V+ @ - console.log('Viewport changed:', payload);
4 L3 L. @) M0 i% \/ O7 O8 S - });* I/ Z( F4 k6 A8 B) R4 k6 S
/ F- A6 p7 m+ P0 Y/ }- // Remove this event listener.
~$ C5 f7 h8 ^$ ~( y$ t: |; S7 Y - removeListener();
复制代码 % X Q j; B4 G' |; o3 g
另外,要停止监听事件,开发人员可以使用 off 功能: - import { on, off, type EventListener } from '@telegram-apps/bridge';
1 s/ O) }- c& A. } - 3 k# s& h6 z8 ]6 E8 G# j
- const listener: EventListener<'viewport_changed'> = (payload) => {
1 x( q4 H l1 X - console.log('Viewport changed:', payload);
( A( ^7 U) ^6 y9 t6 K) G* e - };
( o j8 u! {! {' ~9 _5 [# ^
' I7 [5 c6 }/ d1 _9 S; k4 }9 O4 s- // Start listening to the event.3 t, A) O2 {0 E5 m; V t9 N8 `
- on('viewport_changed', listener);
3 l3 f; x! Y) w7 Z5 y# }
* F" r+ w( n H# f( M1 Z- // Remove the event listener.: m6 g" S N) k* V# C7 s
- off('viewport_changed', listener);
复制代码 1 I1 `2 f4 n# ~( ?& S' ?) J
要只调用监听器一次,则使用第三个布尔参数: - import { on } from '@telegram-apps/bridge';
% d. a- D0 ^ R3 N - . ^* ?2 W6 N( v5 V) i6 y: I
- // Will automatically be removed after the first listener execution./ N$ ?% q* y7 y9 T6 T6 ]/ k5 k
- on('viewport_changed', (payload) => {3 P2 f. h, H6 t
- console.log('Viewport changed:', payload);
1 C O- \ V+ j5 b* P - }, true);
复制代码 subscribe 和 unsubscribe% Y5 n/ u: @+ o8 {: @! E. x0 Y
要监听本地 Telegram 应用程序发送的所有事件,需要使用 subscribe 和 unsubscribe 功能: import {
+ d* e2 ~ z1 h9 x+ \9 X subscribe,
3 z2 {4 n2 b- ]; p unsubscribe,
3 ^/ h+ J' P0 W$ ~- H) J type SubscribeListener,
) e2 S4 b) G1 x0 }7 ?} from '@telegram-apps/bridge';: v/ S& q+ I0 G1 z& F0 J: f! F. y/ h
! O, F$ \9 d# m1 i$ @% b! Jconst listener: SubscribeListener = (event) => {- z' q, r6 ]0 J
console.log('Received event', event);& P: v+ I6 z6 ?) h/ m
};2 j/ H8 I! g2 a" r: C4 m
+ L8 H% C3 K2 N6 p* V h" |& }// Listen to all events.4 n2 G, o( u8 w3 i
subscribe(listener);+ X9 _9 u; t3 k. D5 G
, _3 H* y2 D4 d* k$ n. p& ?' Z
// Remove the listener.
; F' D: O: D( R) S4 k' y" vunsubscribe(listener); ; A8 r* Y& ]. Z8 ~. y T
. F; X( O) D7 Q. q1 o9 l5 b6 Z 0 H& B4 U# z* c$ Z3 j( @4 }$ J
" U* a7 s2 a9 n1 M+ F! z
& @* l& t. ?3 _' a4 Z
+ N5 t. R7 K- N, X# t" ^: A1 k" G; ]. z9 L2 k
c8 e) k( r1 j4 t- L0 X |