Я не человек из Objective-C.Но я пытаюсь заставить CoreNFC работать с Qt.Пока я могу улучшить пользовательский интерфейс сеанса, отсканировать тег, но получаю ошибку стека.
Вот что я сделал.
- Позаботьтесь о правах приложений и тому подобном.
Для моего делегата QIOSApplication это было
@ interface QIOSApplicationDelegate: UIResponder
изменено на:
@interface QIOSApplicationDelegate : UIResponder <UIApplicationDelegate, NFCNDEFReaderSessionDelegate>
Добавить к делегату:
@ свойство (сильное, неатомное) NFCNDEFReaderSession * nfcSession;
Четыре.В качестве теста в didFinishLaunchingWithOptions добавьте:
if (![NFCNDEFReaderSession readingAvailable]) {
qDebug() << "NFC not available";
} else {
qDebug() << "NFC available";
_nfcSession = [[NFCNDEFReaderSession alloc] initWithDelegate:self queue:nil invalidateAfterFirstRead:NO];
[_nfcSession beginSession];
}
Five.Добавьте к делегату приложения следующие функции:
- (void)readerSession:(NFCNDEFReaderSession *)session didDetectNDEFs:( NSArray<NFCNDEFMessage *> *)messages {
qDebug() << "NFCNDEFReaderSession didDetectNDEFs" << messages;
NSLog(@"NFCNDEFReaderSession didDetectNDEFs: %@",messages);
for (NFCNDEFMessage *message in messages) {
qDebug() << message;
for (NFCNDEFPayload *payload in message.records) {
qDebug() << payload;
}
}
}
- (void)readerSession:(NFCNDEFReaderSession *)session
didInvalidateWithError:( NSError *)error {
NSLog(@"Something went wrong: %@",error);
}
Запустить приложение, представить тег на телефон (вдоль вверху). Телефон показывает, что он прочитал тег, хотя со звуком и вибрацией.
Семь.Я получаю «Ошибка стека» после разделения телефона и метки.Функция ошибки никогда не вызывается.
2018-10-04 17:36:09.291926-0400 testnfc[532:51484] [CoreNFC] 00000002 838b2f80 -[NFCNDEFReaderSession _connectTag:error:]:418 Error Domain=NFCError Code=100 "Stack Error" UserInfo={NSLocalizedDescription=Stack Error, NSUnderlyingError=0x2818a2970 {Error Domain=nfcd Code=15 "Stack Error" UserInfo={NSLocalizedDescription=Stack Error}}}