Считать UID из NFC mifare тега iOS 13 - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь прочитать UID для тега mifare.

Глядя на примеры, я часто вижу следующий метод:

func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {      
  if case let NFCTag.miFare(tag) = tags.first! {
    print(tag.identifier as NSData)
  }
}

Однако, когда помещаю это в мой проектметод не вызывается.

Я также заметил, что xCode предупреждает, что он почти совпадает с дополнительным протоколом, который такой же, за исключением того, что он использует NFCNDEFTag вместо NFCTag ..

Когда я пытаюсь обновить его, этот метод вызывается. Но потом у меня возникают проблемы при попытке определить тег как mifare внутри этого метода. Я получаю сообщение об ошибке «Шаблон не может соответствовать значениям типа« NFCNDEFTag ».

Код ниже:

    @available(iOS 13.0, *)
    func readerSession(_ session: NFCNDEFReaderSession, didDetect tags: [NFCNDEFTag]) {
        print("in did detect tags")

        let tag = tags.first!

        session.connect(to: tag) { (error: Error?) in


            session.connect(to: tag) { (error: Error?) in
                   if case let .mifare(mifareTag) = tag {
                       // can access tag identifier here?

                    }
            }
        }
    }

1 Ответ

0 голосов
/ 12 октября 2019

Ваш сеанс, который вы инициализируете, должен быть NFCTagReaderSession https://developer.apple.com/documentation/corenfc/nfctagreadersession

И вы должны соответствовать NFCTagReaderSessionDelegate https://developer.apple.com/documentation/corenfc/nfctagreadersessiondelegate?language=objc

...