Приложение для iOS падает при выходе из бэкграунда

Добрый день.

В приложении для iOS реализована подпись файлов в формате PKCS7 с использованием Рутокен ЭЦП Bluetooth и функции C_EX_PKCS7Sign.  Если в процессе формирования подписи перевести приложение в бэкграунд, то при возврате оно либо падает, либо зависает со 100 процентной загрузкой процессора.

Вот сообщения из лога при входе и выходе из бэкграунда (приложение упало):

2016-01-21 11:02:00.420 Stroytorgi[1372:799747] /BuildRoot/Library/Caches/com.apple.xbs/Sources/ExternalAccessory/ExternalAccessory-329.10.2/EAAccessoryManager.m:__51-[EAAccessoryManager _checkForConnectedAccessories]_block_invoke-632 ending background task

2016-01-21 11:02:04.416 Stroytorgi[1372:799778] ERROR - /BuildRoot/Library/Caches/com.apple.xbs/Sources/ExternalAccessory/ExternalAccessory-329.10.2/EAOutputStream.m:-[EAOutputStream write:maxLength:] - 267 failed to write 57 bytes (wrote -1) with error 32

Как можно избежать этой ошибки?

Re: Приложение для iOS падает при выходе из бэкграунда

Спасибо за вопрос.
Подумаем.

Re: Приложение для iOS падает при выходе из бэкграунда

Без исходного кода приложения мы можем посоветовать следующее:
Пути решения проблемы:
1) Не работать в фоновом режиме. Для этого необходимо в info.plist приложения добавить ключ "Application does not run in background" со значением "YES". Именно так сделано в нашем приложении демобанк. (https://github.com/AktivCo/rutoken-demobank-ios)
Минусы - если пользователь случайно свернет приложение, оно закроется и все надо будет начинать сначала (по крайней мере операции с токеном)
Плюсы - мы следуем советам Apple не работать в фоновом режиме, особенно с bluetooth, особенно если он не LE. Ну и если уж пользователь закрыл приложение - вероятно ему надоело ждать слишком уж долгой операции, а значит результат его не очень волнует. Можно на экран ожидания добавить предупреждение о том, что при сворачивание приложение все прервется.
2) Убедится, что работа в фоновом режиме осуществляется правильно( ключ из пункта 1 установлен в NO, ключ "Required Background Modes" содержит элемент "App communicates with an accessory". Это минимум, тем более надо учитывать, что в фоновом режиме система все равно может принудительно "убить" приложение и в таком случае ничего не поможет.

Re: Приложение для iOS падает при выходе из бэкграунда

Спасибо за помощь!
Помог элемент  "App communicates with an accessory" в ключе "Required Background Modes". По-крайне мере теперь получилось корректно прервать операцию подписи и выдать пользователю соответствующее сообщение.
Я и сам копал в этом же направлении, но  только пытался добавлять элемент "App comunicates using CoreBluetooth", что не помогало.
А отказываться от фонового режима не хочется, так как приложение может работать и с контейнерами КриптоПро, и в этом случае фоновый режим не мешает.