#QRCodeの識別

5552 ワード

オープンソースコードを使用してQRCodeScannerを作成します.
QRCodeScanner OpenSource github
まず、シーケンスイメージボードにWebビューを入れてWebViewロードコードを入力します
class MainViewController: UIViewController {

    
    @IBOutlet weak var WebView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        let url = URL (string: "https://www.naver.com")
        let requestObj = URLRequest(url: url!)
        WebView.load(requestObj)
    }
プロジェクトのBuildPhaseにのWebスイートを追加し、インターネットを使用
また、インターネットを利用するために、プロジェクトファイルリストのinfo.plistにApp TransportSecurity Settingsを追加し、YESとしてAllow Arbitrary Loadsを追加します.そうするとNAVERウィンドウが遅くなります

Podをインストールするには、端末がこのプロジェクトの最上位フォルダに入ります.この場合.
pod init->sudo vi podfile->iをクリックして編集モードに切り替え、オープンソースコードでpod'qrcodeReaderをクリックします.swift","~>10.1.0"この部分をコピーして末尾に貼り付け、esc->:wq!
xcodeを閉じ、端末からpod installを入力して外部ソースを取得します.
実行すると、作成したボタンがNaverウィンドウの下部に表示されます.
override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let url = URL (string: "https://www.naver.com")
        let requestObj = URLRequest(url: url!)
        WebView.load(requestObj)
        

        QRButton.translatesAutoresizingMaskIntoConstraints = false
        QRButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 30)
        QRButton.tintColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
        QRButton.layer.cornerRadius = 8
        QRButton.addTarget(self, action: #selector(qrcodeReaderLaunch), for: .touchUpInside)
        
        
    }

    @objc fileprivate func qrcodeReaderLaunch(){
        print("qrcodeReaderLaunce called.")
    }
QRCodeScannerを実行するには、オープンソースコードに従って使用します.
MainViewControlフルコード
import UIKit
import WebKit
import AVFoundation
import QRCodeReader


class MainViewController: UIViewController, QRCodeReaderViewControllerDelegate {

    

    
    @IBOutlet weak var QRButton: UIButton!
    @IBOutlet weak var WebView: WKWebView!
    
    //QRCodeReaderViewController 만든다.
    lazy var readerVC: QRCodeReaderViewController = {
        let builder = QRCodeReaderViewControllerBuilder {
            $0.reader = QRCodeReader(metadataObjectTypes: [.qr], captureDevicePosition: .back)
            
            // Configure the view controller (optional)
            $0.showTorchButton        = false
            $0.showSwitchCameraButton = false
            $0.showCancelButton       = false
            $0.showOverlayView        = true
            $0.rectOfInterest         = CGRect(x: 0.2, y: 0.2, width: 0.6, height: 0.6)
        }
        
        return QRCodeReaderViewController(builder: builder)
    }()
    
    //MARK: - override method
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let url = URL (string: "https://www.naver.com")
        let requestObj = URLRequest(url: url!)
        WebView.load(requestObj)
        

        QRButton.translatesAutoresizingMaskIntoConstraints = false
        QRButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 30)
        QRButton.tintColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
        QRButton.layer.cornerRadius = 8
        QRButton.addTarget(self, action: #selector(qrcodeReaderLaunch), for: .touchUpInside)
        
        
    }

    //MARK: - fileprivate method
    //
    @objc fileprivate func qrcodeReaderLaunch(){
        print("qrcodeReaderLaunce called.")
        
        // Retrieve the QRCode content
          // By using the delegate pattern
          readerVC.delegate = self

          // Or by using the closure pattern
          readerVC.completionBlock = { (result: QRCodeReaderResult?) in
            print(result)
          }

          // Presents the readerVC as modal form sheet
          readerVC.modalPresentationStyle = .formSheet
         
        //설정된 QRCode 뷰 컨트롤러를 화면에 보여줌.
          present(readerVC, animated: true, completion: nil)
        }

        // MARK: - QRCodeReaderViewController Delegate Methods
    func reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult) {
        reader.stopScanning()

        dismiss(animated: true, completion: nil)
    }
    
    func readerDidCancel(_ reader: QRCodeReaderViewController) {
        reader.stopScanning()

        dismiss(animated: true, completion: nil)
    }
}
ボタンを押すと、次のような画面が表示されます.

実際に携帯でqrcodeを認識すると

このようなリンクが表示されます.
QrcodeReader Launch関数で
let scannedUrl = URL(string: scannedUrlString)
            self.WebView.load(URLRequest(url: scannedUrl!))
これで携帯電話でqrcodeを認識したときに画面が表示されます
私は初めてオープンソースを使って、もっと熟知させるように努力します.

リファレンス


鄭代理のYoutube