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

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

回答

收藏

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

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

本帖最后由 riyad 于 2025-2-21 19:29 编辑
9 L+ y5 R& j4 R) }+ U$ A
: j! a7 s% [) A$ O* N7 P9 ]
开发人员经常希望让他们的应用程序具有“粘性”特性。在这种情况下,“粘性”指的是防止应用程序被意外关闭,例如通过向下滑动的手势。

: l' z, c- a: g" `
在采取措施防止意外关闭之前,首先必须了解为何会出现这种行为。

9 V9 g/ G! u) L5 V- ]/ t+ A
Telegram 迷你应用程序允许开发人员控制关闭按钮的可见性,有时会将其替换为返回按钮。因此,Telegram 开发人员希望确保即使关闭按钮不可见,用户仍能退出应用程序。这就是“向下滑动”机制存在的原因。
- |' o6 c, k8 J1 G# ^; m
假设应用程序显示了返回按钮,但该按钮没有响应。在这种情况下,用户无需关闭整个 Telegram 应用程序,只需向下滑动即可关闭迷你应用程序。因此,在禁用该机制之前,请确保您的应用程序不会变得反应迟钝并困住用户。

& \. Z' S6 r9 e, E- C
最后,检查一下 关闭确认 是否满足您的需求。
% l  `0 t* y+ \/ P
使应用程序具有粘性
要使应用程序具有粘性,可以使用特定的 CSS 样式,防止 WebView 将 刷屏事件传递给 Telegram 应用程序。
$ E- |2 m$ r& J/ J( b. b

# {% l. u2 }% a/ R% V5 j0 z
以下是您可以使用的 HTML 和 CSS:
  1. <!DOCTYPE html>
    8 ]2 h3 x  J7 y8 l5 K! i" |9 T, b6 F
  2. <html lang="en">' n  y2 j% U% L
  3. <head>6 c9 N6 u/ C/ p& Q* Z. i9 d
  4.   <meta charset="UTF-8">9 T2 h! {# v2 c8 t
  5.   <meta7 t( r) X  L; }6 D- Y% ]
  6.     name="viewport"
    " R, a* ~! r, q5 C
  7.     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0". M: N% K0 S9 n( F9 d
  8.   >
    & r; M; i9 n) H  w( ?/ W
  9.   <meta http-equiv="X-UA-Compatible" content="ie=edge">
    $ Q( _, |" J4 S$ ^* I1 u
  10.   <title>My Mini App</title>
    : g" D- n( X7 z2 ?6 G" M. c+ Y
  11.   <style>5 x8 \/ f( E2 z
  12.     .mobile-body {
    & c0 f" W6 G; F& b
  13.       overflow: hidden;0 i, H6 [6 [/ b* D- }, [
  14.       height: 100vh;
    ( Z; M. @/ {0 f# M0 i3 S! H2 x
  15.     }
    5 j$ U: j1 M2 B# q$ A+ |: g

  16. " R2 ]  j# K. s5 _  U
  17.     .mobile-wrap {6 Q1 I5 s$ \; K+ ?$ I5 b( K. K
  18.       position: absolute;
    2 o/ @$ M: f+ i& Q- d7 X
  19.       left: 0;. L9 }) v+ E5 J
  20.       top: 0;8 \) u% c6 ]& n7 ~0 ]
  21.       right: 0;) q, J3 D5 u6 s+ n
  22.       bottom: 0;5 Q! Q& G6 A% k7 O
  23.       overflow-x: hidden;
    9 p( f$ e9 U( d# v7 w" ]; l
  24.       overflow-y: auto;
    + \! ^9 O1 R, z3 h1 ^) {. a
  25.       background: red;  u: u, m$ y/ f' i/ M: }* p  y
  26.     }$ ^- k$ N0 |) z1 K- J! G

  27. 0 x- M: c, q# P& W3 X( l6 N1 O' I
  28.     .mobile-content {+ d6 u7 V4 f) y& v
  29.       height: calc(100% + 1px);# F6 e9 v$ h/ o. P+ ]5 D
  30.       background: green;$ M# A9 _7 H0 E/ _
  31.     }
    , _8 u: m: D* h" |% x! h5 [
  32.   </style>
    $ _! g# b4 B+ d, I' W
  33. </head>+ Y/ F6 h+ b6 z, V2 g
  34. <body>
    ) h) T8 }) Q0 j- A: j
  35.   <div id="wrap">
    - ^8 D2 v# P% f0 p
  36.     <div id="content">4 h% j! H8 j9 D3 N+ k0 N
  37.       My application goes here.5 I3 G" k3 t1 x  T
  38.     </div>2 j' q) y: q3 @: b8 T* V
  39.   </div>
    2 J% I( w) M' ?% v: d
  40.   <script src="https://unpkg.com/@telegram-apps/[email protected]/dist/index.iife.js"></script>7 D+ `+ t$ V) I+ m  X0 A
  41.   <script>' Q1 r3 ~4 ^/ R# j
  42.     (function() {
    7 T" H5 D* e; d
  43.       var { retrieveLaunchParams, postEvent } = window.telegramApps.sdk;6 l& W- ?( W5 }0 g5 r3 s
  44.       var lp = retrieveLaunchParams();/ i# v- }, ~$ r9 p: c4 k
  45. ! i3 A9 B  R4 W- C% q: K
  46.       // Some versions of Telegram don't need the classes above.
    : ^2 Y* C" ~$ f& L" r2 Q
  47.       if (['macos', 'tdesktop', 'weba', 'web', 'webk'].includes(lp.platform)) {* L4 l: {2 H! O
  48.         return;
    $ s- P" O2 m6 K, m& ?
  49.       }  m+ ]4 V" q9 i  A/ c3 }1 c

  50. ( r& d  f* E+ j7 p6 }
  51.       // Expand the application.
    & d9 U9 c5 P8 g* ]6 h0 t5 @
  52.       postEvent('web_app_expand');* W3 Z4 i( q# b/ f7 u3 s8 O- v$ K

  53. / H* M1 [' d3 M% U0 ~% W0 {
  54.       document.body.classList.add('mobile-body');- N5 x7 ]- [9 z$ K0 L: S
  55.       document.getElementById('wrap').classList.add('mobile-wrap');
    , |" O, l* Y) @3 z
  56.       document.getElementById('content').classList.add('mobile-content');; w+ _- l1 ~! v. `5 c% A
  57.     })();& i! e9 r1 N( O6 x8 D: d" c
  58.   </script>
    * c# Z& S+ ]8 Y  {* T: h: T" ^
  59. </body>6 u) r; c' h: n4 r- y
  60. </html>
复制代码

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

在 Telegram 中打开 ( 源代码)

# L, d$ Y( a( ~6 z9 ^$ h9 c
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则