Table of Contents
Hiểu được khả năng quét mã vạch và mã QR
Khung lề AVFzzation của Apple cung cấp một giao diện toàn bộ cấu trúc, cấp độ cao để làm việc với phương tiện truyền thông âm thanh trên thiết bị iOS. Đối với mã mã mã vạch và QR, khung phơi bày [FLT: 0], có thể phát hiện một loạt mã đọc rộng từ máy quay thực tế. Nó bao gồm mã QR, EN-813/ code 128, PDF417, Aztec và nhiều định dạng khác. Khung khổ này xử lý việc nâng cao phân tích ảnh và giảm mã hóa, cho phép các nhà phát triển tập trung vào ứng dụng hơn là quét các thuật toán tự chọn.
Việc quét tìm các thiết bị hiện đại được tăng tốc trên phần cứng, cung cấp những phát hiện nhanh và đáng tin cậy ngay cả trong điều kiện ánh sáng khó khăn, hoạt động với cả phía trước lẫn phía sau máy quay, và khu vực phát hiện có thể bị giới hạn ở một vùng quan tâm nhất định để cải thiện hiệu suất và kinh nghiệm của người dùng.
Thiết lập phiên chạy chụp máy ảnh
Trung tâm của bất kỳ máy quét dựa trên AVFzzation là . Đối tượng này dàn xếp dữ liệu từ dữ liệu nhập vào máy ảnh đến kết xuất siêu dữ liệu. Thiết lập phiên chạy cần nhiều bước đệm, được thực hiện tốt nhất trong một lớp quản lý hoặc quản lý xem tận tụy.
Yêu cầu quyền của máy ảnh
Trước khi truy cập máy ảnh, bạn cần phải hỏi quyền người dùng. Bắt đầu trong IOS 10, bạn cần phải bao gồm chìa khóa trong tập tin [FLT] của bạn chứa chuỗi giải thích tại sao ứng dụng của bạn cần máy ảnh. Quyền phép được yêu cầu bằng . Hãy xử lý cả hai trường hợp — được chấp nhận và từ chối – và cập nhật tương ứng với UI.
AVCaptureDevice.requestAccess(for: .video) { granted in
if granted {
// Configure and start the capture session
} else {
// Show an alert guiding the user to Settings
}
}
Tạo ra các vết thương
Một khi quyền hạn được cấp, ngay lập tức . Cấu hình cài đặt phiên chạy để điều khiển chất lượng video; để quét mã vạch là một giá trị mặc định tốt, nhưng bạn cũng có thể sử dụng [[FLT: 7) để xử lý nhanh hơn.
let session = AVCaptureSession()
session.sessionPreset = .high
Đang thêm kết nhập máy ảnh
Hãy xem xét cách sử dụng thiết bị phim ảnh mặc định (máy ảnh phía sau) và tạo một . Nếu đầu vào không thể được thêm vào phiên chạy (v. d. thiết bị này bận), bắt lỗi và phản hồi hiện thời cho người dùng.
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)")
}
Đang thêm kết xuất siêu dữ liệu
Tạo một , đặt đại biểu (trên hàng đợi dài dài) và thêm vào phiên chạy. Các đại biểu sẽ nhận vật thể siêu dữ liệu.
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]
Quan trọng: cần phải được đặt sau khi thêm kết xuất vào phiên chạy. Việc đặt nó trước đó sẽ gây ra lỗi.
Bắt đầu phiên chạy
Chạy phiên chạy trên chỉ nền để giữ cho máy trả lời của UI. Gọi trong một hàng đợi thông điệp nền hoặc trên hàng đợi đã đóng góp.
DispatchQueue.global(qos: .userInitiated).async {
session.startRunning()
}
Thi hành phương pháp ủy quyền
Phương pháp ủy quyền được gọi khi máy quét phát hiện một hay nhiều mã. Phương pháp này nhận được một dãy , mà bạn cần phải đưa vào để truy cập chuỗi đã giải mã.
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)
}
Thông thường, sau khi quét thành công, chúng ta sẽ dừng phiên họp lại để tránh bị phát hiện nhiều lần.
Các mật mã đã phát hiện ra
Một khi bạn có giá trị chuỗi, hãy xác định hành động cần làm dựa trên kiểu mã và nội dung.
- – Mở bằng trong bộ duyệt tiếng Đức.
- [FLT:] – Phân tích định dạng chuẩn ( và kết nối chương trình theo phương pháp [cần thêm quyền lợi].
- Mã tiền tố ) – Tra cứu thông tin sản phẩm thông qua một hệ thống lưu trữ như ) ) cơ sở dữ liệu hoặc hệ thống kho riêng của bạn.
- Thông tin Contac – Parse vCard hoặc MeCard định dạng và tạo liên lạc mới trong sổ địa chỉ.
- Văn bản [FLT: 1] – Hiển thị trong cảnh giác hoặc sao chép để dán bảng.
Đối với mỗi kiểu mã, hãy thẩm tra chuỗi trước khi xử lý. Cần phải bỏ qua hoặc ghi nhận những mã dạng sai hoặc mật mã độc hại.
Những thực hành tốt nhất để quét
Để chắc chắn quét mịn và hiệu quả, hãy làm theo những hướng dẫn sau:
- Đối tượng siêu dữ liệu ) – Chỉ hiệu lực định dạng mã ứng dụng của bạn thực sự cần thiết. Mỗi định dạng phụ thêm sẽ tăng cường xử lý trên.
- Đặt một vùng quan tâm – dùng để xác định một phần nhỏ của nguồn dữ liệu video nơi cần dùng. Điều này giúp cải thiện nhanh chóng tốc độ nhận biết và giảm thiểu những kết quả dương tính sai.
- Hãy dùng lực hấp dẫn video – giữ tỉ lệ xem thử máy ảnh và lý tưởng để phủ các hướng dẫn quét.
- Sắp xếp hàng loạt cho cuộc gọi trở lại ) – thực hiện quá trình xử lý nặng (v. d., tra cứu mạng) ra khỏi chỉ mục chính để giữ cho máy UI đáp ứng.
- Xem xét việc hỗ trợ đuốc – cho phép người dùng bật tắt ngọn đuốc của máy ảnh cho kịch bản đèn thấp. Hãy kiểm tra trước khi bật lên.
- Đặt lại sau khi xử lý) – Sau khi quét thành công, khởi động lại phiên chạy với sự chậm trễ ngắn (v. d., 1–2 giây) để ngăn chặn việc phát hiện lại mã ngay lập tức.
Hậu quả của người dùng
Một trải nghiệm quét tốt bao gồm các tín hiệu hình ảnh và thính giác.
- . Điều này đòi hỏi phải chuyển đổi tọa độ siêu dữ liệu để xem tọa độ .
- Sự sống – chơi một hoạt hình tinh tế (v. d., một biên giới co hẹp) khi một mã được nhận diện.
- Mở ) – chơi một âm thanh hệ thống bằng với âm thanh ngắn, tích cực như (tiếng địa phương].
- Phản hồi ) – dùng để rung động.
- Hướng dẫn khu vực – Hiển thị hình chữ nhật trong suốt với các hướng dẫn góc để giúp người dùng đặt giữa các mã.
Lỗi xử lý và trường hợp cạnh
Lỗi giao tiếp từ máy quét sẽ làm giảm hiệu quả khi có chuyện.
- CA không sẵn sàng – Kiểm tra và trên thiết bị này. Trên iPod, chạm vào hoặc mô phỏng không có máy ảnh, xin vui lòng gửi một thông điệp có ý nghĩa.
- Từ chối ) – Hiển thị cảnh giác bằng một nút mở Trung tâm thông qua .
- Lỗi cấu hình tăng cường ) – ghi lưu lỗi khi hoặc trả lại . Việc này có thể xảy ra nếu một ứng dụng khác đang dùng máy ảnh (ra) ở nền (ra).
- [FLT: 0] Ánh sáng mờ [FLT: 1] – giảm vùng nhận diện và đảm bảo rằng máy ảnh được bật khả năng tập trung tự động. Nhắc người dùng tăng ánh sáng hoặc thiết bị.
- Dạng mã không được hỗ trợ ) – Tài sản có thể không hỗ trợ mọi định dạng trên mọi thiết bị. Hãy dùng để truy vấn sự tương thích trước khi đặt.
Comment
Các chương trình quét mã vạch được tạo ra khác nhau đáng kể qua các thế hệ của iPhone và iPad.
- Thiết bị cũ (iPhone 6s, iPad Air 2) – Những bộ xử lý này có thể gặp khó khăn với những thiết bị sẵn có độ phân giải cao. Hãy dùng để cân bằng tối ưu trên phần cứng cũ.
- Thiết bị với máy ảnh khác nhau — iPhone với ảnh điện thoại hoặc máy ảnh toàn màn hình có thể tiêu điểm khác nhau. Luôn luôn dùng máy ảnh kiểu ảnh kiểu ảnh kiểu ảnh kiểu rộng mặc định để quét mã thanh.
- Môi trường ánh sáng thấp — Kiểm tra trong điều kiện mờ để đảm bảo việc quét quét được hiển thị và đèn bật lên hoạt động.
- Kích cỡ mã và định hướng khác nhau — Thử mã từ 1 cm × 1 cm nhãn đến áp phích lớn, và quét quang cảnh để thử ra chân dung.
Những sự suy xét cấp cao
Để tạo ứng dụng sản xuất, hãy xem xét việc thêm tính năng như quét liên tục (cho phép nhiều mã trong một phiên chạy), điều khiển phóng đại, hoặc tích hợp với ARKit để phủ lên thực tế. Nếu bạn cần xử lý mã số từ ảnh còn lại (v.g.g., thư viện ảnh chụp), hãy dùng hoặc từ khung hình ảnh hiện tượng, mặc dù việc tìm kiếm thông thường nhanh hơn cho video thời gian thực.
Để tìm hiểu sâu hơn về cấu hình của AVFFFzzation, hãy nhắc đến tài liệu của Apple [FLT:]. Bạn cũng có thể tìm thấy một dự án mẫu đầy đủ trong ) mã vạch với AVLMAttade [FLT: BOT].
Bằng cách làm theo những hướng dẫn này và kiểm tra kỹ lưỡng việc thực hiện của bạn, bạn có thể cung cấp một mã vạch mã vạch đánh dấu cao và mã nhận dạng QR để tăng cường khả năng sử dụng và đáng tin cậy của ứng dụng iOS.