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

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

回答

收藏

Telegram小程序 指南 | 粘贴应用程序

开源社区 开源社区 8281 人阅读 | 0 人回复 | 2025-02-19

本帖最后由 riyad 于 2025-2-21 19:29 编辑
- p' Q$ `* B6 U/ l3 S& k* o; n3 ]3 s
开发人员经常希望让他们的应用程序具有“粘性”特性。在这种情况下,“粘性”指的是防止应用程序被意外关闭,例如通过向下滑动的手势。

1 c' G, m' i4 u- a
在采取措施防止意外关闭之前,首先必须了解为何会出现这种行为。

' P- O: c+ B3 d2 D9 Y
Telegram 迷你应用程序允许开发人员控制关闭按钮的可见性,有时会将其替换为返回按钮。因此,Telegram 开发人员希望确保即使关闭按钮不可见,用户仍能退出应用程序。这就是“向下滑动”机制存在的原因。
% G* Y0 C! |. @' f1 `
假设应用程序显示了返回按钮,但该按钮没有响应。在这种情况下,用户无需关闭整个 Telegram 应用程序,只需向下滑动即可关闭迷你应用程序。因此,在禁用该机制之前,请确保您的应用程序不会变得反应迟钝并困住用户。

3 a' g& t5 m$ m% S; B. ~% c9 b" N- m
最后,检查一下 关闭确认 是否满足您的需求。

' i; g9 y' n4 G; p3 J
使应用程序具有粘性
要使应用程序具有粘性,可以使用特定的 CSS 样式,防止 WebView 将 刷屏事件传递给 Telegram 应用程序。

4 Y9 b' ~. ~8 |+ `

4 v, K6 k$ ]2 P- J- O
以下是您可以使用的 HTML 和 CSS:
  1. <!DOCTYPE html>9 g! ^. O8 O$ |
  2. <html lang="en"># ?7 k. Z. ^- O5 K2 @
  3. <head>
    ) T+ x+ z, Y8 s" H( \! O4 h0 U) `  f! A
  4.   <meta charset="UTF-8">
    5 n: {, i, n5 W/ n- Y
  5.   <meta6 j+ z* g* E! q. P% r
  6.     name="viewport"
    + X. S& Q0 w# t% a4 r, Y1 ~0 V) g
  7.     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
    9 R3 f4 A# h; R0 q( H
  8.   >
    $ n2 c4 H; @$ W- ?% y; H
  9.   <meta http-equiv="X-UA-Compatible" content="ie=edge">& n& }! E7 s) N* c3 r
  10.   <title>My Mini App</title>$ y; `2 Q+ A3 V4 e
  11.   <style>
    " k% N- B& J2 p- N6 ?
  12.     .mobile-body {
    ! ^5 n, Z: P1 U+ h1 p& F
  13.       overflow: hidden;
    0 O0 t* |  n# f
  14.       height: 100vh;
    2 _. `, F! P' e7 a
  15.     }
    ' Q$ ]' B" n3 i- A! m

  16. 1 R# G$ ]! f# t1 i, C
  17.     .mobile-wrap {0 l0 u2 N5 a& @  l! X
  18.       position: absolute;4 o) q: C' M5 m, _$ f, Y9 t
  19.       left: 0;
    7 \6 Q% v$ t2 u' x
  20.       top: 0;
    2 t0 X( {  ]4 ^% D: T
  21.       right: 0;
    9 B  ^- I6 {$ f) T
  22.       bottom: 0;
    6 b2 ~% k8 }  Z5 j
  23.       overflow-x: hidden;/ i3 f6 M" X9 o! B, X
  24.       overflow-y: auto;
    ; }. _+ U" K- p9 O
  25.       background: red;! }8 \- q; Q# o# W4 ]
  26.     }
    0 t6 Q6 k( l/ ]; l
  27. 5 T5 V) C- `) R# F
  28.     .mobile-content {, a( X( V" ~) P
  29.       height: calc(100% + 1px);2 q# x- F9 N; n
  30.       background: green;
    " V- A  J9 M8 E% E" x' ^, Q7 w
  31.     }
    ; V6 Q( V9 u$ P5 P
  32.   </style>; q2 [8 G. o2 I0 B9 j' v: ~
  33. </head>$ W& z) S' _! z) R8 y! {. z6 P3 p
  34. <body>( x0 Z6 n" R' T  L
  35.   <div id="wrap">4 L7 {' V7 |; j2 t" I5 z
  36.     <div id="content">
    $ y; D, S& }4 G% @- r. |) Q7 c
  37.       My application goes here.; G$ x- n$ t9 Y/ W4 Z8 o5 x; M- I
  38.     </div>+ _  @) m. z% t+ G* |( q4 v& o3 C
  39.   </div>
    : O0 N6 H) n; d: D! _0 j/ U7 S
  40.   <script src="https://unpkg.com/@telegram-apps/[email protected]/dist/index.iife.js"></script>
    4 d+ a& w( W: p: j
  41.   <script>" h  [0 F- `/ p
  42.     (function() {$ I3 k! {5 {3 D% G# f8 j
  43.       var { retrieveLaunchParams, postEvent } = window.telegramApps.sdk;
    . H. _: u& x% P" q9 ^  ^0 L
  44.       var lp = retrieveLaunchParams();
    5 m: B- n' m. A/ q3 d4 g4 f) p

  45. # Y% l* [8 c1 o9 I& k7 Z
  46.       // Some versions of Telegram don't need the classes above.: {3 N; N9 C. X1 c
  47.       if (['macos', 'tdesktop', 'weba', 'web', 'webk'].includes(lp.platform)) {. |* _; R0 [$ q8 {" g  v# B! ^
  48.         return;& M  C$ O+ e' ?
  49.       }( }( g& P% U0 r, J

  50. 9 J" o$ y# S1 t8 D7 K9 t1 h
  51.       // Expand the application.
    0 U* H) z, Q9 H# X* J, M2 n. z: Y
  52.       postEvent('web_app_expand');6 s) T2 e7 g, q8 T6 r. Q

  53. 1 X/ c; {1 D0 ^7 G
  54.       document.body.classList.add('mobile-body');
    6 v( a9 z. ~$ ^# c" q
  55.       document.getElementById('wrap').classList.add('mobile-wrap');
    5 l$ n  x8 Q3 U# o( \& B& `3 H2 d) V
  56.       document.getElementById('content').classList.add('mobile-content');
    ' R0 e4 j8 A$ L  a. C3 z3 ]
  57.     })();% `: H6 f! P. J+ u8 }3 y, Q
  58.   </script>
    2 F* C2 E$ N$ z- T6 p9 n8 u& S  P
  59. </body>
    $ |2 f# Y0 h2 w0 a0 ~' l
  60. </html>
复制代码

使用这种 HTML 和 CSS 可以防止大多数意外的向下滑动关闭。 虽然这种方法涵盖了 大多数情况,但在极少数情况下可能无效,但在 实际使用中并不常见。

在 Telegram 中打开 ( 源代码)


5 r& `/ _5 {* a
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则