本文涵盖与 apps communication 事件相关的主题。
- C0 `& @" |4 M% S" n; [2 I3 ?( h- _) b: J7 b: r6 X
! p) T+ O5 `4 l, P+ L% I, h9 _
定义事件处理程序为避免副作用,该软件包在导入时不会调用任何函数。 Telegram 迷你应用程序 需要在本地 Telegram 应用程序和迷你应用程序之间使用特定的通信方式,其中涉及在全局 window 对象中定义某些方法。 要启用此功能并开始接收 Telegram 迷你应用程序事件,请使用 defineEventHandlers 函数: - import { defineEventHandlers } from '@telegram-apps/bridge';
2 X. { a2 G" w- V1 Y' _% c0 |
. h9 f. B' G9 t E2 L+ Q- defineEventHandlers();
复制代码这种设置通过监听 和处理必要的事件,确保迷你应用能与原生 Telegram 应用正确交互。 / }7 ~' p7 D! |( W4 V5 N( K1 y
on 和 off要开始处理事件,需要使用 on 和 off 函数。 下面是 on 函数的一个基本示例: - import { on } from '@telegram-apps/bridge';% c- s2 F9 ] c, h9 F
" t/ Z3 d& w$ F) ^* A) C# H- // Start listening to the "viewport_changed" event. The returned value) U0 d3 @, b7 H5 }
- // is a function that removes this event listener.. }: z& j' A: d! } b9 }/ {; F
- const removeListener = on('viewport_changed', (payload) => {
! ^6 ~7 R9 W6 ]) Z% M7 f2 }) Z0 { - console.log('Viewport changed:', payload);* ]8 g5 o/ m4 ]! D. G! M6 E5 T4 i
- });
) ^+ Z0 y) m% i - + \, V! `* p; a: u1 ]# q
- // Remove this event listener.
U/ ]4 ?% } |4 ~# Q - removeListener();
复制代码
7 Q8 {( _9 h3 r: n另外,要停止监听事件,开发人员可以使用 off 功能: - import { on, off, type EventListener } from '@telegram-apps/bridge';/ o8 Q# r4 @/ {( |0 M+ ?& n
: g5 y" X; [/ A- p1 e2 B$ }1 z% R- const listener: EventListener<'viewport_changed'> = (payload) => {1 L, r- O* i0 c$ O0 b
- console.log('Viewport changed:', payload);) A; p- Y" X& W, s$ Z
- };
! _4 v6 f5 ]# R4 j9 K; W - 5 K. f% s( v2 D
- // Start listening to the event." o# N8 d7 v8 ^( c( P: A4 `
- on('viewport_changed', listener);# U# {# S3 v1 s5 I
- ' | E- V& J& G6 f& @8 B. n
- // Remove the event listener.7 @0 y0 i5 k6 S' S( l
- off('viewport_changed', listener);
复制代码 4 B3 {: b3 D& P% l- J# G
要只调用监听器一次,则使用第三个布尔参数: - import { on } from '@telegram-apps/bridge';
0 Q: Q6 O d* j1 g9 G - 5 I* @7 ]4 _* W: V: f: }
- // Will automatically be removed after the first listener execution.* q, c" R/ _8 s3 M- k
- on('viewport_changed', (payload) => {+ ?7 |3 |' F6 l2 K4 p5 a' B8 A
- console.log('Viewport changed:', payload);
) o" I1 h7 ^. T - }, true);
复制代码 subscribe 和 unsubscribe a5 {4 s" p: t& S6 A
要监听本地 Telegram 应用程序发送的所有事件,需要使用 subscribe 和 unsubscribe 功能: import {( d# O8 \! C- C' W9 b1 X
subscribe,
5 m* {& _+ G f8 n% f unsubscribe,
9 B- r: n4 u, M7 c2 A0 X8 i type SubscribeListener,1 h2 O* B0 i. [4 i
} from '@telegram-apps/bridge';4 p r6 B, s8 ~( c% P, o7 f! M
! e& [! q! q4 B% ]8 A
const listener: SubscribeListener = (event) => {
5 q/ n# t, u' c" N console.log('Received event', event);# R4 |- E: ]7 _$ M+ C6 \) \/ w% j
};
) [4 B3 e* Z5 n x& t2 {2 S
H. S+ a& t; |) @9 ~// Listen to all events.
% O4 f$ k* E) T* |1 k# @4 V% ~& ksubscribe(listener);: R, i+ E r! a: Z
5 B5 i/ `$ N1 k& t: B// Remove the listener.3 I: J( h. B* q0 p ^0 K) B4 f# a
unsubscribe(listener);
' T$ T7 v" E1 g6 {& A0 q/ @
% U+ g) H: K3 `# q, @ $ X \" K! `5 b2 j
* e3 X1 e; c( e, a9 | K9 P
0 U5 c/ b9 E9 a' S$ X( O6 f- c" r( b4 @
% V6 \" F$ D7 k/ v# |( m5 w1 T- d. f( I& S3 N/ `
|