.stringValue
, полученный в результате сканирования AVMetadataObject
, это просто "строковое значение". Вы должны разобрать содержимое.
Существует несколько предопределенных типов данных, таких как
- URL, где строка начинается с "https://";
- ссылка на электронную почту, например, "MAILTO: somebody@example.com Заголовок = Почта% 20from% 20Our% 20Site"
Существует также спецификация "VCard", которая может быть отформатирована со значениями "field":
BEGIN:VCARD
VERSION:3.0
N:Owen;Sean;;;
FN:Sean Owen
TITLE:Software Engineer
EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=PREF:srowen@google.com
URL;TYPE=Homepage:https://example.com
END:VCARD
например.
Итак, вы проверяете начало строки. Если оно начинается с «https://", ваше приложение может запустить Safari. Если оно начинается с« mailto: », вы можете запустить почтовое приложение. Если оно начинается с« BEGIN: VCARD », то вы должны проанализировать предопределенные поля и использовать данные. в вашем приложении.
Здесь есть хорошее резюме предопределенных типов (хотя, оно может быть немного устаревшим): https://github.com/zxing/zxing/wiki/Barcode-Contents
Конечно, вы можете создавать свои собственные типы для своих собственных целей. Например, вы можете создать QR-код, который содержит:
myTypeA:Robert
или
myTypeB:Driver
тогда ваше приложение получит строку, выполнит одно действие, если оно начинается с myTypeA:
, и другое действие, если оно начинается с myTypeB:
.