如何在Qt的ApplicationDelegate中使用CoreNFC?

时间:2018-10-05 12:33:36

标签: ios objective-c qt nfc

我不是Objective-C人员。但是我正在尝试让CoreNFC与Qt一起使用。到目前为止,我可以进入会话UI,扫描标签,但是出现堆栈错误。

这就是我所做的。

  1. 照顾应用程序的权利等。
  2. 对于我的QIOSApplication Delegate,是

    @interface QIOSApplicationDelegate:UIResponder

更改为:

@interface QIOSApplicationDelegate : UIResponder <UIApplicationDelegate, NFCNDEFReaderSessionDelegate>
  1. 添加到代理:

    @属性(强原子)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];
}

五个。将以下功能添加到应用程序委托中:

- (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);
}
  1. 启动应用程序,向手机展示标签(沿着顶部显示)。手机会显示它虽然发出声音并振动,但仍读取了标签。

七。分开电话和标签后,出现“堆栈错误” 。错误函数永远不会被调用。

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 :(得分:0)

我有同样的问题。

接收数据后,我只是invalidate会话。