В журнале сбоев показано:
Код: Выделить всё
Exception Type: EXC_CRASH (SIGKILL)
Termination Reason: RUNNINGBOARD 0xdead10cc
Мы используем тихие push-уведомления (
Код: Выделить всё
content-available = 1При получении тихого push-уведомления мы:
• Анализируем полезную нагрузку
• Обновляем базу данных SQLite (sqlite-net / SQLCipher)
• Завершаем работу в фоновой задаче ниже: UIApplication.SharedApplication.BeginBackgroundTask
Код: Выделить всё
UIApplication.SharedApplication.EndBackgroundTaskЧто я обнаружил в ходе исследования
Из технических заметок Apple и многочисленных отчетов разработчиков 0xdead10cc указывает на то, что ОС завершает работу приложения, если она все еще удерживает блокировку файла или SQLite, когда приложение приостановлено. (Блог Iconfactory)
Некоторые разработчики также наблюдали, что это происходит, когда фоновые задачи завершаются некорректно или дескрипторы базы данных/файла остаются открытыми во время приостановки. (Блог Iconfactory)
Кроме того, совместное использование баз данных SQLite или доступ к ним в приложениях и расширениях может повысить вероятность прекращения работы, если дескрипторы файлов остаются открытыми во время приостановки. (Несущественно)
Вопросы
- Что потенциально может быть причиной завершения завершения RUNNINGBOARD 0xdead10cc на iOS?
- Достаточно ли UIApplication.BeginBackgroundTask при обработке бесшумного нажатия + записи SQLite или существует рекомендуемый шаблон на iOS/ .NET MAUI?
- Может ли это завершение произойти, даже если EndBackgroundTask вызывается правильно?
- Есть ли доступ к базе данных только для чтения из расширения службы уведомлений, который все еще рискует вызвать это?
- Существуют ли рекомендуемые стратегии для обеспечения полного закрытия/очистки SQLite перед приостановкой?
Подробнее здесь: https://stackoverflow.com/questions/798 ... 10cc-exc-c
Мобильная версия