English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE คนไทย Français русский

回答

收藏

Telegram 小程序 | TypeScript @telegram-apps/sdk @1.x | 启动参数

开源社区 开源社区 7556 人阅读 | 0 人回复 | 2025-02-23

启动参数

本节 SDK 涵盖与 launch parameters 相关的主题。

解析

要解析作为启动参数的值,软件包提供了 parseLaunchParams 方法。 方法接受以字符串或 URLSearchParams 实例形式呈现的查询参数,并返回 LaunchParams 接口。 如果传递的数据无效,则会出错。

Usage Example :

  1. import { parseLaunchParams, launchParamsParser } from '@telegram-apps/sdk';! V' o; ?$ h7 ?% h! }/ ]6 |  \
  2. " i/ L; w; }3 v2 w6 U
  3. parseLaunchParams(( ?+ a2 B4 O4 _9 v6 F0 a( @& i1 x0 v2 c
  4.   new URLSearchParams([
    , D# h: x' Z% ?$ Q1 z
  5.     ['tgWebAppVersion', '6.7'],% L' Z4 U* ^6 r- }
  6.     ['tgWebAppPlatform', 'tdekstop'],
    & u$ H$ e, Q, f" I- J
  7.     ['tgWebAppBotInline', '1'],2 r; G7 k! ]$ l$ e) q9 k4 G1 h
  8.     ['tgWebAppData', new URLSearchParams([8 a6 W: p0 s/ p5 O0 i& b
  9.       ['query_id', 'AAHdF6IQAAAAAN0XohAOqR8k'],4 ?3 b$ \" z3 G) U' l. y' R8 T
  10.       ['user', JSON.stringify({
    1 h. {5 |4 ]9 Q6 n8 G9 j
  11.         id: 279058397,) Z1 K* D: @) S5 s' l3 t4 A
  12.         first_name: 'Vladislav',
    , E* y0 r: g( v" l5 q/ e+ e
  13.         last_name: 'Kibenko',! W) x0 d; |) r6 u
  14.         username: 'vdkfrost',! t) g8 J, s/ U, Z
  15.         language_code: 'ru',+ @' I2 d% H4 ?2 Y# B: n; Y$ ^
  16.         is_premium: true,2 n1 n) \) E+ I& E6 b3 F
  17.         allows_write_to_pm: true,
    $ `. w0 r" Q+ a
  18.       })],
    ; J" r0 w( D% |& y' ^
  19.       ['auth_date', '1691441944'],5 {5 t* J. S! u9 j  [% _
  20.       ['hash', 'abc'],
    + S. F8 ~2 \, T3 l; V4 t
  21.     ]).toString()],
    0 F8 W+ A; I" N1 H( [
  22.     ['tgWebAppThemeParams', JSON.stringify({
    8 E1 ]* w/ R5 B; C5 F! P: D
  23.       bg_color: '#17212b',3 h0 z# g* x% S, e/ G
  24.       button_color: '#5288c1',8 x/ @$ k+ j* M. `; w" G. C# j
  25.       button_text_color: '#ffffff',
    , O6 T8 r& z+ v% F- P
  26.       hint_color: '#708499',
    4 Z, U1 ^, q9 }; C1 @, D# f
  27.       link_color: '#6ab3f3',4 @9 f+ |4 W; ?2 S
  28.       secondary_bg_color: '#232e3c',
    % J1 e( r) c) ~- _% h6 e
  29.       text_color: '#f5f5f5',! I$ K  J. @6 n! x6 F/ m8 P  Q
  30.     })],7 |$ i8 A( ^7 k$ k3 i$ A. e7 v7 G
  31.   ]),
    2 n4 i# Z. T  _: j& F4 ]9 `% ^
  32. );
复制代码

Expected Result :

  1. const result = {
    0 a& l/ H0 M& e' c: M" ]5 i
  2.   botInline: true,0 r4 `' ^! z/ a9 `+ l6 W7 k4 L
  3.   version: '6.7',
    & h! U8 C7 U' F
  4.   platform: 'tdesktop',
    ' i1 ]9 g, L3 T" B" C, j
  5.   themeParams: {8 X- h) E: b2 b# r
  6.     bgColor: '#17212b',
    6 \! [% G8 D, X, v- p
  7.     buttonColor: '#5288c1',' z( Y! j9 e. q: i$ f8 O- u
  8.     buttonTextColor: '#ffffff',. L3 G; p# E8 t: C9 c
  9.     hintColor: '#708499',5 R+ P( V6 G( X* }' D' g, `7 K
  10.     linkColor: '#6ab3f3',1 j" [1 }6 E+ R8 X* ^7 Q! B
  11.     secondaryBgColor: '#232e3c',+ E- S6 `( e+ M1 T' j: Y$ R% T
  12.     textColor: '#f5f5f5',
    : {1 j0 g+ e8 A) Q9 f0 G7 |
  13.   },/ I& \* H( }) i
  14.   initDataRaw: 'query_id=AAHdF6IQAAAAAN0XohAOqR8k&user=%7B%22id%22%3A279058397%2C%22first_name%22%3A%22Vladislav%22%2C%22last_name%22%3A%22Kibenko%22%2C%22username%22%3A%22vdkfrost%22%2C%22language_code%22%3A%22ru%22%2C%22is_premium%22%3Atrue%2C%22allows_write_to_pm%22%3Atrue%7D&auth_date=1691441944&hash=abc',
    ; v2 `- M/ f8 W# Z
  15.   initData: {( v% o/ R- ~1 `
  16.     queryId: 'AAHdF6IQAAAAAN0XohAOqR8k',5 Y+ B( `0 D; l. n) O* A3 `4 z
  17.     authDate: new Date(1691441944000),
    9 Q# t3 e0 W0 @8 }+ a& ^
  18.     hash: 'abc'," a! z+ B3 p! _
  19.     user: {
    ( `/ }- ^1 i% K/ t. h, P5 O
  20.       id: 279058397,# _3 v/ y  |+ ?. ?
  21.       firstName: 'Vladislav',8 ?9 S  q$ a" k& S7 j
  22.       lastName: 'Kibenko',+ k( Y! @# A* C
  23.       username: 'vdkfrost',
    3 y* q, W" U3 J4 {2 ?7 f7 P
  24.       languageCode: 'ru',
    ( B; q6 D9 u9 l& x+ }
  25.       isPremium: true,
    : l0 o! t9 |) Q0 G! J
  26.       allowsWriteToPm: true,
    " o( e. {. i. ^0 s
  27.     },! S9 _; p/ m/ |7 L4 _( O
  28.   },
    0 ?& J( k: ~) ]/ ~* u
  29. };
复制代码
序列化

要将启动参数对象表示转换为字符串,开发人员应使用 的 serializeLaunchParams 函数:

  1. import { serializeLaunchParams } from '@telegram-apps/sdk';
    , j' u# ^, Q+ P' {& z0 W. }
  2. 9 E# q% Z, o- p4 C. p
  3. serializeLaunchParams({
    8 k% N8 V9 A* G4 r) f
  4.   version: '6.7',
    8 T* k0 q5 i/ T: _
  5.   platform: 'tdesktop',& E# f" @/ z8 o4 d/ i9 j5 J, o# p
  6.   themeParams: {$ I, E5 Q5 C- w3 w6 t- E8 ~
  7.     bgColor: '#17212b',+ V$ N1 K- b. T& ^! J% T- ?
  8.     buttonColor: '#5288c1',9 j3 Z$ [  w: ?( Z9 V# U" B
  9.     buttonTextColor: '#ffffff',9 z2 u8 d9 D# B2 d, `8 a) J2 X" U
  10.     hintColor: '#708499',  Q( N& k( _% d4 o7 y4 o
  11.     linkColor: '#6ab3f3',9 g, ^0 o: _/ \4 Y
  12.     secondaryBgColor: '#232e3c',
    1 }$ U( E: d/ q3 }
  13.     textColor: '#f5f5f5',, H7 N3 x: b, a  }4 t
  14.   },0 R' \1 v+ i% S, R/ d2 J0 r: c& @- z
  15. });
    . @: z5 w6 |3 C0 Z" Y+ H

  16. . Q" Z: ^$ b* q3 s7 d3 G1 ]/ D
  17. // Result:
    5 j& L5 W( \8 q, o1 \
  18. // tgWebAppVersion=6.7
    , ]- X' d$ j" H, t& s( J( }
  19. // &tgWebAppPlatform=tdesktop  A' z9 m. ^; q* k  _. c6 U
  20. // &tgWebAppThemeParams=%7B%22bg_color%22%3A%22%2317212b%22%2C%22button_color%22%3A%22%235288c1%22%2C%22button_text_color%22%3A%22%23ffffff%22%2C%22hint_color%22%3A%22%23708499%22%2C%22link_color%22%3A%22%236ab3f3%22%2C%22secondary_bg_color%22%3A%22%23232e3c%22%2C%22text_color%22%3A%22%23f5f5f5%22%7D
复制代码
检索

该软件包可使用 的 retrieveLaunchParams 函数从当前环境中提取启动参数。 如果所有已知数据源都包含无效数据,则 会抛出错误。

  1. import { retrieveLaunchParams } from '@telegram-apps/sdk';: e8 ^& n( z! _1 o6 q
  2. ) N1 ]# s& x- s9 @* \7 z7 J. `+ v
  3. const launchParams = retrieveLaunchParams();
复制代码

) E( y* ?0 P2 Q6 \. L' ^& A! z, g
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则