как получить код icManufacturer NF C в iOS - PullRequest
1 голос
/ 22 января 2020

Использование CoreNF C Я хочу прочитать icMenufecturerCode NF C Tag. Согласно документации Apple, NFCISO15693Tag имеет свойство icManufacturerCode, которое может быть прочитано как:

func readerSession(_ session: NFCReaderSession, didDetect tags: [NFCTag]) {
    for tag in tags {
        let rfidTag = tag as! NFCISO15693Tag
        print("- Is available: \(rfidTag.isAvailable)")
        print("- Type: \(rfidTag.type)")
        print("- IC Manufacturer Code: \(rfidTag.icManufacturerCode)")
        print("- IC Serial Number: \(rfidTag.icSerialNumber)")
        print("- Identifier: \(rfidTag.identifier)")
    }
}

Но я запутываюсь ... это правильный сеанс чтения тегов или есть какой-то другой способ прочитать идентификатор производителя NF C Тег в iOS 11. В iOS 11 у нас есть NFCNDEFReaderSession. Я реализовал код, используя NFCNDEFReaderSessionDelegate, но эти методы не дают никакого способа прочитать icManufacturerCode. Можно ли заменить этот код методами NFCReaderSessionDelegate ?? И какой тип тега будет NFCReaderSession читать?

Я знаю, что это не очень хороший и понятный вопрос, но мое замешательство - это что-то странное. Благодаря.

1 Ответ

1 голос
/ 22 января 2020

Проблема для iOS11 связана с подписью классов и протоколов со стороны Apple (протокол NFCTag стал enum для iOS13, если я не путаю). Тем не менее, вы можете использовать этот код, и он должен работать для всех версий iOS11 +

extension YourViewController: __NFCReaderSessionDelegate {

    func readerSessionDidBecomeActive(_ session: NFCReaderSession) {

    }

    func readerSession(_ session: NFCReaderSession, didInvalidateWithError error: Error) {

    }

    func readerSession(_ session: NFCReaderSession, didDetect tags: [__NFCTag]) {
        for tag in tags {
            let rfidTag = tag as! NFCISO15693Tag
            print("- Is available: \(rfidTag.isAvailable)")
            print("- Type: \(rfidTag.type)")
            print("- IC Manufacturer Code: \(rfidTag.icManufacturerCode)")
            print("- IC Serial Number: \(rfidTag.icSerialNumber)")
            print("- Identifier: \(rfidTag.identifier)")
        }
    }
}

Существует 2 обязательных метода и один необязательный (он из Obj- C), просто для получения icManufacturerCode.

В соответствии с документацией Apple

используйте экземпляр NFCNDEFReaderSession или NFCTagReaderSession. Одновременно в системе может быть активен только один сеанс чтения любого типа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...