Как использовать CoreNFC с ApplicationDelegate для Qt? - PullRequest
0 голосов
/ 05 октября 2018

Я не человек из Objective-C.Но я пытаюсь заставить CoreNFC работать с Qt.Пока я могу улучшить пользовательский интерфейс сеанса, отсканировать тег, но получаю ошибку стека.

Вот что я сделал.

  1. Позаботьтесь о правах приложений и тому подобном.
  2. Для моего делегата 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}}}

1 Ответ

0 голосов
/ 26 ноября 2018

У меня была такая же проблема.

После получения данных я просто invalidate сеанс.

...