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

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

回答

收藏

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

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

QR 扫描仪

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

打开和关闭

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

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

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

回调样式

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

Variable :

  1. import { qrScanner } from '@telegram-apps/sdk';
    3 E; M( K8 I+ |0 M0 y5 J
  2. ( T# b' ^2 d- s3 G$ }1 o
  3. if (qrScanner.open.isSupported()) {
    , i0 r6 [5 j4 k1 Z* Y2 L; e3 `2 @
  4.   qrScanner.isOpened(); // false" g3 X) p! J1 S9 _- V
  5.   const promise = qrScanner.open({- z+ Z8 p" C8 K) V: `  i
  6.     text: 'Scan the QR',
    : Y/ b3 M) n) K$ h+ G+ N/ [" t
  7.     onCaptured(qr) {
    : }$ u2 I7 N: r+ n  a
  8.       if (qr === 'qr-content-we-expect') {8 x6 T9 a& j$ ?: H0 N; ^2 z- Z
  9.         qrScanner.close();% t- v* t8 b+ _: ?
  10.       }  R6 l4 K8 e) d& c* G- n
  11.     },
    9 ?! ~/ t: W. T. @' @5 H' E: ?! Z
  12.   });- s4 ?! A" F+ o# Z
  13.   qrScanner.isOpened(); // true
    ; V0 `8 }" @% s  f: E! M% i
  14.   await promise;
    8 u5 d7 ~6 [5 d
  15.   qrScanner.isOpened(); // false# ]* R0 }1 P5 v$ ~- b" v
  16. }
复制代码

Functions :

  1. import {
    1 [8 y6 G" C( }$ G; _3 N6 _& |0 B
  2.   openQrScanner,3 `; x# e  W+ U8 ?
  3.   closeQrScanner,- m- }1 O' X! a/ y5 N. B4 E5 a
  4.   isQrScannerOpened,
    3 ]# n7 p$ V( I/ B. f2 T
  5. } from '@telegram-apps/sdk';% _2 E+ [7 a1 r  Z9 A% K

  6. : o( }: j0 @" S+ a4 K# i7 f8 v
  7. if (openQrScanner.isSupported()) {
    ! S$ o. p, J3 D6 ]; I! v) Y( T. C1 `
  8.   isQrScannerOpened(); // false
    + J; r5 w+ N" A( S
  9.   const promise = openQrScanner({' g. A: Y) ~! B- ?0 G
  10.     text: 'Scan the QR',
    # U7 w7 m2 W# k# P* L: d% u
  11.     onCaptured(qr) {
    7 v: y3 i- n; x4 y6 d* _
  12.       if (qr === 'qr-content-we-expect') {
    " g  X' w2 b: j5 \
  13.         closeQrScanner();6 J. g7 |7 l, L
  14.       }: F4 h: a2 Z) p. {7 X  V
  15.     },
    % r7 K. M! g0 L
  16.   });
    " G  G7 q- y  M- y2 l& Y
  17.   isQrScannerOpened(); // true6 t4 V, {( i$ u3 a  G3 r* \
  18.   await promise;' n- z) w2 J: f: {+ E+ g9 J2 t
  19.   isQrScannerOpened(); // true
    ) A% `; t" Z2 Y
  20. }
复制代码
异步风格

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

Variable :

  1. import { qrScanner } from '@telegram-apps/sdk';8 l9 K: ~# a$ I' S2 n

  2. . _9 q1 A) F" o; O2 F6 ]
  3. if (qrScanner.open.isSupported()) {
    . Q8 j# r' T# G! L3 f' [0 V# i. Z
  4.   // Getting the first captured QR.
    4 r* |/ |& Q" |& w% t: D% f
  5.   qrScanner.isOpened(); // false
    5 V6 z- k1 M$ w2 d
  6.   let promise = qrScanner.open({ text: 'Scan any QR' });
    9 x8 a. Q1 c+ V1 o" c+ z
  7.   qrScanner.isOpened(); // true- T4 h1 v/ G! c. r) }( f: i
  8.   await promise;
    1 U! p% g. @: w
  9.   qrScanner.isOpened(); // false! w8 [  A' V  G9 Y5 q8 s; j

  10. 1 O" I1 `8 V7 |" M( V/ `$ G2 h+ v
  11.   // Getting some specific QR.
    5 e' W1 h9 U' Q5 i* [1 y* Y
  12.   qrScanner.isOpened(); // false8 u) q! t- Q! O/ r6 d6 J
  13.   promise = qrScanner.open({
    % P+ P/ _' T* X6 ~& l! V1 d. H7 x4 U# S
  14.     text: 'Scan some specific QR',: C7 D" I5 v% T; K3 S$ O8 {0 F& t. b% c
  15.     capture(qr) {+ c9 A, w, ?) M3 x
  16.       return qr === 'some-specific-qr';
    ! y9 o3 o0 ?/ G% g1 ^: G$ W3 x) w( n
  17.     },! X; w: m2 U) o% F% O& M+ C
  18.   });- [' ~2 M! G/ M  R" x
  19.   qrScanner.isOpened(); // true
    & H, u: k9 V: f  t, v
  20.   await promise;' d0 N% {2 K1 j; d5 K% c4 @) e- n
  21.   qrScanner.isOpened(); // false
    8 \& X7 m1 y( D4 t# f. C
  22. }
复制代码

Functions :

  1. import {
    / ~0 k& t6 B8 \, W. W
  2.   openQrScanner,7 B# a  z3 v& d' Q4 O
  3.   closeQrScanner,7 O# S+ S% G2 g* i+ y8 t
  4.   isQrScannerOpened,' O6 B4 M; }3 R9 l7 ~
  5. } from '@telegram-apps/sdk';
    * o  B$ T% H. w; Z- q
  6. + O$ a7 t+ Y; a! R5 |5 {+ A
  7. if (openQrScanner.isSupported()) {
    5 m9 D  _8 Z5 r2 C; a; O+ }
  8.   // Getting the first captured QR.
    1 z7 U" @& L3 U
  9.   // isQrScannerOpened() -> false
    $ r" _' b/ v9 L4 U: ?0 Q: G
  10.   let promise = openQrScanner({ text: 'Scan any QR' });
    . ?) l: l2 R* `
  11.   // isQrScannerOpened() -> true$ h4 I! [- J5 E  u4 T/ J
  12.   await promise;
    % i$ ]( z3 j: U
  13.   // isQrScannerOpened() -> false# m2 x  \5 Q" ^4 j5 g2 h2 |+ {% a
  14. + q' U$ Y1 E) F" y: s7 m. Y
  15.   // Getting some specific QR.9 Y: w% S. E( M- W4 d3 Z% s
  16.   // isQrScannerOpened() -> false7 K& V# M# Y* E! ~% t6 ~
  17.   promise = openQrScanner({$ Q  |, R, l8 w& \$ n: H
  18.     text: 'Scan some specific QR',
    6 l) O0 u( j- }2 X$ d
  19.     capture(qr) {
    3 M% z3 ^% w1 `) ]5 j! l% |
  20.       return qr === 'some-specific-qr';8 S, k  a9 `2 b$ z. B
  21.     },/ j- C1 H6 p6 a3 v1 _- H
  22.   });: a) n0 `/ U: \/ y$ B5 J( F/ a
  23.   // isQrScannerOpened() -> true
    - f6 @+ d( V$ A' N1 l' q, K3 g  }
  24.   await promise;
    ( |2 L/ O5 ^0 c; s& O8 Q3 A' Q+ Y6 l2 H5 F
  25.   // isQrScannerOpened() -> false
    ) I6 @7 a5 T2 S: X+ M; U/ \
  26. }
复制代码

7 z9 T5 n" d* s3 {% m" @  {7 X9 [. a2 K+ C
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则