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

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

回答

收藏

Telegram 小程序 | TypeScript @telegram-apps/sdk @2.x | 组件 | QR 扫描仪

开源社区 开源社区 3174 人阅读 | 0 人回复 | 2025-02-25

QR 扫描仪

提供 QR 扫描仪功能的💠组件

打开和关闭

要打开 QR 扫描仪,开发人员应使用 open 方法。 它接受可选的 text 属性,负责显示扫描仪标题属性,具体取决于打开的样式。

反过来,调用 open 方法会更新 isOpened 信号属性值。

要关闭扫描仪,请使用 close 方法。

回调样式

接受 onCaptured 选项,这是一个接收扫描的 QR 内容的函数。 该方法 返回一个承诺,该承诺将在扫描仪关闭后解析。

Variable :

  1. import { qrScanner } from '@telegram-apps/sdk';% ^' o5 O! i" j
  2. ' i1 P% X* P* n4 ?3 q
  3. if (qrScanner.open.isSupported()) {; b9 \2 N( }! U9 N4 u6 i/ D! S$ L
  4.   qrScanner.isOpened(); // false
    6 x4 b4 W8 g0 }% ~9 W6 m
  5.   const promise = qrScanner.open({) r# U+ {8 [- e* F2 ~$ y
  6.     text: 'Scan the QR',
    9 X# S' d1 V! w7 a! B& V2 k0 v
  7.     onCaptured(qr) {% u' ]" K: |# l5 i( J) T" N
  8.       if (qr === 'qr-content-we-expect') {
    % ~2 }  Z) c7 g: j( ]+ a4 Z, @
  9.         qrScanner.close();
    & |  u" E- b1 I3 H% ?2 e
  10.       }+ p, C5 F5 B  _1 i( O: g3 R
  11.     },
    + z9 X# O9 j  y$ l3 d
  12.   });8 {0 e% G) M& p; A
  13.   qrScanner.isOpened(); // true5 J( M% Y' @# D6 [! Z0 Z6 N
  14.   await promise;& B& l6 P/ D" f. p: S: v
  15.   qrScanner.isOpened(); // false; t4 |( K5 R' V. U/ g
  16. }
复制代码

Functions :

  1. import {9 W2 ^& H  K. a. J0 l! X
  2.   openQrScanner,( e  I- T1 z, C
  3.   closeQrScanner,# _% h& P' R7 U; q1 V
  4.   isQrScannerOpened,) W& \( c. F, c7 u4 a
  5. } from '@telegram-apps/sdk';
    . ?6 A  Q' ]' `5 }3 g

  6. . M5 v5 f$ H9 y, l1 H4 [
  7. if (openQrScanner.isSupported()) {- X2 c, Y. J5 `) D  t$ x
  8.   isQrScannerOpened(); // false/ C$ r. W6 q* u  a8 z
  9.   const promise = openQrScanner({
    % k6 @3 _' _: _6 w
  10.     text: 'Scan the QR',* R% {7 ^; H- B# a4 l
  11.     onCaptured(qr) {
    0 f/ z7 x7 H, Q$ x: q9 h
  12.       if (qr === 'qr-content-we-expect') {: l; l$ G0 G4 d5 p/ ^
  13.         closeQrScanner();
      R# b" \: R' D# X! [, L
  14.       }
    ' C) Y' t+ t# b+ o6 y
  15.     },
    * N, Y4 u$ X$ G2 r5 l! d  A- |
  16.   });
    $ k( J- X: n0 k+ r  T' o2 Q. x
  17.   isQrScannerOpened(); // true
    ) |/ Y5 S" G, q2 I5 M# S) i+ o; L
  18.   await promise;( @" A  Z% r; Z
  19.   isQrScannerOpened(); // true- L- w5 e" j& I7 Q. z# ^0 \4 N& P! M) R
  20. }
复制代码
异步风格

接受可选的 capture 选项,接收扫描的 QR 内容,如果应该捕获并承诺解决,则返回 true。 如果省略,将解析第一个捕获的 QR 内容。 如果由于某种原因扫描仪被关闭,则承诺可能被解析为 undefined。

Variable :

  1. import { qrScanner } from '@telegram-apps/sdk';
    + D' I( Z  H$ U4 b- Y7 `

  2. 1 K% D9 x/ A2 J' E) W
  3. if (qrScanner.open.isSupported()) {1 |! w+ t9 u9 A
  4.   // Getting the first captured QR.6 i; w/ e4 o  ]
  5.   qrScanner.isOpened(); // false7 O' U, o7 e0 n5 Z# ^! g' w1 G% w
  6.   let promise = qrScanner.open({ text: 'Scan any QR' });" d- n" V2 j: J0 N9 s, D
  7.   qrScanner.isOpened(); // true
    4 A" x. N9 s2 Y8 `
  8.   await promise;9 R7 [6 A9 z- M0 R7 o( O5 R2 C
  9.   qrScanner.isOpened(); // false& d* b  X; u# B* e/ u

  10. 2 V) ^. @+ H6 s0 D! K7 |( I( d: c" s
  11.   // Getting some specific QR.  b5 b( W! P* J$ P- {! u0 d" o9 F* B
  12.   qrScanner.isOpened(); // false) d9 @- B9 t: |. e+ d( C9 _
  13.   promise = qrScanner.open({0 u$ ]5 E  }6 Z( S
  14.     text: 'Scan some specific QR',
    . H/ M* t) Y4 b5 _/ q: k
  15.     capture(qr) {$ ~  }5 w' X6 F; s: ?
  16.       return qr === 'some-specific-qr';
    5 [  S! G: c, }1 ~0 R' J. {. L/ `( g
  17.     },. v2 `9 S. F- b8 _8 x
  18.   });
    / @4 o# h# m$ a! t- t" v6 Y
  19.   qrScanner.isOpened(); // true/ W0 v0 T, T& C( ]& ~# K" x# l6 S
  20.   await promise;9 N) I& b# A! l/ P4 G; y4 H
  21.   qrScanner.isOpened(); // false0 k1 Q$ U8 \" ]( c$ }: C
  22. }
复制代码

Functions :

  1. import {
    ' i1 r  z- a. H  \5 p! z) O
  2.   openQrScanner,
    8 l9 {3 y4 @4 L
  3.   closeQrScanner,  }9 E& {0 H  r# L" s. N. Z( P
  4.   isQrScannerOpened,1 s6 ]7 Q  B  N, s' y' ~
  5. } from '@telegram-apps/sdk';
    5 f( _$ |; q5 o+ I

  6. / b3 z! R3 [9 Z5 H
  7. if (openQrScanner.isSupported()) {7 C" y% ^: S0 ~
  8.   // Getting the first captured QR.
    * u3 s! O9 [& I- E0 B7 c* V
  9.   // isQrScannerOpened() -> false: d5 m0 g/ R: K" Z) Q' I5 ]
  10.   let promise = openQrScanner({ text: 'Scan any QR' });
    : H( j* J/ E) O% W, y$ l* p: X
  11.   // isQrScannerOpened() -> true
    1 A+ U' ~' W' O) X- H1 ~
  12.   await promise;% @8 \' I+ [  a% k: j. M
  13.   // isQrScannerOpened() -> false
    1 x6 N- L' T6 v5 ^* h

  14. * M. r! y1 q$ A9 R  U
  15.   // Getting some specific QR.
    - j* n; g" \% h! p
  16.   // isQrScannerOpened() -> false. N5 ~* y8 Z$ Z* y2 D, }  O% j
  17.   promise = openQrScanner({4 E; p& \0 v/ @8 M1 T
  18.     text: 'Scan some specific QR',' h9 F: k& C1 D' f
  19.     capture(qr) {$ W: L: z# f7 `& s& C
  20.       return qr === 'some-specific-qr';7 D- |+ A1 a6 q$ T8 ]' Y7 T8 d
  21.     },
    & ?& T% u% V, e2 G3 O* j2 e
  22.   });- z$ Y5 s8 W  j
  23.   // isQrScannerOpened() -> true
    - ]2 b( w0 k4 I! l
  24.   await promise;
    ( b' x8 v  {/ l; G% {" w
  25.   // isQrScannerOpened() -> false" a$ g' R* ?* @
  26. }
复制代码
- H" k# ^( N" M. r5 j% g
5 H" F2 ?5 }0 }+ A3 R( n$ U  B" |' C
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则