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

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

回答

收藏

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

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

QR 扫描仪

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

打开和关闭

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

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

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

回调样式

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

Variable :

  1. import { qrScanner } from '@telegram-apps/sdk';. u. \4 ?6 i; t
  2. 0 s0 L* h* r+ \' w$ _: n
  3. if (qrScanner.open.isSupported()) {
    & D* |# r/ |  C+ ~1 |
  4.   qrScanner.isOpened(); // false
    , O0 {' [* D) }
  5.   const promise = qrScanner.open({
    1 M$ e: O" e- c: y9 ^7 [1 k2 \
  6.     text: 'Scan the QR',. @8 r' ?4 g  m8 U" v, |9 q
  7.     onCaptured(qr) {
    4 O: d- ]+ d: |0 A# [. _  W
  8.       if (qr === 'qr-content-we-expect') {# @2 P9 g2 H/ D8 G' x6 |9 o6 I
  9.         qrScanner.close();
    + n. Q: p6 i; A$ d  I2 P8 F
  10.       }
    / @( c( o! e9 q
  11.     },8 x# r6 Q1 d  X5 U
  12.   });
    3 y* Z1 U& Y) K  n- ]7 Y* c
  13.   qrScanner.isOpened(); // true
    9 d; @6 {+ g: _4 G! x* J
  14.   await promise;
    ; `/ z5 f6 h7 S, Y3 g* Q) Y
  15.   qrScanner.isOpened(); // false' a, q, V% j+ M: M0 x8 e, U
  16. }
复制代码

Functions :

  1. import {$ Z; G( i# X* J
  2.   openQrScanner,
    5 E. o3 f6 Z$ X8 x2 _' P* r: A
  3.   closeQrScanner,; k% r" I9 l+ Y- j: t7 P
  4.   isQrScannerOpened,
      O: P5 H8 Z9 |0 s
  5. } from '@telegram-apps/sdk';' U0 K5 W, j, S* m( L& g5 w' p

  6. + @) m1 I" W, k, e  H- Z
  7. if (openQrScanner.isSupported()) {  U: M: X, `& P6 @3 ]0 O( ]! S9 A
  8.   isQrScannerOpened(); // false
    $ Z6 v$ i+ S! M$ c( }! q( @$ y. Y$ Y
  9.   const promise = openQrScanner({
    6 x: c2 Y/ Q0 R; t% E
  10.     text: 'Scan the QR',
    9 @) d. B$ D8 y8 K" e: p, y4 N
  11.     onCaptured(qr) {+ Z, @' R! o; l* |5 R
  12.       if (qr === 'qr-content-we-expect') {( j5 p0 l6 `7 {8 e  D6 r
  13.         closeQrScanner();) v! Z* Y& f$ [* J7 C! u9 o0 U
  14.       }
    : d$ D7 L% u  H
  15.     },
    8 x1 L3 n' V6 R
  16.   });+ Z2 A6 N# \$ A* F4 w
  17.   isQrScannerOpened(); // true. Y/ p& z: _& E7 Y6 V9 H
  18.   await promise;7 S6 ~! P& D' |8 j
  19.   isQrScannerOpened(); // true
    1 [, j+ u, T1 V7 h. Y& L
  20. }
复制代码
异步风格

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

Variable :

  1. import { qrScanner } from '@telegram-apps/sdk';
    ' ?3 J. S. g% j! F8 h0 o" w" ]# f. r

  2. 7 @0 t8 P* O# o! o! B/ m
  3. if (qrScanner.open.isSupported()) {. T# I. s' R2 T2 V, R7 K
  4.   // Getting the first captured QR.
    4 s8 d2 Y& i$ _/ A* H3 _- H
  5.   qrScanner.isOpened(); // false- n9 V8 j3 ]  m$ C/ O8 [( B' j
  6.   let promise = qrScanner.open({ text: 'Scan any QR' });
      N: }& B2 e9 K' v! O
  7.   qrScanner.isOpened(); // true
    # n- G* V! p$ k' a8 R  H
  8.   await promise;
    ; M% ]4 e8 j& P( Y
  9.   qrScanner.isOpened(); // false* d4 X" k+ {% V( \) b# P: f6 J" H' S
  10.   b- I" P& ~' H& L
  11.   // Getting some specific QR.( u7 x, Z  n$ e+ f; z
  12.   qrScanner.isOpened(); // false2 d( W1 x& @' T, O* ?6 p. y/ M! P
  13.   promise = qrScanner.open({
    9 l/ G$ i! p, U# p3 J) g. w9 L
  14.     text: 'Scan some specific QR',* k. b- {$ Z8 K7 [* Z( t
  15.     capture(qr) {* Y# b# k% i' [& J
  16.       return qr === 'some-specific-qr';
    - \0 w3 {$ F; [/ j' _! C
  17.     },
    - i, W" f( X/ @
  18.   });
    9 t1 b0 F! p) E, ]& t; u9 c
  19.   qrScanner.isOpened(); // true
    ' G1 \! k' _/ Y- Z2 J7 j
  20.   await promise;/ y7 o+ x+ Y6 N' A! q
  21.   qrScanner.isOpened(); // false
    " s) O  \! i5 ^" p! v
  22. }
复制代码

Functions :

  1. import {+ L# l  A) i+ X- n- D, y
  2.   openQrScanner,4 `9 m9 V8 b/ E
  3.   closeQrScanner,* B$ U% Q" p! D) E
  4.   isQrScannerOpened,
    : e" Z2 l& \. u1 X
  5. } from '@telegram-apps/sdk';
    ) d* e  {2 D# V. T! I

  6. - _! f. F# P. w1 F7 q! Y  F3 W
  7. if (openQrScanner.isSupported()) {
    " @6 l! |: M+ @) t' t( Z0 p
  8.   // Getting the first captured QR.
    3 s/ w+ b: d7 |; P$ y; ]: ?
  9.   // isQrScannerOpened() -> false
    + }9 D# o$ X' x" w3 q4 G: q
  10.   let promise = openQrScanner({ text: 'Scan any QR' });# c2 M3 g9 d3 w
  11.   // isQrScannerOpened() -> true
    . O' w3 n- F* M4 e; J
  12.   await promise;) t# Y1 A2 o' H) T3 V# ]7 R
  13.   // isQrScannerOpened() -> false3 r$ f3 ]- p% [! I! q

  14. 4 _7 }- E) m* t" Y( R, f% h* M
  15.   // Getting some specific QR.
    + I* Y1 }* D& d$ l' s0 d
  16.   // isQrScannerOpened() -> false  ~- k" s' N! t& i- ~, W1 c7 S0 K
  17.   promise = openQrScanner({1 y* m( G$ d6 _. R+ j: F
  18.     text: 'Scan some specific QR',
    6 j7 m2 ^4 X( n) x
  19.     capture(qr) {
      B3 r' ?  D* v3 U/ `3 \) G2 m
  20.       return qr === 'some-specific-qr';
      v( s' c  J7 w. c' _
  21.     },# U5 i# s( K2 f" e
  22.   });
    : b$ e( m4 S- d( Y; X- R9 _
  23.   // isQrScannerOpened() -> true( ], G3 C6 m  R" c, J
  24.   await promise;
    - o6 z: o' g4 T; \5 W! W7 x! [& W3 y
  25.   // isQrScannerOpened() -> false/ y, R0 X( ]1 r# _
  26. }
复制代码

3 A9 w. E4 Y6 s0 g5 ?
9 V5 u6 K1 J& C3 ~# R5 Q
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则