Pagsukat at Pagsasaayos
Pagpapaunlad ng Barcode at Qr Code Scanner sa Ios na may Avundation
Table of Contents
Pag - unawa sa AVFoundation for Barcode at QR Code Scanning
Ang Applefeivitys AVFoundation frameure ay nagbibigay ng isang full-featured, low-level interface para sa paggawa sa audiovisual media sa mga aparatong iOS. Para sa barcode at QR code scanning, ang balangkas ay naglalantad sa uring , na maaaring makadetek ng isang malawak na hanay ng mga machine-readable code sa tunay na panahon mula sa camera feed. Ito ay kinabibilangan ng QR code, EAN-8/13, Code 128, PDF417, Aztec at maraming iba pang format. Ang mga hawakan ng mga local ay nagbibigay ng mga ad na pag-inamlik-taas ng mga kodigo sa mga eksing pag-tanaw sa mga eksing eksing eksing eksiyon sa mga eksiyon sa mga eksing eksiyon sa mga eksiyon sa mga eksing eksiyon sa eksing eksiyon sa pag-kamento sa pag-kalik-kalik-kamento sa mga eksing
Ang AVFoundation scanning ay hardware quiaccelerated sa mga modernong aparato, na nagbibigay ng mabilis at maaasahang pag-aanalisa kahit sa mga mahirap na kondisyon ng ilaw.Ito ay gumagana sa parehong mga kamerang pangharap at pang-ibabaw, at ang lugar na pangtutop ay maaaring mapilitang ma-intermit sa isang espesipikong rehiyon na may interes upang mapabuti ang pagganap at karanasan sa paggamit.
Paglalagay ng Sesyon sa Camera Capture
Ang pinaka - sentro ng anumang AVFoundation anched scanner ay ang .
Pakikiusap sa Pagpapahintulot ng Kamera
Bago i-access ang kamera, dapat humingi ng pahintulot sa gumagamit. Simula sa iOS 10, kailangan mong isama ang key sa inyong Info.plist file na may strando na nagpapaliwanag kung bakit kailangan ng inyong app ang kamera.. Gamitin ang parehong kaso – ipagkaloob at itanggi – at i-update ang inyong UI alinsunod dito.
AVCaptureDevice.requestAccess(for: .video) { granted in
if granted {
// Configure and start the capture session
} else {
// Show an alert guiding the user to Settings
}
}
Paglikha ng AVCaptureSsession
Minsang ipagkaloob ang pahintulot, instantia ang isang .[filgure ang sesyon nito preset upang kontrolin ang kalidad ng video; para sa barcode scanning, ay isang mabuting default, ngunit maaari mo ring gamitin para sa mas mabilis na pagpoproseso.
let session = AVCaptureSession()
session.sessionPreset = .high
Pagdaragdag ng Momera Input
Kunin ang default video device (ang likurang kamera) at lumikha ng . Kung ang input ay hindi maidadagdag sa sesyon (hal., ang aparato ay abala), hulihin ang pagkakamali at i-representa ang feedback sa gumagamit.
guard let camera = AVCaptureDevice.default(for: .video) else { return }
do {
let input = try AVCaptureDeviceInput(device: camera)
guard session.canAddInput(input) else { return }
session.addInput(input)
} catch {
print("Camera input error: \(error.localizedDescription)")
}
Pagdaragdag ng Metadata Output
Gumawa ng halimbawa, ilagay ang delegado nito (sa isang dedikadong serial queue), at idagdag sa sesyon.Ang delegado ay tatanggap ng mga napunang metadata na bagay.
let metadataOutput = AVCaptureMetadataOutput()
metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
guard session.canAddOutput(metadataOutput) else { return }
session.addOutput(metadataOutput)
// Specify which code types to detect – must be done after the output is added
metadataOutput.metadataObjectTypes = [.qr, .ean13, .code128, .pdf417]
Mahalaga: dapat itakda pagkatapos na maidagdag ang output sa sesyon.Ang pagtatakda nito nang mas maaga ay magdudulot ng pagbagsak.
Pasimula ng Pag - aasawa
Tawagin ang sesyon sa isang sinulid sa likuran upang panatilihing tumutugon ang UI. sa isang paunang pahatid na queue o sa isang dedikadong serial queue.
DispatchQueue.global(qos: .userInitiated).async {
session.startRunning()
}
Pagbuo sa Delegadong Pamamaraan
Ang paraang delegado ay tinatawag kailanma't napapansin ng scanner ang isa o higit pang mga kodigo. Ang paraang ito ay tumatanggap ng hanay ng mga pagkakataon , na kailangan mong ihulma sa upang ma-akses ang decoded strandong strando.
func metadataOutput(_ output: AVCaptureMetadataOutput,
didOutput metadataObjects: [AVMetadataObject],
from connection: AVCaptureConnection) {
// Process only the first detected code (most common pattern)
guard let metadataObject = metadataObjects.first,
let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject,
let stringValue = readableObject.stringValue else { return }
// Use the scanned value (e.g., display, validate, or send to server)
handleScannedCode(stringValue, type: readableObject.type)
}
Karaniwang pinahihinto ng mga idependiyente ang sesyon pagkatapos ng isang matagumpay na scan upang maiwasan ang paulit-ulit na pag-aanalisa. matapos hawakan ang kodigo, at muling i-restart kapag muling inaayos ng gumagamit ang scanner.
Pakikitungo sa mga Kodigong Natatago
Kapag naibigan mo na ang strandong halaga, tiyakin kung ano ang gagawin mo batay sa kodigong uri at nilalaman nito.
- UDS – Open in Safari o a in ⁇ ap browser na gumagamit ].
- Wi[Fi creents – Parse ang pamantayang format () at kumokonekta ng programmatally (requires karagdagang profitment).
- [Product codes – Mag-secure ng info ng produkto sa pamamagitan ng isang API tulad ng UPC Database o ang iyong sariling sistemang imbentaryo.
- Contact information – Parse vCard o MeCard formats at lumikha ng bagong pakikipag-ugnayan sa address book.
- Plain text – Ipakita sa isang alisto o kopya sa pastboard.
Sa bawat uri ng kodigo, patunayan ang tali bago ang pagpoproseso. Ang mga kodigong may diperensiya o malisyoso ay dapat na ipagwalang - bahala o iulat nang maganda.
Pinakamabuting Gawain Para sa Paggawa ng Palabas
Upang matiyak ang mahusay at mahusay na pagsusuri, sundin ang mga tuntuning ito:
- Limit metadata object types – Tanging ang code format ng iyong app ang talagang kailangan. Ang bawat ekstrang format ay nagdaragdag ng pagproseso sa ibabaw.
- [Set a rehiyon ng interes – Gamitin upang bigyang kahulugan ang isang maliit na bahagi ng video feed kung saan inaasahan ang mga code. Ito ay lubhang nagpapabuti sa bilis ng pagtutop at nagbabawas ng mga hindi tunay na positibo.
- Usahin ang tamang video gravity – ang nagpapanatili sa kamera na patiunang makita ang proporsiyon at tamang - tama sa paglalatag ng mga scan calvarea guide.
- [update a serial queue for reaction callbacks – Magsagawa ng mabigat na pagpoproseso (hal., network viewups) sa pangunahing sinulid upang panatilihing tumutugon ang UI.
- – Hayaang i-togle ng gumagamit ang cameraiphers sulo para sa mababang mga senaryo ng calcilum. Check bago mag-tugtugin.
- [[Seset scanning matapos hawakan – Pagkatapos ng isang matagumpay na scan, muling ulitin ang sesyon na may maikling pagkaantala (hal.g, 1–2 segundo) upang maiwasan ang kagyat na respektasyon ng parehong kodigo.
Paglalaan ng User Breedback
Isang mahusay na karanasan sa pagsusuri ang may mga palatandaan sa paningin at pandinig, at ang mga mekanismong ito na nagbibigay ng impormasyon ay nagsisilbing giya sa gumagamit:
- [Visual claim – Kumuha ng tampok na quarter sa paligid ng na-secred code gamit ang na pag-aari ng .[kailangan nito ang pag-publish ng metadata coordinates upang makita ang mga coordinate sa pamamagitan .
- Animation – Magsuot ng isang hindi halatang animasyon (hal.g., isang lumiliit na hangganan) kapag kinikilala ang isang kodigo.
- Sound – Gumamit ng isang tunog na pang-sistema gamit ang na may maikli at positibong tono katulad ng (ang tunog na ⁇ Mail Sent ⁇ ).
- – Gamitin o para sa isang tusong pagyanig.
- Ang lugar ng Scan ay gabay – Magpakita ng isang maliwanag na regulator na may mga gabay sa kanto upang tulungan ang mga gumagamit na isentro ang kodigo.
Error sa Paglutas at Pag - aalis ng mga Kaso
Ang pagkakamali sa paggamit ng mga goma ay tumitiyak na ang iyong scanner ay magandang bumababa kapag ang mga bagay ay nagkamali.
- Camera Unternown – Check at sa aparato. Sa iPod touch o simulator na walang kamera, magharap ng makabuluhang mensahe.
- Ang Permission ay nag-itanggi – Magpakita ng isang alerto na may button na nagbubukas ng mga settings sa pamamagitan .
- [[Paression confirmment – Mga pagkakamaling pang-alsa kapag o [T:]]]. Ito ay maaaring mangyari kung ang isa pang app ay ginagamit ang kamera sa likuran (rare).
- Ang liwanag na panglaboratoryo o malabong mga imahe – Bawasan ang pook na pangtutop ng interes at tiyakin ang camera autofocus ay nagagawa. higinahan ang gumagamit na dagdagan ang liwanag o i-regulat ang aparato.
- Ang mga invalid o hindi suportadong code types[ – Ang na ari-arian ay maaaring hindi sumusuporta sa lahat ng format sa lahat ng mga aparato. Gamitin sa query combinity bago ang pagtatakda.
Pagsubok sa Kabila ng mga Paraan
Ang isang pag - scanning na ginawa ng isang kompanya ng computer ay lubhang nagkakaiba - iba sa mga salinlahi ng iPhone at iPad. Subukin ang inyong pagpapatupad:
- Ang mga mas lumang kagamitan (iPhone 6s, iPad Air 2) – Ito ay may mas mabagal na mga processor at maaaring makipagpunyagi sa mataas na mga presyeresolusyong presets. Gamitin para sa gloperal na balanse sa mas lumang hardware.
- Iba - iba ang tingin sa mga aparatong may iba't ibang camera optic – iPhones na may telephoto o napakatalas na mga kamera sa buong daigdig.
- Mababang kapaligiran ng calflight – Pagsusuri sa mga di-malabong kondisyon upang matiyak ang scan sped ay nananatiling nakikita at ang sulo toggle gumagana.
- Iba't ibang laki at oryentasyon ng code – Subukan ang mga code mula 1 cm × 1 cm mga sticker hanggang sa malalaking poster, at subukin ang landscape vs. photo scanning.
Patiunang mga Pag - aaral
Para sa mga app, isaalang - alang ang pagdaragdag ng mga katangiang gaya ng patuloy na pagsusuri (pagpahintulot sa maraming kodigo sa isang sesyon), mga kontrol sa zoom, o pagsasama sa ARKit para sa karagdagang mga katotohanan na nakakalupkop. kung kailangan mong gumawa ng mga code mula sa mga larawan pa rin (hal.g, photo library), gamitin o mula sa balangkas ng Vision, bagaman ang AVFoundation ay karaniwan nang mas mabilis para sa tunay na video ng panahon.
Para sa mas malalim na pagsisid sa AVFoundation configuration, tumutukoy sa Apple Eventis Setting Up a Capture Session guide at ang [CaptureMetadutaOutput document.Makasusumpong ka rin ng isang kumpletong proyektong sampol sa Scanning Bades na may dokumentong AVCaptureF.[T][T][T][T.[T][5 ⁇ [T][T][T][T][T][5.
Sa pagsunod sa mga tuntuning ito at lubusang pagsubok sa iyong pagpapatupad, ikaw ay makapaglalabas ng isang pinakinis, mataas na aksesoryang barcode at QR code scanner na nagpapaganda sa iyong iOS appisons na madaling gamitin at maaasahan.