首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ios -识别QRcode响应类型

Ios -识别QRcode响应类型
EN

Stack Overflow用户
提问于 2017-03-31 16:38:35
回答 1查看 115关注 0票数 1

我在我的应用程序中使用了二维码,它也以AVMetadataMachineReadableCodeObject的形式给了我响应。这是我的代理,它处理响应。

代码语言:javascript
复制
 func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) {



    if strFound == ""
    {

    // Check if the metadataObjects array is not nil and it contains at least one object.
    if metadataObjects == nil || metadataObjects.count == 0 {
        qrCodeFrameVieww?.frame = CGRect.zero
        messageLabel.text = "No QR/barcode is detected"
        return
    }

    // Get the metadata object.
    let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject

    if supportedCodeTypes.contains(metadataObj.type) {
        // If the found metadata is equal to the QR code metadata then update the status label's text and set the bounds
        let barCodeObject = videoPreviewLayer?.transformedMetadataObject(for: metadataObj)
        //qrCodeFrameVieww?.frame = barCodeObject!.bounds

        if defaults.value(forKey: "beep") as! Bool != false
        {
            playSound()

        }
        if defaults.value(forKey: "vibrate") as! Bool != false
        {
            AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))

            AudioServicesPlaySystemSoundWithCompletion(SystemSoundID(kSystemSoundID_Vibrate), nil)

        }


        print("type is",metadataObj.type)

        print("metaDataObj",metadataObj)

         foundCode(code: metadataObj.stringValue as NSString)

        if metadataObj.stringValue != nil {


            let stUrl = metadataObj.stringValue as String
            print("The Url Is \(stUrl)")

            if defaults.value(forKey: "copyToClipboard") as! Bool == true
            {
                UIPasteboard.general.string = stUrl



            }

}

我的问题是,由于二维码可以扫描电子名片、电话号码、电子邮件、地理位置和日历事件etc.How,我是否可以知道响应字符串中有哪些数据,例如它是与电子名片相关的,还是url或日历事件??

EN

回答 1

Stack Overflow用户

发布于 2017-03-31 16:50:16

代码语言:javascript
复制
guard let metadataObject = metadataObjects.first as? AVMetadataMachineReadableCodeObject else {
  return
}
guard let codeObject = videoPreviewLayer?.transformedMetadataObject(for: metadataObject) else {
  return
}
switch codeObject.type {
  case .AVMetadataObjectTypeQRCode:
    //...
  default:
    break
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43136201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档