Как избежать NFCError Code=203 "Сеанс недействителен из-за недоступности системного ресурса"?
Когда я пытаюсь запустить сеанс CoreNFC, он сначала работает, но затем, через несколько раз, я получаю сообщение об ошибке:
Ошибка домена =NFCError Code=203 "Сессия недействительна из-за недоступности системного ресурса"
Чтение тегов NFC больше невозможно, пока я не перезагружу свой iPhone.
Почему возникает эта ошибка? Что я могу сделать, чтобы избежать этого?
2 ответа
Я нашел решение проблемы:
Что происходит? Когда я инициирую сеанс чтения NFC, держа iPhone вверх ногами, UIDeviceOrientationDidChangeNotification доставляется также, когда приложение неактивно. Когда это происходит, iOS не может начать сеанс чтения NFC и, вероятно, записывает проблему и даже не пытается в будущем, пока iPhone не будет перезагружен.
Решение: перед тем, как начать сеанс чтения NFC, я должен убедиться, что приложение активно:
[[UIApplication sharedApplication] applicationState] == UIApplicationStateActive
Попробуйте добавить эту строку после прочтения NDEF:
[сессия invalidateSession];
или в Swift:
session.invalidate ()
Этот совет упоминается в ответе Бориса на: iOS 11 Core NFC - какой-нибудь пример кода?
Очевидно, что если вы не аннулируете объект сеанса, он не всегда освобождает ресурс. У меня не было проблемы в течение нескольких месяцев, а потом, несколько дней назад, она начала делать это все время. Это, кажется, исправило это.
Дайте нам знать, если это работает для вас; было бы хорошо иметь более одной точки данных.