Как найти тип содержимого qr-кода в ios в swift? - PullRequest
0 голосов
/ 09 мая 2019

Я разрабатываю приложение для iOS, где сканирую QRCode и показываю результат пользователю. Я сканирую QRCode родными библиотеками, предоставленными Apple . Я могу получить строку / содержимое из QRCode, но не могу различить и проанализировать строку / содержимое. Я хочу получить тип данных (различаемый тип данных), представленный в QRCode, так как он может иметь разные типы данных, например url, text, mcard, email data. Я также хочу проанализировать содержимое, то есть получить поля данных, например, в случае данных электронной почты, я хочу получить поля электронной почты, копии, темы и тела. Этот вопрос Как различаются разные типы контента в QR-кодах? не помогло, потому что нет принятого ответа, который может мне помочь.

1 Ответ

1 голос
/ 09 мая 2019

.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:.

...