我不是 Objective-C 的人。但我正试图让 CoreNFC 与 Qt 一起工作。到目前为止,我可以打开 session UI,扫描标签,但出现堆栈错误。
这是我所做的。
- 处理应用授权等事宜。
对于我的 QIOSApplication Delegate,它是
@interface QIOSApplicationDelegate : UIResponder
改为:
@interface QIOSApplicationDelegate : UIResponder <UIApplicationDelegate, NFCNDEFReaderSessionDelegate>
添加到代理:
@property (strong, nonatomic) 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];
}
五个。将以下功能添加到应用委托(delegate):
- (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}}}
最佳答案
我遇到了同样的问题。
收到数据后,我只是使
session 无效。
关于ios - 如何将 CoreNFC 与 ApplicationDelegate 一起用于 Qt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52665743/