Как избежать 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 - какой-нибудь пример кода?

Очевидно, что если вы не аннулируете объект сеанса, он не всегда освобождает ресурс. У меня не было проблемы в течение нескольких месяцев, а потом, несколько дней назад, она начала делать это все время. Это, кажется, исправило это.

Дайте нам знать, если это работает для вас; было бы хорошо иметь более одной точки данных.

Другие вопросы по тегам