Нет - механизмы распознавания для AVCaptureMetadataOutput
находятся в системном программном или аппаратном обеспечении, и Apple не предоставляет API для подключения собственного механизма для новых типов объектов.
Вы правы, что можно создать значение типа AVMetadataObject.ObjectType
, используя инициализатор init(rawValue: String)
и любую произвольную строку. Однако система AVCapture может действовать только на известные ей типы объектов - другие значения типа AVMetadataObject.ObjectType
не имеют смысла для API, использующего этот тип. (Я не уверен, будут ли неизвестные значения ObjectType
игнорироваться таким API или возникнет ошибка, но это легко проверить ...)
Другими словами, вызов AVMetadataObject.ObjectType(rawValue: "someNewBarcodeStandard")
не учит AVCapture распознавать штрих-код такого типа, как AVMetadataObject.ObjectType(rawValue: "?")
учит распознавать рыбу.
Кстати, вывод типа Swift означает, что вам не нужно выписывать каждое имя типа / константы с длинной рукой:
let supportedCodeTypes: [AVMetadataObject.ObjectType] = [.upce, .code39,
.code39Mod43, .code93,
.code128, .ean8,
.ean13, .aztec,
.pdf417, .itf14,
.dataMatrix, .interleaved2of5,
.qr]