Last Updated on : 2024-05-28 06:17:45download
This pairing mode only applies to devices that have been connected to the internet.
Parameters
| Parameter | Type | Required | Description | 
|---|---|---|---|
| mode | ActivatorMode | Yes | The pairing mode. | 
Example
self.pair = ActivatorService.shared.activator(.QRScan)
Property description
| Property | Type | Required | Description | 
|---|---|---|---|
| session | AVCaptureSession | No | The session object used to capture video and audio data. | 
| callBack | CallBack | No | The callback to invoke when scanning is finished. | 
Description
| Method | Parameter | Return value | Description | 
|---|---|---|---|
| addScaningVideo() | None | None | Add the video scanning feature. | 
| metadataOutput(_:didOutput:from:) | output: AVCaptureMetadataOutput, metadataObjects: [AVMetadataObject], connection: AVCaptureConnection | None | Process the scanned metadata. | 
Example
typealias CallBack = (_ code : String? ) -> ()
class QRScanViewController: UIViewController {
    let session = AVCaptureSession()
    var callBack:CallBack?
    override func viewDidLoad() {
        self.addScaningVideo()
    }
    private func addScaningVideo(){
        guard let device = AVCaptureDevice.default(for: .video) else { return }
        guard let deviceInput = try? AVCaptureDeviceInput(device: device) else { return }
        let metadataOutput = AVCaptureMetadataOutput()
        metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
        if session.canAddInput(deviceInput) {
            session.addInput(deviceInput)
        }
        if session.canAddOutput(metadataOutput) {
            session.addOutput(metadataOutput)
        }
        metadataOutput.metadataObjectTypes = [.qr, .code128, .code39, .code93, .code39Mod43, .ean8, .ean13, .upce, .pdf417, .aztec]
        let previewLayer: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: session)
        previewLayer.videoGravity = .resizeAspectFill
        previewLayer.frame = view.bounds
        view.layer.insertSublayer(previewLayer, at: 0)
        session.startRunning()
    }
}
extension QRScanViewController: AVCaptureMetadataOutputObjectsDelegate {
    func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
        AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
        session.stopRunning()
        for result in metadataObjects {
            if let code = result as? AVMetadataMachineReadableCodeObject {
                self.callBack?(code.stringValue ?? "")
            }
        }
        self.navigationController?.popViewController(animated: true)
    }
}
IActivatorListener to listen for pairing resultParameters
| Parameter | Type | Required | Description | 
|---|---|---|---|
| deviceModel | IActivatedDevice? | Yes | If the operation is successful, it indicates the information about the activated device. Otherwise, it is nil. | 
| params | ActivatorParams? | Yes | The parameters of actions. | 
Callbacks
| Function name | Parameter | Description | 
|---|---|---|
| onSuccess | deviceModel: IActivatedDevice? , params: ActivatorParams? | The success callback, returning the information about the activated device. | 
| onError | error: Error, params: ActivatorParams? | The failure callback, returning an error message. | 
Example
private func start() {
    pair.listener = self
}
extension ViewController: IActivatorListener {
    func onSuccess(deviceModel: IActivatedDevice?, params: ActivatorParams?) {
        SVProgressHUD.dismiss()
        self.navigationController?.popToRootViewController(animated: true)
    }
    func onError(error: Error, params: ActivatorParams?) {
        SVProgressHUD.dismiss()
        SVProgressHUD.showInfo(withStatus: error.localizedDescription)
    }
}
This method starts device pairing.
Parameters
| Parameter | Type | Required | Description | 
|---|---|---|---|
| params | ActivatorParams | Yes | The parameters of the pairing action. See the example. | 
Example
// Create QRScanActivatorParams instance.
let params = QRScanActivatorParams(code: "code_from_scan_image", assetId: "assetId", longitude: nil, latitude: nil)
// Start pairing. pair is generated during initialization.
// self.pair = ActivatorService.shared.activator(.QRScan)
pair.startPair(params)
This method stops device pairing.
Example
// Stop pairing. pair is generated during initialization.
// self.pair = ActivatorService.shared.activator(.QRScan)
pair.stopPair()
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback