如何避免 NFCError Code=203 "Session is invalidated due to system resource is unavailable"?

How to avoid NFCError Code=203 "Session is invalidated due to system resource is unavailable"?

当我尝试启动 CoreNFC 会话时,它首先有效,但在几次之后,我收到一条错误消息:

Error Domain=NFCError Code=203 "Session is invalidated due to system resource is unavailable"

在我重新启动 iPhone 之前,无法再读取 NFC 标签。

为什么会出现这个错误?我能做些什么来避免它?

阅读完 NDEF 后尝试添加此行:

[会话无效会话];

或 Swift:

session.invalidate()

Boris 的回答中提到了这个提示:

显然,如果您不使会话对象无效,它并不总是释放资源。我几个月都没有遇到问题,然后几天前突然开始一直这样。这似乎已经解决了。

让我们知道它是否适合您;最好有一个以上的数据点。

我找到了问题的解决方案:

这是怎么回事?当我通过倒置 iPhone 来启动 NFC reader 会话时,当应用程序处于非活动状态时,也会传送 UIDeviceOrientationDidChangeNotification。发生这种情况时,iOS 无法启动 NFC 读取会话,它可能会记录问题并且在 iPhone 重新启动之前甚至不会在以后尝试。

解决方案:在开始 NFC reader 会话之前,我确保该应用程序处于活动状态:

[[UIApplication sharedApplication] applicationState] == UIApplicationStateActive