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

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

回答

收藏

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

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

启动参数

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

解析

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

Usage Example :

  1. import { parseLaunchParams, launchParamsParser } from '@telegram-apps/sdk';  t/ R, z/ J! N! R

  2. . [1 ]8 x4 A2 N& o
  3. parseLaunchParams(
      s+ x- N$ b; Q  Q3 I, @2 C
  4.   new URLSearchParams([
    5 R3 O4 x' ]+ T/ Z+ j0 E8 C+ R
  5.     ['tgWebAppVersion', '6.7'],; Q0 ^) R  w2 g3 E4 ?) y) P
  6.     ['tgWebAppPlatform', 'tdekstop'],
    " x! o1 V7 z& K4 U$ D+ H9 H4 @
  7.     ['tgWebAppBotInline', '1'],6 H( Q; z! t+ ^' d' P
  8.     ['tgWebAppData', new URLSearchParams([7 _( j; L7 ^7 k" {. U
  9.       ['query_id', 'AAHdF6IQAAAAAN0XohAOqR8k'],; u" V- C/ a4 s2 m7 Z
  10.       ['user', JSON.stringify({
    5 Y2 S& k  m! p
  11.         id: 279058397,
    % K# d& Z5 [1 e( p4 \- i
  12.         first_name: 'Vladislav',1 ~" O) {" A' a6 g0 A4 t2 C
  13.         last_name: 'Kibenko',
    # P6 l1 K" i. [1 T3 M, A) l
  14.         username: 'vdkfrost',3 L1 o( o3 D4 C( G, Q% a2 J$ y
  15.         language_code: 'ru',; O6 [9 r* k1 U6 h. g
  16.         is_premium: true,$ k- J4 L- j- A/ j* R' N
  17.         allows_write_to_pm: true,8 ~  [  b) J9 @* g* ]. `
  18.       })],
    8 l1 a4 B' l4 `7 u4 l8 x* w
  19.       ['auth_date', '1691441944'],( B/ D0 C( D, d( p: \0 Z1 S
  20.       ['hash', 'abc'],
    . W7 V; S, `; y# I# M1 |$ l; _
  21.     ]).toString()],
    ! H# F7 Y2 X3 r% A- m. W& J
  22.     ['tgWebAppThemeParams', JSON.stringify({
    0 w: P( w3 s: Q7 s
  23.       bg_color: '#17212b',# O7 }8 B9 p: ^; m. w
  24.       button_color: '#5288c1',+ [7 A3 i. B1 o; W
  25.       button_text_color: '#ffffff',
    " Y7 ~# P* i; M
  26.       hint_color: '#708499',
    # R0 w9 o5 R  S# ~! ~
  27.       link_color: '#6ab3f3',
    7 ?# o! T# T# h$ E4 d4 v4 L5 e
  28.       secondary_bg_color: '#232e3c',
    ' l5 @& y- t* d2 m$ p1 t7 {+ F
  29.       text_color: '#f5f5f5',# T/ n  c$ E* F
  30.     })],$ i1 t1 [0 `  b8 T& b6 n; e  Y
  31.   ]),& \2 ?1 |* _; l/ S. |6 ^' R
  32. );
复制代码

Expected Result :

  1. const result = {
    - P1 j0 p0 {6 ]' f0 U+ v( X- s
  2.   botInline: true,- J+ ~6 e1 z/ C" C' z, k& Y
  3.   version: '6.7',
    % Y5 P6 A! `& Y7 _
  4.   platform: 'tdesktop',
    . b* B! S7 a5 _
  5.   themeParams: {
    ( o( ^! f+ C1 S: r; r3 X
  6.     bgColor: '#17212b',
    : i3 E% x+ q! B% J! ~: t
  7.     buttonColor: '#5288c1',: S& O" k8 N+ y) m! Q$ O6 U
  8.     buttonTextColor: '#ffffff',
    ' c! H9 @( V; |3 }, e
  9.     hintColor: '#708499',* x0 x2 D* n0 ^$ ?' y2 a; O" D  t
  10.     linkColor: '#6ab3f3',1 ?# J6 k3 m) m- n; K  G
  11.     secondaryBgColor: '#232e3c',
    , m* W1 Y+ ?) X; b
  12.     textColor: '#f5f5f5',
    ; i* [& _5 L/ |+ y" d0 k; h! U( R
  13.   },
    ) L0 o) e- T$ C
  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',3 ~/ h0 k, _4 F
  15.   initData: {
    3 y% _6 G0 _/ {4 Y
  16.     queryId: 'AAHdF6IQAAAAAN0XohAOqR8k',
    - [' K; E) F/ Q' J1 v3 b3 B& g, J  X
  17.     authDate: new Date(1691441944000),
    1 h2 A5 O7 D8 T. N4 f
  18.     hash: 'abc',
    6 ]$ U3 u2 s) H3 ^) a0 L1 R
  19.     user: {# c/ z# ~" a/ w% M
  20.       id: 279058397,
    # E$ {. b2 j, d% N1 |- x
  21.       firstName: 'Vladislav',
    ! l8 W& p) H2 n: [) b8 i
  22.       lastName: 'Kibenko',
    / c9 s% X' ~" V9 Y% C
  23.       username: 'vdkfrost',
    & R/ ~3 r. _, Y: h9 m8 z
  24.       languageCode: 'ru',6 S1 I; v! w( F$ F. T* ^
  25.       isPremium: true,
    # m+ G3 _, n& F3 f9 k
  26.       allowsWriteToPm: true,* Y9 j0 ?9 `( r2 h9 a' W4 [
  27.     },
    * Y% `7 }2 T  q8 d
  28.   },
    - b3 D" K& c, I2 n/ R" A8 M7 B
  29. };
复制代码
序列化

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

  1. import { serializeLaunchParams } from '@telegram-apps/sdk';- h- O- U: Z3 p6 u" \
  2. ( o% \! u3 P& M5 k6 t. i  J, @
  3. serializeLaunchParams({  Q, d+ N1 I: v5 [
  4.   version: '6.7',
    4 b( C; c4 e5 G5 F: s8 J  Q% l
  5.   platform: 'tdesktop',- h) k. H) g8 d5 y7 x: L
  6.   themeParams: {
    & N4 M. P# L3 ?" ?+ T
  7.     bgColor: '#17212b',
    , p1 ?6 n" Y% c- L. E
  8.     buttonColor: '#5288c1',
    5 b: W  R% F. j  e
  9.     buttonTextColor: '#ffffff',/ J1 p# V1 `. ~/ m
  10.     hintColor: '#708499',( v0 U9 D& T6 R3 `1 E
  11.     linkColor: '#6ab3f3',
    + b' D/ u: U' M
  12.     secondaryBgColor: '#232e3c',/ B( r+ b' r6 u( G0 J# o5 j
  13.     textColor: '#f5f5f5',, s& o- a3 E# H7 c" `* o  t$ x
  14.   },
    4 T/ `3 m6 M4 q. c8 q# N' q2 W1 G
  15. });4 ?2 P; E, |4 W" l" a6 z
  16. + v. h( ]- _$ _; I1 B
  17. // Result:
    ) y& I2 |+ [, l4 i- L8 G: b$ }
  18. // tgWebAppVersion=6.7
    2 R, i) a# U% R9 s
  19. // &tgWebAppPlatform=tdesktop" P$ p# k, w+ ?5 @- v
  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';
    + o1 I% z5 W+ e) V4 J
  2. ( h* ^' X, z( k' i- f3 \' ?
  3. const launchParams = retrieveLaunchParams();
复制代码

# ]6 m7 |' ]3 l$ ]
4 b. d% {* Q' ^# m& h0 H7 H
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则